Issue 13882: Only abstract classes should be able to have abstract behavioral features (fuml-ftf) Source: Model Driven Solutions (Mr. Ed Seidewitz, ed-s(at)modeldriven.com) Nature: Uncategorized Issue Severity: Summary: Specification: Semantics of a Foundational Subset for Executable UML Models Subclause: 7.2.2.2.3 Class The UML superstructure does not restrict abstract behavioral features to only be members of abstract classes. However, trying to invoke an abstract operation on an object instantiated from a non abstract will result in an execution error. Therefore, fUML should add a constraint on Class that none of its behavioral features are abstract unless the class is abstract. That is: self.members->select(oclIsKindOf(BehavioralFeature))->exists(isAbstract) implies self.isAbstract Resolution: Add the constraint as proposed Revised Text: In Subclause 7.2.2.2.3, add the constraint: [2] abstract_class Only an abstract class may have abstract behavioral features. self.members->select(oclIsKindOf(BehavioralFeature))->exists(isAbstract) implies self.isAbstract Actions taken: April 23, 2009: received issue July 23, 2010: closed issue Discussion: End of Annotations:===== ubject: Only abstract classes should be able to have abstract behavioral features Date: Thu, 23 Apr 2009 17:08:23 -0400 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Only abstract classes should be able to have abstract behavioral features Thread-Index: AcnEV6ML2U91sVKPTMewhdnpUhsOTQ== From: "Ed Seidewitz" To: Specification: Semantics of a Foundational Subset for Executable UML Models Subclause: 7.2.2.2.3 Class The UML superstructure does not restrict abstract behavioral features to only be members of abstract classes. However, trying to invoke an abstract operation on an object instantiated from a non abstract will result in an execution error. Therefore, fUML should add a constraint on Class that none of its behavioral features are abstract unless the class is abstract. That is: self.members->select(oclIsKindOf(BehavioralFeature))->exists(isAbstract) implies self.isAbstract