|Previous||UML Classes||Table of Contents||UML Packages||Next|
A named element is extended to support using a string expression to specify its name. This allows names of model elements
to involve template parameters. The actual name is evaluated from the string expression only when it is sensible to do so
(e.g., when a template is bound).
NamedElement (from Kernel , Dependencies ) on page 99
NamedElement specializes Kernel ::NamedElement and adds a composition association to Expression.
No additional attributes
Issue 8529 - fix type of nameExpression to StringExpression and add subsets constraint
• nameExpression : StringExpression [0..1]The string expression used to define the name of this named element. (Subsets
No additional constraints
A NamedElement may, in addition to a name, be associated with a string expression. This expression is used to calculate the
name in the special case when it is a string literal. This allows string expressions, whose sub expressions may be parametered
elements, to be associated with named elements in a template. When a template is bound, the sub expressions are substituted
with the actuals substituted for the template parameters. In many cases, the resultant expression will be a string literal
(if we assume that a concatenation of string literals is itself a string literal), in which case this will provide the name
of the named element.
A NamedElement may have both a name and a name expression associated with it. In which case, the name can be used as an alias
for the named element, which will surface, for example, in an OCL string. This avoids the need to use string expressions in
surface notation, which is often cumbersome, although it doesn’t preclude it.
The expression associated with a named element can be shown in two ways, depending on whether an alias is required or not.
are illustrated in Figure 17.28.
No alias: The string expression appears as the name of the model element.
Issue 8529 -replace ‘is’ with ‘are’
With alias: Both the string expression and the alias are shown wherever the name usually appears. The alias is given first
and the string expression underneath.
In both cases the string expression appears between $ signs. The specification of expressions in UML supports the use of alternative
string expression languages in the abstract syntax -they have to have String as their type and can be some structure of operator
expressions with operands. The notation for this is discussed in the section on Expressions. In the context of templates,
sub expressions of a string expression (usually string literals) that are parametered in the template are shown between angle
brackets (see section on ValueSpecification TemplateParameters).
The figure shows a modified version of the ResourceAllocation package template where the first two formal template parameters
have been changed to be string expression parameters. These formal template parameters are used within the package template
to name some of the classes and association ends. The figure also shows a bound package (named TrainingAdmin) that has two
bindings to this ResourceAllocation template. The first binding substitutes the string Instructor for Resource, the string
Qualification for ResourceKind, and the class TrainingAdminSystem for System. The second binding substitutes the string Facility
for Resource, the string FacilitySpecification for ResourceKind, and the class TrainingAdminSystem is again substituted for
The result of the binding includes both classes Instructor, Qualification, and InstructorAllocation as well as classes Facility,
FacilitySpecification, and FacilityAllocation. The associations are similarly replicated. Note that Request will have two
attributes derived from the single <resourceKind> attribute (shown here by an arrow), namely qualification and facilitySpecification.