Difference between revisions of "XCSG:Namespace"
Line 1: | Line 1: | ||
− | A Namespace “owns” the model elements that appear in it, and no model element may appear in more than one namespace. | + | A Namespace “owns” the model elements that appear in it, and no model element may appear in more than one namespace. It's important to note however that although a Namespace "owns" the model element, at runtime an instance of the namespace may own an instance of the model element. For example each call to a function would allocate it's own instance of a local variable in the stack. Similarly a namespace is not necessarily a scope. |
== Semantics == | == Semantics == |
Revision as of 16:54, 15 May 2014
A Namespace “owns” the model elements that appear in it, and no model element may appear in more than one namespace. It's important to note however that although a Namespace "owns" the model element, at runtime an instance of the namespace may own an instance of the model element. For example each call to a function would allocate it's own instance of a local variable in the stack. Similarly a namespace is not necessarily a scope.
Semantics
The semantics of Namespace are those defined by UML [5, pp. 2-49, 2-68]. Elements appearing within the namespace, other than generalizations, must have unique names.
Subtypes of Namespace may restrict the types of model elements that the name space contains.
Specification
Metaclass | Namespace |
---|---|
Extends | Container |
Description | A model element that contains (owns) a set of uniquely named model elements. Each contained element is owned by at most a single namespace. The concrete subclasses of Namespace constrain the type of elements the Namespace may contain. Namespace is an abstract metaclass. |
Direct Subkinds | Classifier, Package |
---|
All Superkinds | Node, ModelElement |
---|
Known Possible In Edges
| ||||
---|---|---|---|---|
Inherited From | In Edge | Predecessor | Multiplicity | Description |
Node | Contains | Node | 1 | Indicates that the predecessor contains the successor in a sense specified by the specific type of Contains edge. |
Known Possible Out Edges | ||||
---|---|---|---|---|
Out Edge | Successor | Multiplicity | Description | |
HasVariable | Variable | ✱ | Links a Classifier or Package to one of its Variables.
| |
Inherited From | Out Edge | Successor | Multiplicity | Description |
Node | Contains | Node | ✱ | Indicates that the predecessor contains the successor in a sense specified by the specific type of Contains edge. |
Language mappings
None. Namespace is an abstract metaclass. Package (rather than Namespace) maps to the more concrete notion of a C++ (or MS-IL) namespace.