[ImageJ-devel] proposed changes in the ImgLib2 abstract class hierarchy
Stephan Preibisch
preibisch at mpi-cbg.de
Tue Mar 13 16:19:35 CDT 2012
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