-
Key: UML14-245
-
Legacy Issue Number: 6191
-
Status: closed
-
Source: Simula Research Laboratory ( Dr. Bran Selic)
-
Summary:
There are cases where the same property goes from derived, to non-derived, and back to derived in different merged classes. Are there any constraints on subclasses redefining non-derived properties to be derived? If not, what would it mean for the subclass to inherit the non-derived property? Secton 5.3 says: "A derived property can redefine one which is not derived. An implementation must ensure that the constraints implied by the derivation are maintained if the property is updated." It doesn't mention the other way around.
A redefinition hides the redefined model element. That is, if a subclass redefines a property, the inherited property is no longer visible. See section 5.3: "Note that a redefined attribute is not inherited into a namespace where it is redefined, so its name can be reused in the featuring classifier, either for the redefining attribute, or alternately for some other attribute."
This does not conflict with the usual ability of OO languages which allow a subclass to specialize its superclasses and overrider methods, but still access the super class through keywords suchs as "super". Such keywords refer to the superclass namespace. However, Java does not allow a subclass to redefine a member variable unless it is private in the superclass. The same property in a superclass can't be private in contexts where it is redefined in some subclasses, and public in other subclasses where it is not redefined.
-
Reported: UML 1.5 — Sun, 7 Sep 2003 04:00 GMT
-
Disposition: Resolved — UML 1.4.2
-
Disposition Summary:
see above
-
Updated: Fri, 6 Mar 2015 20:58 GMT
UML14 — UML 2 Super/Package Merge/redefinition rules and standard OO languages
- Key: UML14-245
- OMG Task Force: UML 1.4 RTF