Software Disclaimer

Class UML 2.3::Class

Description:

Class has derived association that indicates how it may be extended through one or more stereotypes. Stereotype is the only kind of metaclass that cannot be extended by stereotypes.

Direct Superclasses: EncapsulatedClassifier, BehavioredClassifier

Direct Subclasses: Class <<Block>>, Stereotype, Node, Component, Behavior, AssociationClass

Class Precedence List: Class, EncapsulatedClassifier, StructuredClassifier, BehavioredClassifier, Classifier, TemplateableElement, Type, PackageableElement, ParameterableElement, Namespace, RedefinableElement, NamedElement, Element

Properties:

extension : Extension (0 *); -- source Class
isAbstract : Boolean (1 1); -- source Class
isActive : Boolean (1 1); -- source Class
nestedClassifier : Classifier (0 *); -- source Class

References all the Classifiers that are defined (nested) within the Class.
{composite, ordered}
Subsets: Namespace.ownedMember

ownedAttribute : Property (0 *); -- source Class
ownedOperation : Operation (0 *); -- source Class
ownedReception : Reception (0 *); -- source Class
superClass : Class (0 *); -- source Class
ownedPort : Port (0 *); -- source EncapsulatedClassifier
ownedConnector : Connector (0 *); -- source StructuredClassifier
part : Property (0 *); -- source StructuredClassifier
role : ConnectableElement (0 *); -- source StructuredClassifier
classifierBehavior : Behavior (0 1); -- source BehavioredClassifier
interfaceRealization : InterfaceRealization (0 *); -- source BehavioredClassifier
ownedBehavior : Behavior (0 *); -- source BehavioredClassifier
ownedTrigger : Trigger (0 *); -- source BehavioredClassifier
attribute : Property (0 *); -- source Classifier
collaborationUse : CollaborationUse (0 *); -- source Classifier
feature : Feature (0 *); -- source Classifier
generalization : Generalization (0 *); -- source Classifier
inheritedMember : NamedElement (0 *); -- source Classifier
isFinalSpecialization : Boolean (1 1); -- source Classifier
ownedTemplateSignature : RedefinableTemplateSignature (0 1); -- source Classifier
ownedUseCase : UseCase (0 *); -- source Classifier
powertypeExtent : GeneralizationSet (0 *); -- source Classifier
redefinedClassifier : Classifier (0 *); -- source Classifier
representation : CollaborationUse (0 1); -- source Classifier
substitution : Substitution (0 *); -- source Classifier
templateParameter : ClassifierTemplateParameter (0 1); -- source Classifier
useCase : UseCase (0 *); -- source Classifier
templateBinding : TemplateBinding (0 *); -- source TemplateableElement
package : Package (0 1); -- source Type
visibility : VisibilityKind (1 1); -- source PackageableElement

Indicates that packageable elements must always have a visibility, i.e., visibility is not optional.
Redefines: NamedElement.visibility
Default value: PUBLIC

owningTemplateParameter : TemplateParameter (0 1); -- source ParameterableElement
elementImport : ElementImport (0 *); -- source Namespace

References the ElementImports owned by the Namespace.
{composite}
Subsets: Element.ownedElement
Opposite: ElementImport.importingNamespace

importedMember : PackageableElement (0 *); -- source Namespace
member : NamedElement (0 *); -- source Namespace
ownedMember : NamedElement (0 *); -- source Namespace
ownedRule : Constraint (0 *); -- source Namespace
packageImport : PackageImport (0 *); -- source Namespace
isLeaf : Boolean (1 1); -- source RedefinableElement
redefinedElement : RedefinableElement (0 *); -- source RedefinableElement
redefinitionContext : Classifier (0 *); -- source RedefinableElement
clientDependency : Dependency (0 *); -- source NamedElement
name : String (0 1); -- source NamedElement
nameExpression : StringExpression (0 1); -- source NamedElement
namespace : Namespace (0 1); -- source NamedElement
qualifiedName : String (0 1); -- source NamedElement
ownedComment : Comment (0 *); -- source Element
ownedElement : Element (0 *); -- source Element
owner : Element (0 1); -- source Element

Constraints:

Signature: CMOF_14_3_18() : Boolean;
Description: 14.3 [18] Class must not be active see also: https://sites.google.com/site/metamodelingantipatterns/catalog/mof/class-is-active
Expression: not isActive

Signature: CMOF_14_3_15() : Boolean;
Description: 14.3 [15] Only one member attribute of a Class may have isId=true. see also: https://sites.google.com/site/metamodelingantipatterns/catalog/mof/class-has-more-than-one-id
Expression: self->closure(general)->union(self)->attribute->asSet()->select(p:Property | p.isID)->size() < 2

Signature: CMOF_14_3_10a() : Boolean;
Description: 14.3 [10] The following properties must be empty Class::nestedClassifier Property::qualifier see also: https://sites.google.com/site/metamodelingantipatterns/catalog/mof/class-has-nested-classifier
Expression: nestedClassifier->isEmpty()

Signature: passive_class() : Boolean;
Description: A passive class may not own receptions.
Expression: not self.isActive implies self.ownedReception.isEmpty()

Operations:

Signature: inherit(inhs : NamedElement; ) : NamedElement;
Description: The inherit operation is overridden to exclude redefined properties.
The OCL used here is not normative.
Editor's notes: reject not excluding
Expression: result = inhs->reject(inh | ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh)))
Original: result = inhs->excluding(inh | ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh)))



Send questions or comments to xmi-interop@omg.org.