[ImageJ-devel] proposed changes in the ImgLib2 abstract class hierarchy
Stephan Saalfeld
saalfeld at mpi-cbg.de
Wed Mar 14 09:32:45 CDT 2012
Thank you Tobias! That is much better.
Stephan
On Tue, 2012-03-13 at 17:19 -0400, Stephan Preibisch wrote:
> I agree, makes sense!
>
> On Mar 13, 2012, at 17:00 , Lee Kamentsky wrote:
>
> > That's a lot nicer. It makes it much easier to pull the abstract implementations into everything.
> >
> > On 3/13/2012 4:01 PM, Tobias Pietzsch wrote:
> >> Hi guys,
> >>
> >> while I was writing ImgLib docs, I noticed that the current
> >> abstract class hierarchy which leads to AbstractRandomAccess<T>
> >> is a little bit stupid (see attached imglib2-abstract-current.png)
> >>
> >> There is no need for the abstract class hierarchy to pull the
> >> Sampler<T> interface all the way through. The Sampler<T> is only
> >> implemented in the concrete classes. There is really no need to have
> >> the dependency on T in the abstract hierarchy. This prevents for
> >> instance RealPoint to make use of the RealPositionable and
> >> RealLocalizable implementations in AbstractRealRandomAccess<T>.
> >>
> >> Therefore I propose to change the hierarchy as shown in the
> >> second attached diagram, imglib2-abstract-proposed.png.
> >>
> >> I implemented those changes for the "real" path, see branch
> >> "modified-abstract-hierarchy". Note how nicely RealPoint fits
> >> into the picture now :-)
> >> Before I go ahead and do the same for the integer accessors, I wanted
> >> to ask whether you agree that this is a good thing to do...
> >>
> >> There is one more thing: The AbstractRealRandomAccess implemented
> >> the complete RealPositionable interface, while AbstractRandomAccess
> >> only implements part of Positionable - with the implemented part
> >> based on the unimplemented methods. The idea was that if a derived
> >> concrete accessor compiles you know you implemented what was necessary.
> >>
> >> However, I found the approach of AbstractRealRandomAccess to implement
> >> anything quite nice when using it. I would suggest doing the same for
> >> integer. Then either
> >> * you know what you are doing when overriding (parts of) the
> >> Positionable implementation
> >> * you leave it as is (e.g. Point)
> >> * you derive from AbstractLocalizable and implement Positionable
> >> completely on your own.
> >>
> >> Thoughts?
> >>
> >> best regards,
> >> Tobias
> >
>
More information about the ImageJ-devel
mailing list