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: ClassDirect Subclasses: Class Precedence List: Component,
Class,
EncapsulatedClassifier,
StructuredClassifier,
BehavioredClassifier,
Classifier,
TemplateableElement,
Type,
PackageableElement,
ParameterableElement,
Namespace,
RedefinableElement,
NamedElement,
ElementProperties:
![](/se-interop/image/down-arrow.png)
isIndirectlyInstantiated : Boolean (1 1); -- source
Component![](/se-interop/image/down-arrow.png)
packagedElement :
PackageableElement (0 *); -- source
Component![](/se-interop/image/down-arrow.png)
provided :
Interface (0 *); -- source
Component![](/se-interop/image/right-arrow.png)
realization :
ComponentRealization (0 *); -- source
Component The set of Realizations owned by the Component. Realizations reference
the Classifiers of which the Component is an abstraction; i.e., that realize
its behavior.
{
composite}
Subsets: Element.ownedElement
Opposite: ComponentRealization.abstraction
![](/se-interop/image/down-arrow.png)
required :
Interface (0 *); -- source
Component![](/se-interop/image/down-arrow.png)
extension :
Extension (0 *); -- source
Class![](/se-interop/image/down-arrow.png)
isAbstract : Boolean (1 1); -- source
Class![](/se-interop/image/down-arrow.png)
isActive : Boolean (1 1); -- source
Class![](/se-interop/image/down-arrow.png)
nestedClassifier :
Classifier (0 *); -- source
Class![](/se-interop/image/down-arrow.png)
ownedAttribute :
Property (0 *); -- source
Class![](/se-interop/image/down-arrow.png)
ownedOperation :
Operation (0 *); -- source
Class![](/se-interop/image/right-arrow.png)
ownedReception :
Reception (0 *); -- source
Class Receptions that objects of this class are willing to accept.
{
composite}
Subsets: Classifier.feature, Namespace.ownedMember
![](/se-interop/image/down-arrow.png)
superClass :
Class (0 *); -- source
Class![](/se-interop/image/down-arrow.png)
ownedPort :
Port (0 *); -- source
EncapsulatedClassifier![](/se-interop/image/down-arrow.png)
ownedConnector :
Connector (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png)
part :
Property (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png)
role :
ConnectableElement (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png)
classifierBehavior :
Behavior (0 1); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png)
interfaceRealization :
InterfaceRealization (0 *); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png)
ownedBehavior :
Behavior (0 *); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png)
ownedTrigger :
Trigger (0 *); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png)
attribute :
Property (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png)
collaborationUse :
CollaborationUse (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png)
feature :
Feature (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png)
generalization :
Generalization (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png)
inheritedMember :
NamedElement (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png)
isFinalSpecialization : Boolean (1 1); -- source
Classifier![](/se-interop/image/down-arrow.png)
ownedTemplateSignature :
RedefinableTemplateSignature (0 1); -- source
Classifier![](/se-interop/image/right-arrow.png)
ownedUseCase :
UseCase (0 *); -- source
Classifier References the use cases owned by this classifier.
{
composite}
Subsets: Namespace.ownedMember
![](/se-interop/image/right-arrow.png)
powertypeExtent :
GeneralizationSet (0 *); -- source
Classifier Designates the GeneralizationSet of which the associated Classifier is
a power type.
Opposite: GeneralizationSet.powertype
![](/se-interop/image/down-arrow.png)
redefinedClassifier :
Classifier (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png)
representation :
CollaborationUse (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png)
substitution :
Substitution (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png)
templateParameter :
ClassifierTemplateParameter (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png)
useCase :
UseCase (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png)
templateBinding :
TemplateBinding (0 *); -- source
TemplateableElement![](/se-interop/image/down-arrow.png)
package :
Package (0 1); -- source
Type![](/se-interop/image/down-arrow.png)
visibility :
VisibilityKind (1 1); -- source
PackageableElement![](/se-interop/image/down-arrow.png)
owningTemplateParameter :
TemplateParameter (0 1); -- source
ParameterableElement![](/se-interop/image/down-arrow.png)
elementImport :
ElementImport (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png)
importedMember :
PackageableElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png)
member :
NamedElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png)
ownedMember :
NamedElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png)
ownedRule :
Constraint (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png)
packageImport :
PackageImport (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png)
isLeaf : Boolean (1 1); -- source
RedefinableElement![](/se-interop/image/right-arrow.png)
redefinedElement :
RedefinableElement (0 *); -- source
RedefinableElement The redefinable element that is being redefined by this element.
{
readonly}
Derived union with sources: (redefinedClassifier)
![](/se-interop/image/down-arrow.png)
redefinitionContext :
Classifier (0 *); -- source
RedefinableElement![](/se-interop/image/down-arrow.png)
clientDependency :
Dependency (0 *); -- source
NamedElement![](/se-interop/image/down-arrow.png)
name : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png)
nameExpression :
StringExpression (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png)
namespace :
Namespace (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png)
qualifiedName : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png)
ownedComment :
Comment (0 *); -- source
Element![](/se-interop/image/down-arrow.png)
ownedElement :
Element (0 *); -- source
Element![](/se-interop/image/down-arrow.png)
owner :
Element (0 1); -- source
ElementConstraints:
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
[email protected].