XCSG:Namespace

From AtlasWiki
Revision as of 16:57, 15 May 2014 by Pi (Talk | contribs)

Jump to: navigation, search

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.

Each Package has a name (inherited from Node), and is connected by Contains edges to software elements defined in that Package. Software elements connected in one step over Contains edges are top-level elements in that Package. Not every software element contained in a Package is visible in or beyond that package, those that may be visible are tagged with a Visibility modifier indicating their declared (or implicit) visiblity.

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.