Begining on page 37 of The OMG UML 2.0 Superstructure Specification, Sect 7.3.1 (speaking on
associations) says:
Attributes
• isDerived : Boolean Specifies whether the association is derived from other model elements such as other associations or constraints. The default value is false.
Associations
• memberEnd : Property [2..*] Each end represents participation of instances of the classifier connected to the end in links of the association. This is an ordered association. Subsets Namespace::member.
Issue 6243 - add new information about navigable ends
• ownedEnd : Property [*] The ends that are owned by the association itself. This is an ordered association. Subsets Association::memberEnd, Classifier::feature, and Namespace::ownedMember.
• navigableOwnedEnd : Property [*] The navigable ends that are owned by the association itself. Subsets Association::ownedEnd.
• / endType: Type [1..*] References the classifiers that are used as types of the ends of the association.
Constraints
[1] An association specializing another association has the same number of ends as the other association.
self.parents()->forAll(p | p.memberEnd.size() = self.memberEnd.size())
[2] When an association specializes another association, every end of the specific association corresponds to an end of the general association, and the specific end reaches the same type or a subtype of the more general end.
[3] endType is derived from the types of the member ends.
self.endType = self.memberEnd->collect(e | e.type)
I believe I'm trying to do [2] above, but I'n not sure; the specification language is very obscure to me.
Where I'm going with all of this is the development of an abstract composite class, lets say
Vehicle (whose parts and associations are also abstract and not
owned by the composite), which is then specalized in several ways into more concrete classes (e.g.;
Cars,
Boats,
Airplanes), all the while keeping
myPowerSource (e.g.;myEngine or myRubberBand) connected to my PowerTransmitter (e.g.;myWheels or myPropeller) and not connected to
yourPowerTransmitter. Therefore, I may need to derive the entire association, other times just an end of the association. If I understand the OMG UML spec correctly, both are possible.
I will also need to apply
property strings to
subset,
redefine and specify a
union at the association ends. This is the genisis of this thread.
In addition, the PowerSource and PowerTransmitter
parts are
Interfaces to
parts which are wired in at execution time via the Spring Framework. Since Interfaces are inheritable, I can speculate a need to specalize them also, but I havn't gotten to that in EA yet and I'm not sure the UML spec allows it. I'll be back on that question later...I'm still learning all of this stuff.
I appreciate the interest you all have taken in this effort. I don't know how I got promoted to
Junior member status, I still feel like a
Newbie. I've worked with OO Concepts before, but I'm new to UML and I'm still trying to find out where to go to accomplish things in EA. I guess EA is intuatively easy to UML gurus, but it is obscure to those who aren't. You guys are awsome in your knowledge.