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?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
isIndirectlyInstantiated : Boolean (1 1); -- source
Component![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
packagedElement :
PackageableElement (0 *); -- source
Component![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
provided :
Interface (0 *); -- source
Component![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
realization :
ComponentRealization (0 *); -- source
Component![](/se-interop/image/right-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
required :
Interface (0 *); -- source
Component The interfaces that the component requires from other components in its
environment in order to be able to offer its full set of provided functionality.
These interfaces may be used by the Component or any of its realizingClassifiers,
or they may be the Interfaces that are required by its public Ports.
{
readonly,
derived}
![](/se-interop/image/right-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
extension :
Extension (0 *); -- source
Class References the Extensions that specify additional properties of the metaclass.
The property is derived from the extensions whose memberEnds are typed
by the Class.
{
readonly,
derived}
Opposite: Extension.metaclass
The spec does not provide a function to compute this derived property!![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
isAbstract : Boolean (1 1); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
isActive : Boolean (1 1); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
nestedClassifier :
Classifier (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
ownedAttribute :
Property (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
ownedOperation :
Operation (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
ownedReception :
Reception (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
superClass :
Class (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
ownedPort :
Port (0 *); -- source
EncapsulatedClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
ownedConnector :
Connector (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
part :
Property (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
role :
ConnectableElement (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
classifierBehavior :
Behavior (0 1); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
interfaceRealization :
InterfaceRealization (0 *); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
ownedBehavior :
Behavior (0 *); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
ownedTrigger :
Trigger (0 *); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
attribute :
Property (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
collaborationUse :
CollaborationUse (0 *); -- source
Classifier![](/se-interop/image/right-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
feature :
Feature (0 *); -- source
Classifier Specifies each feature defined in the classifier.
{
readonly}
Derived union with sources: (attribute, ownedConnector, ownedReception, ownedOperation, ownedAttribute)
Subsets: Namespace.member
Opposite: Feature.featuringClassifier
![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
generalization :
Generalization (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
inheritedMember :
NamedElement (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
isFinalSpecialization : Boolean (1 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
ownedTemplateSignature :
RedefinableTemplateSignature (0 1); -- source
Classifier![](/se-interop/image/right-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
ownedUseCase :
UseCase (0 *); -- source
Classifier References the use cases owned by this classifier.
{
composite}
Subsets: Namespace.ownedMember
![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
powertypeExtent :
GeneralizationSet (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
redefinedClassifier :
Classifier (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
representation :
CollaborationUse (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
substitution :
Substitution (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
templateParameter :
ClassifierTemplateParameter (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
useCase :
UseCase (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
templateBinding :
TemplateBinding (0 *); -- source
TemplateableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
package :
Package (0 1); -- source
Type![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
visibility :
VisibilityKind (1 1); -- source
PackageableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
owningTemplateParameter :
TemplateParameter (0 1); -- source
ParameterableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
elementImport :
ElementImport (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
importedMember :
PackageableElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
member :
NamedElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
ownedMember :
NamedElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
ownedRule :
Constraint (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
packageImport :
PackageImport (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
isLeaf : Boolean (1 1); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
redefinedElement :
RedefinableElement (0 *); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
redefinitionContext :
Classifier (0 *); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
clientDependency :
Dependency (0 *); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
name : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
nameExpression :
StringExpression (0 1); -- source
NamedElement![](/se-interop/image/right-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
namespace :
Namespace (0 1); -- source
NamedElement Specifies the namespace that owns the NamedElement.
{
readonly}
Derived union with sources: (package)
Subsets: Element.owner
Opposite: Namespace.ownedMember
![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
qualifiedName : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
ownedComment :
Comment (0 *); -- source
Element![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
ownedElement :
Element (0 *); -- source
Element![](/se-interop/image/down-arrow.png?hunchentoot-session=78780%3A34B4550D30A86320BA295A4F42148B06)
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].