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/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
isIndirectlyInstantiated : Boolean (1 1); -- source
Component![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
packagedElement :
PackageableElement (0 *); -- source
Component![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
provided :
Interface (0 *); -- source
Component![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
realization :
ComponentRealization (0 *); -- source
Component![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
required :
Interface (0 *); -- source
Component![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
extension :
Extension (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
isAbstract : Boolean (1 1); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
isActive : Boolean (1 1); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
nestedClassifier :
Classifier (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
ownedAttribute :
Property (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
ownedOperation :
Operation (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
ownedReception :
Reception (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
superClass :
Class (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
ownedPort :
Port (0 *); -- source
EncapsulatedClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
ownedConnector :
Connector (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
part :
Property (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
role :
ConnectableElement (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
classifierBehavior :
Behavior (0 1); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
interfaceRealization :
InterfaceRealization (0 *); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
ownedBehavior :
Behavior (0 *); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
attribute :
Property (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
collaborationUse :
CollaborationUse (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
feature :
Feature (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
generalization :
Generalization (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
inheritedMember :
NamedElement (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
isFinalSpecialization : Boolean (1 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
ownedTemplateSignature :
RedefinableTemplateSignature (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
ownedUseCase :
UseCase (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
powertypeExtent :
GeneralizationSet (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
redefinedClassifier :
Classifier (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
representation :
CollaborationUse (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
substitution :
Substitution (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
templateParameter :
ClassifierTemplateParameter (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
useCase :
UseCase (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
elementImport :
ElementImport (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
importedMember :
PackageableElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
member :
NamedElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
ownedMember :
NamedElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
ownedRule :
Constraint (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
packageImport :
PackageImport (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
package :
Package (0 1); -- source
Type![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
visibility :
VisibilityKind (1 1); -- source
PackageableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
owningTemplateParameter :
TemplateParameter (0 1); -- source
ParameterableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
isLeaf : Boolean (1 1); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
redefinedElement :
RedefinableElement (0 *); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
redefinitionContext :
Classifier (0 *); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
clientDependency :
Dependency (0 *); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
name : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
nameExpression :
StringExpression (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
namespace :
Namespace (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
qualifiedName : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
templateBinding :
TemplateBinding (0 *); -- source
TemplateableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
ownedComment :
Comment (0 *); -- source
Element![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
ownedElement :
Element (0 *); -- source
Element![](/se-interop/image/down-arrow.png?hunchentoot-session=5705%3AE51F26D65246CC23619C85443C9FEE62)
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].