Previous | UML Classes | Table of Contents | UML Packages | Next |
An opaque expression is an uninterpreted textual statement that denotes a (possibly empty) set of values when evaluated in
a context.
•
ValueSpecification (from Kernel ) on page 140
An expression contains language-specific text strings used to describe a value or values, and an optional specification of
the languages.
One predefined language for specifying expressions is OCL. Natural language or programming languages may also be used.
Issue 9191 - change lower bound to 0
• body: String [0..*] The text of the expression, possibly in multiple languages.
• language: String [0..*] Specifies the languages in which the expression is stated. The interpretation of the expression body depends on the languages. If the languages are unspecified, they might be implicit from the expression body or the context. Languages are matched to body strings by order.
No additional associations
Issue 8100 - Clarify semantics of multiple languages co-existing in the same expression. 9191 -remove second constraint introduced
by 8100
[1] If the language attribute is not empty, then the size of the body and language arrays must be the same.
language->notEmpty() implies (body->size() = language->size())
These operations are not defined within the specification of UML. They should be defined within an implementation that implements
constraints so that constraints that use these operations can be evaluated.
[1] The query value() gives an integer value for an expression intended to produce one.
Expression::value(): Integer;
pre: self.isIntegral()
[2] The query isIntegral() tells whether an expression is intended to produce an integer.
Expression::isIntegral(): Boolean;
[3] The query isPositive() tells whether an integer expression has a positive value.
Expression::isPositive(): Boolean;pre: self.isIntegral()
[4] The query isNonNegative() tells whether an integer expression has a non-negative value.
Expression::isNonNegative(): Boolean;
pre: self.isIntegral()
Issue 8100 - Clarify semantics of multiple languages co-existing in the same expression.
The expression body may consist of a sequence of text strings - each in a different language - representing alternative representations
of the same content. When multiple language strings are provided, the language of each separate string is determined by its
corresponding entry in the "language" attribute (by sequence order). The interpretation of the text strings is language specific.
Languages are matched to body strings by order. If the languages are unspecified, they might be implicit from the expression
bodies or the context.
It is assumed that a linguistic analyzer for the specified languages will evaluate the bodies. The times at which the bodies
will be evaluated are not specified.
An opaque expression is displayed as text strings in particular languages. The syntax of the strings are the responsibility
of a tool and linguistic analyzers for the languages.
An opaque expression is displayed as a part of the notation for its containing element.
Issue 8100 - Clarify semantics of multiple languages co-existing in the same expression.
The languages of an opaque expression, if specified, are often not shown on a diagram. Some modeling tools may impose a particular
language or assume a particular default language. The language is often implicit under the assumption that the form of the
expression makes its purpose clear. If the language name is shown, it should be displayed in braces ({}) before the expression
string to which it corresponds.
A language name should be spelled and capitalized exactly as it appears in the document defining the language. For example,
use OCL, not ocl.
a > 0{OCL} i > j and self.size > iaverage hours worked per week