-
Key: UML22-234
-
Legacy Issue Number: 9831
-
Status: closed
-
Source: Simula Research Laboratory ( Dr. Bran Selic)
-
Summary:
The "isLeaf" attribute of Class implies that there cannot be any subclasses of a class, but there is no corresponding OCL constraint that enforces that.
Also, "isLeaf" is only defined in the Superstructure and not in the Infrastructure – should it be defined in the Infrastructure as well?
-
Reported: UML 2.0 — Tue, 20 Jun 2006 04:00 GMT
-
Disposition: Resolved — UML 2.2
-
Disposition Summary:
The meaning of the 'isLeaf' attribute changed from UML 1.x to UML 2.x
In UML 1.5 (formal/03-03-01), 'isLeaf' is a property defined in two contexts:- In GeneralizableElement (see 2.5.2.23) where it "specifies whether the GeneralizableElement is a GeneralizableElement with no descendents. True indicates that it may not have descendents, false indicates that it may have descendents (whether or not it actuallyhas any descendents at the moment)"
The fact that the UML 1.5 concept of a leaf in a generalization hierarchy has no equivalent in UML 2.2 has been raised as a separate issue from this - see issue 10515. - In Operation (2.5.2.30) where "if true, then the implementation of the operation may not be overriden by a descendant class. If false, then the implementation of the operation may be overridden by a descendant class (but it need not be overridden)."
The UML 1.5 concept of a non-overridable operation corresponds to the UML 2.2 of RedefinableElement::isLeaf (see 7.3.46)
The second part of this issue, i.e., whether the UML 2.2 infrastructure (formal/09-02-04) needs a capability for modeling a specialization leaf in a redefinition hierarchy is a strategic issue out of scope for the UML2 RTF.
See resolution to issue 12532 for the OCL constraint enforcing the meaning of isLeaf in the context of redefinitions.
Disposition: Closed No Change
- In GeneralizableElement (see 2.5.2.23) where it "specifies whether the GeneralizableElement is a GeneralizableElement with no descendents. True indicates that it may not have descendents, false indicates that it may have descendents (whether or not it actuallyhas any descendents at the moment)"
-
Updated: Fri, 6 Mar 2015 20:58 GMT