Software Disclaimer

Class UML 2.3::Component

Description:

In the namespace of a component, all model elements that are involved in or related to its definition are either owned or imported explicitly. This may include, for example, use cases and dependencies (e.g. mappings), packages, components, and artifacts.

Direct Superclasses: Class

Direct Subclasses:

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

Properties:

isIndirectlyInstantiated : Boolean (1 1); -- source Component
packagedElement : PackageableElement (0 *); -- source Component

The set of PackageableElements that a Component owns. In the namespace of a component, all model elements that are involved in or related to its definition may be owned or imported explicitly. These may include e.g. Classes, Interfaces, Components, Packages, Use cases, Dependencies (e.g. mappings), and Artifacts.
{composite}
Subsets: Namespace.ownedMember

provided : Interface (0 *); -- source Component
realization : ComponentRealization (0 *); -- source Component
required : Interface (0 *); -- source Component
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

If true, the Classifier cannot be specialized by generalization. Note that this property is preserved through package merge operations; that is, the capability to specialize a Classifier (i.e., isFinalSpecialization =false) must be preserved in the resulting Classifier of a package merge operation where a Classifier with isFinalSpecialization =false is merged with a matching Classifier with isFinalSpecialization =true: the resulting Classifier will have isFinalSpecialization =false.
Default value: FALSE

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
owningTemplateParameter : TemplateParameter (0 1); -- source ParameterableElement
elementImport : ElementImport (0 *); -- source Namespace
importedMember : PackageableElement (0 *); -- source Namespace

References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports.
{readonly, derived}
Subsets: Namespace.member

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: no_packaged_elements() : Boolean;
Description: component nested in a Class cannot have any packaged elements.
Expression: (not self.class->isEmpty()) implies self.packagedElement->isEmpty()

Signature: no_nested_classifiers() : Boolean;
Description: A component cannot nest classifiers.
Expression: self.nestedClassifier->isEmpty()

Operations:

Signature: usedInterfaces(classifier : Classifier; ) : Interface;
Description: Utility returning the set of used interfaces of a component:
The OCL used here is not normative.
Editor's notes: supplierDependency not defined.
Expression: Set{}
Original: result = (classifier.supplierDependency-> select(dependency|dependency.oclIsKindOf(Usage) and dependency.supplier.oclIsKindOf(interface)))-> collect(dependency|dependency.supplier)

Signature: required.1() : Interface;
Description:
The OCL used here is not normative.
Editor's notes: realizedInterfaces() not RealizedInterfaces(), and it is also a variable here. Needs investigation.
Expression: Set{}
Original: result = let usedInterfaces : Set(Interface) = UsedInterfaces(self), realizingClassifiers : Set(Classifier) = Set{self.realizingClassifier}->union(self.allParents().realizingClassifier), allRealizingClassifiers : Set(Classifier) = realizingClassifiers->union(realizingClassifiers.allParents()), realizingClassifierInterfaces : Set(Interface) = allRealizingClassifiers->iterate(c; rci : Set(Interface) = Set{} | rci->union(UsedInterfaces(c))), ports : Set(Port) = self.ownedPort->union(allParents.oclAsType(Set(EncapsulatedClassifier)).ownedPort), usedByPorts : Set(Interface) = ports.required in usedInterfaces->union(realizingClassifierInterfaces) ->union(usedByPorts)->asSet()

Signature: realizedInterfaces(classifier : Classifier; ) : Interface;
Description: Utility returning the set of realized interfaces of a component:
Editor's notes: I removed a open paren here somewhere.
Expression: result = classifier.clientDependency-> select(dependency|dependency.oclIsKindOf(Realization) and dependency.supplier.oclIsKindOf(Interface))-> collect(dependency|dependency.client)

Signature: provided.1() : Interface;
Description:
The OCL used here is not normative.
Editor's notes: realizedInterfaces() not RealizedInterfaces(), and it is also a variable here. Needs investigation.
Expression: Set{}
Original: result = let realizedInterfaces : Set(Interface) = RealizedInterfaces(self) , realizingClassifiers : Set(Classifier) = Set{self.realizingClassifier}->union(self.allParents().realizingClassifier), allRealizingClassifiers : Set(Classifier) = realizingClassifiers->union(realizingClassifiers.allParents()) , realizingClassifierInterfaces : Set(Interface) = allRealizingClassifiers->iterate(c; rci : Set(Interface) = Set{} | rci->union(RealizedInterfaces(c))) , ports : Set(Port) = self.ownedPort->union(allParents.oclAsType(Set(EncapsulatedClassifier)).ownedPort) , providedByPorts : Set(Interface) = ports.provided in realizedInterfaces->union(realizingClassifierInterfaces) ->union(providedByPorts)->asSet()



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