Class UML 2.4.1::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.A component represents a modular part of a system
that encapsulates its contents and whose manifestation is replaceable within
its environment.
Direct Superclasses: ClassDirect Subclasses: Class Precedence List: Component,
Class,
EncapsulatedClassifier,
StructuredClassifier,
BehavioredClassifier,
Classifier,
Namespace,
Type,
PackageableElement,
ParameterableElement,
RedefinableElement,
NamedElement,
TemplateableElement,
ElementProperties:
![](/se-interop/image/right-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
isIndirectlyInstantiated : Boolean (1 1); -- source
ComponentisIndirectlyInstantiated : Boolean {default = true} The kind of instantiation
that applies to a Component. If false, the component is instantiated as
an addressable object. If true, the Component is defined at design-time,
but at run-time (or execution-time) an object specified by the Component
does not exist, that is, the component is instantiated indirectly, through
the instantiation of its realizing classifiers or parts. Several standard
stereotypes use this meta attribute (e.g., specification , focus , subsystem
).
Default value: TRUE
![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
packagedElement :
PackageableElement (0 *); -- source
Component![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
provided :
Interface (0 *); -- source
Component![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
realization :
ComponentRealization (0 *); -- source
Component![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
required :
Interface (0 *); -- source
Component![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
extension :
Extension (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
isAbstract : Boolean (1 1); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
isActive : Boolean (1 1); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
nestedClassifier :
Classifier (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
ownedAttribute :
Property (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
ownedOperation :
Operation (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
ownedReception :
Reception (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
superClass :
Class (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
ownedPort :
Port (0 *); -- source
EncapsulatedClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
ownedConnector :
Connector (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
part :
Property (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
role :
ConnectableElement (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
classifierBehavior :
Behavior (0 1); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
interfaceRealization :
InterfaceRealization (0 *); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
ownedBehavior :
Behavior (0 *); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
attribute :
Property (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
collaborationUse :
CollaborationUse (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
feature :
Feature (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
generalization :
Generalization (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
inheritedMember :
NamedElement (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
isFinalSpecialization : Boolean (1 1); -- source
Classifier![](/se-interop/image/right-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
ownedTemplateSignature :
RedefinableTemplateSignature (0 1); -- source
ClassifierThe optional template signature specifying the formal template parameters.
{
composite}
Subsets: Element.ownedElement
Redefines: TemplateableElement.ownedTemplateSignature
Opposite: RedefinableTemplateSignature.classifier
![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
ownedUseCase :
UseCase (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
powertypeExtent :
GeneralizationSet (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
redefinedClassifier :
Classifier (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
representation :
CollaborationUse (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
substitution :
Substitution (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
templateParameter :
ClassifierTemplateParameter (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
useCase :
UseCase (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
elementImport :
ElementImport (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
importedMember :
PackageableElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
member :
NamedElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
ownedMember :
NamedElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
ownedRule :
Constraint (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
packageImport :
PackageImport (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
package :
Package (0 1); -- source
Type![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
visibility :
VisibilityKind (1 1); -- source
PackageableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
owningTemplateParameter :
TemplateParameter (0 1); -- source
ParameterableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
isLeaf : Boolean (1 1); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
redefinedElement :
RedefinableElement (0 *); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
redefinitionContext :
Classifier (0 *); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
clientDependency :
Dependency (0 *); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
name : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
nameExpression :
StringExpression (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
namespace :
Namespace (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
qualifiedName : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
templateBinding :
TemplateBinding (0 *); -- source
TemplateableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
ownedComment :
Comment (0 *); -- source
Element![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
ownedElement :
Element (0 *); -- source
Element![](/se-interop/image/down-arrow.png?hunchentoot-session=21861%3A6FEC779632F60E712E98DF9CF03E31AA)
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: Missing derivation for Component::/required : Interface
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.
The OCL used here is not normative.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)
Original: result = (classifier.clientDependency-> select(dependency|dependency.oclIsKindOf(Realization) and dependency.supplier.oclIsKindOf(Interface)))-> collect(dependency|dependency.client)
Signature: provided.1() : Interface;
Description: Missing derivation for Component::/provided : Interface
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].