## org.eclipse.uml2.uml
Interface MultiplicityElement

All Superinterfaces:
  Element, org.eclipse.emf.ecore.EModelElement, org.eclipse.emf.ecore.EObject, org.eclipse.emf.common.notify.Notifier

All Known Subinterfaces:
  ActionInputPin, ConnectorEnd, ExtensionEnd, InputPin, OutputPin, Parameter, Pin, Port, Property, StructuralFeature, ValuePin, Variable

    public interface MultiplicityElement

extends Element

A representation of the model object 'Multiplicity Element'. A multiplicity is a definition of an inclusive interval of non-negative integers beginning with a lower bound and ending with a (possibly infinite) upper bound. A multiplicity element embeds this information to specify the allowable cardinalities for an instantiation of this element.

The following features are supported:

- `Is Ordered`
- `Is Unique`
- `Upper`
- `Lower`
- `Upper Value`
- `Lower Value`

See Also:
  `UMLPackage.getMultiplicityElement()`

Method Summary
`boolean` `compatibleWith(MultiplicityElement other)` The operation compatibleWith takes another multiplicity as input.
`ValueSpecification` `createLowerValue(java.lang.String name, Type type, org.eclipse.emf.ecore.EClass eClass)` Creates a new `ValueSpecification`, with the specified 'Name', and 'Type', and sets the 'Lower Value' containment reference
`ValueSpecification` `createUpperValue(java.lang.String name, Type type, org.eclipse.emf.ecore.EClass eClass)` Creates a new `ValueSpecification`, with the specified 'Name', and 'Type', and sets the 'Upper Value' containment reference
`int` `getLower()` Returns the value of the 'Lower' attribute.
`ValueSpecification` `getLowerValue()` Returns the value of the 'Lower Value' containment reference.
`int` `getUpper()` Returns the value of the 'Upper' attribute.
`ValueSpecification` `getUpperValue()` Returns the value of the 'Upper Value' containment reference.
`boolean` `includesCardinality(int C)` The query includesCardinality() checks whether the specified cardinality is valid for this multiplicity.
`boolean` `includesMultiplicity(MultiplicityElement M)` The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity.
`boolean` `is(int lowerbound, int upperbound)` The operation is determines if the upper and lower bound of the ranges are the ones given.
`boolean` `isMultivalued()` The query isMultivalued() checks whether this multiplicity has an upper bound greater than one.
`boolean` `isOrdered()` Returns the value of the 'Is Ordered' attribute.
`boolean` `isUnique()` Returns the value of the 'Is Unique' attribute.
`int` `lowerBound()` The query lowerBound() returns the lower bound of the multiplicity as an integer.
`void` `setIsOrdered(boolean value)` Sets the value of the '`Is Ordered`' attribute
`void` `setIsUnique(boolean value)` Sets the value of the '`Is Unique`' attribute
`void` `setLower(int value)` Sets the value of the '`Lower`' attribute
`void` `setLowerValue(ValueSpecification value)` Sets the value of the '`Lower Value`' containment reference
`void` `setUpper(int value)` Sets the value of the '`Upper`' attribute
`void` `setUpperValue(ValueSpecification value)` Sets the value of the '`Upper Value`' containment reference
`int` `upperBound()` The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural.
`boolean` `validateLowerGe0(org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)` The lower bound must be a non-negative integer literal.
`boolean` `validateUpperGeLower(org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)` The upper bound must be greater than or equal to the lower bound.
`boolean` `validateValueSpecificationConstant(org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)` If a non-literal ValueSpecification is used for the lower or upper bound, then that specification must be a constant expression.
`boolean` `validateValueSpecificationNoSideEffects(org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)` If a non-literal ValueSpecification is used for the lower or upper bound, then evaluating that specification must not have side effects.

Methods inherited from interface org.eclipse.uml2.uml.Element

`addKeyword, allOwnedElements, applyStereotype, createEAnnotation, createOwnedComment, destroy, getApplicableStereotype, getApplicableStereotypes, getAppliedStereotype, getAppliedStereotypes, getAppliedSubstereotype, getAppliedSubstereotypes, getKeywords, getModel, getNearestPackage, getOwnedComments, getOwnedElements, getOwner, getRelationships, getRelationships, getRequiredStereotype, getRequiredStereotypes, getSourceDirectedRelationships, getSourceDirectedRelationships, getStereotypeApplication, getStereotypeApplications, getTargetDirectedRelationships, getTargetDirectedRelationships, getValue, hasKeyword, hasValue, isStereotypeApplicable, isStereotypeApplied, isStereotypeRequired, mustBeOwned, removeKeyword, setValue, unapplyStereotype, validateHasOwner, validateNotOwnSelf`

Methods inherited from interface org.eclipse.emf.ecore.EModelElement
`getEAnnotation, getEAnnotations`

Methods inherited from interface org.eclipse.emf.ecore.EObject
`eAllContents, eClass, eContainer, eContainingFeature, eContainmentFeature, eContents, eCrossReferences, eGet, eGet, eInvoke, eIsProxy, eIsSet, eResource, eSet, eUnset`

Methods inherited from interface org.eclipse.emf.common.notify.Notifier
`eAdapters, eDeliver, eNotify, eSetDeliver`

Method Detail

### isOrdered

    boolean isOrdered()

  Returns the value of the 'Is Ordered' attribute. The default value is `"false"`. For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this element are sequentially ordered.

  Returns:
    the value of the 'Is Ordered' attribute.
  See Also:
    `setIsOrdered(boolean)`, `UMLPackage.getMultiplicityElement_IsOrdered()`

### setIsOrdered

    void setIsOrdered(boolean value)

  Sets the value of the '`Is Ordered`' attribute.

  Parameters:
    `value` - the new value of the 'Is Ordered' attribute.
  See Also:
    `isOrdered()`

### isUnique

    boolean isUnique()

  Returns the value of the 'Is Unique' attribute. The default value is `"true"`. For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this element are unique.

  Returns:
    the value of the 'Is Unique' attribute.
  See Also:
    `setIsUnique(boolean)`, `UMLPackage.getMultiplicityElement_IsUnique()`

### setIsUnique

    void setIsUnique(boolean value)

  Sets the value of the '`Is Unique`' attribute.

  Parameters:
    `value` - the new value of the 'Is Unique' attribute.
  See Also:
    `isUnique()`

### getUpper

    int getUpper()

  Returns the value of the 'Upper' attribute. The default value is `"1"`. Specifies the upper bound of the multiplicity interval.

  Returns:
    the value of the 'Upper' attribute.
  See Also:
    `setUpper(int)`, `UMLPackage.getMultiplicityElement_Upper()`

### setUpper

    void setUpper(int value)

  Sets the value of the '`Upper`' attribute.

  Parameters:
    `value` - the new value of the 'Upper' attribute.
  See Also:
    `getUpper()`

### getLower

    int getLower()

  Returns the value of the 'Lower' attribute. The default value is `"1"`. Specifies the lower bound of the multiplicity interval.

  Returns:
    the value of the 'Lower' attribute.
  See Also:
    `setLower(int)`, `UMLPackage.getMultiplicityElement_Lower()`

### setLower

    void setLower(int value)

  Sets the value of the '`Lower`' attribute.

  Parameters:
    `value` - the new value of the 'Lower' attribute.
  See Also:
    `getLower()`

### getUpperValue

    ValueSpecification getUpperValue()

  Returns the value of the 'Upper Value' containment reference.

  This feature subsets the following features:

  - '`Owned Element`'
  The specification of the upper bound for this multiplicity.

  Returns:
    the value of the 'Upper Value' containment reference.
  See Also:
    `setUpperValue(ValueSpecification)`, `UMLPackage.getMultiplicityElement_UpperValue()`

### setUpperValue

    void setUpperValue(ValueSpecification value)

  Sets the value of the '`Upper Value`' containment reference.

  Parameters:
    `value` - the new value of the 'Upper Value' containment reference.
  See Also:
    `getUpperValue()`

### createUpperValue

    ValueSpecification createUpperValue(java.lang.String name,
                                        Type type,
                                        org.eclipse.emf.ecore.EClass eClass)

  Creates a new `ValueSpecification`, with the specified 'Name', and 'Type', and sets the 'Upper Value' containment reference.

  Parameters:
    `name` - The 'Name' for the new `ValueSpecification`, or `null`.
    `type` - The 'Type' for the new `ValueSpecification`, or `null`.
    `eClass` - The Ecore class of the `ValueSpecification` to create.
  Returns:
    The new `ValueSpecification`.
  See Also:
    `getUpperValue()`

### getLowerValue

    ValueSpecification getLowerValue()

  Returns the value of the 'Lower Value' containment reference.

  This feature subsets the following features:

  - '`Owned Element`'
  The specification of the lower bound for this multiplicity.

  Returns:
    the value of the 'Lower Value' containment reference.
  See Also:
    `setLowerValue(ValueSpecification)`, `UMLPackage.getMultiplicityElement_LowerValue()`

### setLowerValue

    void setLowerValue(ValueSpecification value)

  Sets the value of the '`Lower Value`' containment reference.

  Parameters:
    `value` - the new value of the 'Lower Value' containment reference.
  See Also:
    `getLowerValue()`

### createLowerValue

    ValueSpecification createLowerValue(java.lang.String name,
                                        Type type,
                                        org.eclipse.emf.ecore.EClass eClass)

  Creates a new `ValueSpecification`, with the specified 'Name', and 'Type', and sets the 'Lower Value' containment reference.

  Parameters:
    `name` - The 'Name' for the new `ValueSpecification`, or `null`.
    `type` - The 'Type' for the new `ValueSpecification`, or `null`.
    `eClass` - The Ecore class of the `ValueSpecification` to create.
  Returns:
    The new `ValueSpecification`.
  See Also:
    `getLowerValue()`

### validateLowerGe0

    boolean validateLowerGe0(org.eclipse.emf.common.util.DiagnosticChain diagnostics,
                             java.util.Map<java.lang.Object,java.lang.Object> context)

  The lower bound must be a non-negative integer literal. lowerBound()->notEmpty() implies lowerBound() >= 0

  Parameters:
    `diagnostics` - The chain of diagnostics to which problems are to be appended.
    `context` - The cache of context-specific information.

### validateUpperGeLower

    boolean validateUpperGeLower(org.eclipse.emf.common.util.DiagnosticChain diagnostics,
                                 java.util.Map<java.lang.Object,java.lang.Object> context)

  The upper bound must be greater than or equal to the lower bound. (upperBound()->notEmpty() and lowerBound()->notEmpty()) implies upperBound() >= lowerBound()

  Parameters:
    `diagnostics` - The chain of diagnostics to which problems are to be appended.
    `context` - The cache of context-specific information.

### validateValueSpecificationNoSideEffects

    boolean validateValueSpecificationNoSideEffects(org.eclipse.emf.common.util.DiagnosticChain diagnostics,
                                                    java.util.Map<java.lang.Object,java.lang.Object> context)

  If a non-literal ValueSpecification is used for the lower or upper bound, then evaluating that specification must not have side effects. true

  Parameters:
    `diagnostics` - The chain of diagnostics to which problems are to be appended.
    `context` - The cache of context-specific information.

### validateValueSpecificationConstant

    boolean validateValueSpecificationConstant(org.eclipse.emf.common.util.DiagnosticChain diagnostics,
                                               java.util.Map<java.lang.Object,java.lang.Object> context)

  If a non-literal ValueSpecification is used for the lower or upper bound, then that specification must be a constant expression. true

  Parameters:
    `diagnostics` - The chain of diagnostics to which problems are to be appended.
    `context` - The cache of context-specific information.

### isMultivalued

    boolean isMultivalued()

  The query isMultivalued() checks whether this multiplicity has an upper bound greater than one. upperBound()->notEmpty() result = upperBound() > 1

### includesCardinality

    boolean includesCardinality(int C)

  The query includesCardinality() checks whether the specified cardinality is valid for this multiplicity. upperBound()->notEmpty() and lowerBound()->notEmpty() result = (lowerBound() <= C) and (upperBound() >= C)

### includesMultiplicity

    boolean includesMultiplicity(MultiplicityElement M)

  The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity. self.upperBound()->notEmpty() and self.lowerBound()->notEmpty() and M.upperBound()->notEmpty() and M.lowerBound()->notEmpty() result = (self.lowerBound() <= M.lowerBound()) and (self.upperBound() >= M.upperBound())

### lowerBound

    int lowerBound()

  The query lowerBound() returns the lower bound of the multiplicity as an integer. result = if lowerValue->isEmpty() then 1 else lowerValue.integerValue() endif

### upperBound

    int upperBound()

  The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural. result = if upperValue->isEmpty() then 1 else upperValue.unlimitedValue() endif

### compatibleWith

    boolean compatibleWith(MultiplicityElement other)

  The operation compatibleWith takes another multiplicity as input. It checks if one multiplicity is compatible with another. result = Integer.allInstances()->forAll(i : Integer | self.includesCardinality(i) implies other.includesCardinality(i))

### is

    boolean is(int lowerbound,
               int upperbound)

  The operation is determines if the upper and lower bound of the ranges are the ones given. result = (lowerbound = self.lowerbound and upperbound = self.upperbound)

Copyright 2003, 2007 IBM Corporation and others. All Rights Reserved.