Software Disclaimer

Class UML 2.4.1::OpaqueExpression

Description:

An opaque expression is an uninterpreted textual statement that denotes a (possibly empty) set of values when evaluated in a context.Provides a mechanism for precisely defining the behavior of an opaque expression. An opaque expression is defined by a behavior restricted to return one result.

Direct Superclasses: ValueSpecification

Direct Subclasses:

Class Precedence List: OpaqueExpression, ValueSpecification, TypedElement, PackageableElement, ParameterableElement, NamedElement, Element

Properties:

behavior : Behavior (0 1); -- source OpaqueExpression
body : String (0 *); -- source OpaqueExpression
language : String (0 *); -- source OpaqueExpression

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.
{ordered}

result : Parameter (0 1); -- source OpaqueExpression
type : Type (0 1); -- source TypedElement
visibility : VisibilityKind (1 1); -- source PackageableElement
owningTemplateParameter : TemplateParameter (0 1); -- source ParameterableElement
templateParameter : TemplateParameter (0 1); -- source ParameterableElement
clientDependency : Dependency (0 *); -- source NamedElement
name : String (0 1); -- source NamedElement
nameExpression : StringExpression (0 1); -- source NamedElement
namespace : Namespace (0 1); -- source NamedElement
qualifiedName : String (0 1); -- source NamedElement
ownedComment : Comment (0 *); -- source Element
ownedElement : Element (0 *); -- source Element
owner : Element (0 1); -- source Element

Constraints:

Signature: CMOF_14_3_31() : Boolean;
Description: 14.3 [31] The body of an OpaqueExpression must not be empty. see also: https://sites.google.com/site/metamodelingantipatterns/catalog/mof/opaque-expression-has-no-or-empty-body
Expression: body->notEmpty() and body <> ''

Signature: only_return_result_parameters() : Boolean;
Description: The behavior may only have return result parameters.
The OCL used here is not normative.
Editor's notes: ownedParameter, not ownedParameters.
Expression: self.behavior.notEmpty() implies self.behavior.ownedParameter->select(p | p.direction<>#return)->isEmpty()
Original: self.behavior.notEmpty() implies self.behavior.ownedParameters->select(p | p.direction<>#return)->isEmpty()

Signature: one_return_result_parameter() : Boolean;
Description: The behavior must have exactly one return result parameter.
Expression: self.behavior.notEmpty() implies self.behavior.ownedParameter->select(p | p.direction=#return)->size() = 1

Signature: language_body_size() : Boolean;
Description: If the language attribute is not empty, then the size of the body and language arrays must be the same.
Expression: language->notEmpty() implies (body->size() = language->size())

Operations:

Signature: value() : Integer;
Description: The query value() gives an integer value for an expression intended to produce one.
Expression: self.isIntegral() true

Signature: isPositive() : Boolean;
Description: The query isPositive() tells whether an integer expression has a positive value.
Expression: result = false self.isIntegral()

Signature: isNonNegative() : Boolean;
Description: The query isNonNegative() tells whether an integer expression has a non-negative value.
Expression: result = false self.isIntegral()

Signature: isIntegral() : Boolean;
Description: The query isIntegral() tells whether an expression is intended to produce an integer.
Expression: result = false



Send questions or comments to xmi-interop@omg.org.