[Newbies] comparing to an exact class & storing class association
relationships
Ben Coman
btc at openInWorld.com
Thu Apr 19 06:50:01 UTC 2012
I am trying to record and work with the non-inheritance relationships
between classes. For example I have...
C subclasses B which subclasses A
E subclasses D which subclasses A
A <-- B <-- C
A <-- D <-- E
with an 1 to N association relationship between B & E.
A class >> relations
^ {}
B class >> relations
^ { E -> #addE: }
the executing 'B relations' returns the list. Now in terms of the
model, it is correct that C inherits the relationship to E,
but in terms of drawing the class relationships on screen, there should
be nothing drawn between C & E.
The problem is that executing 'C relations' returns { E -> #addE: } but
I don't want to draw that.
One fix would be a FORCED requirement to define #relations returning ^{}
on EVERY class that does not have its own relations,
but I want to avoid having to do that.
Another fix is doing...
B class >> relations
(self isKindOf: B class)
ifTrue: [ ^ { E-> #addE. } ]
ifFalse: [ ^ {} ]
except #isKindOf includes subclasses. Is there another method that
compares to an EXACT class?
I have also considered storing a classes relationships in a class
instance variable, which I think would work, but it lacks the visibility
that doing it in code has. Also I hit the same issue with with lazy
initialization of that variable per class.
Or... am I approaching this all wrong? Is there another way?
cheers, Ben
More information about the Beginners
mailing list