Skip to main content

Generalization / Specialization Operations

Generalization operations generalize feature or super type declarations, whereas specialization operations specialize them.

Generalize Attribute

In the metamodel, the multiplicity of an attribute is generalized. In the model, nothing is changed.

Parameters:
  • attribute: The attribute to be generalized
  • lowerBound: The new lower bound
  • upperBound: The new upper bound

Constraints:
  • The multiplicity must be the same or more general

Generalize Reference

In the metamodel, either the type or the multiplicity of a reference is generalized. In the model, nothing is changed.

Parameters:
  • reference: The reference to be generalized
  • type: The new type of the reference
  • lowerBound: The new lower bound
  • upperBound: The new upper bound

Constraints:
  • The type must be the same or more general
  • The multiplicity must be the same or more general

Generalize Super Type

In the metamodel, the super type of a class is replaced by its super types. In the model, the values of the features that the class inherits from that super type (excluding its super types) are deleted.

Parameters:
  • eClass: The class of which the super type is replaced
  • superType: The super type to be replaced by its super types

Constraints:
  • The super type to remove actually has to be a super type

Remove Super Type

In the metamodel, a super type is removed from a class. In the model, the values of the features inherited from that super type (including its super types) are deleted.

Parameters:
  • eClass: The class from which the super type is removed
  • superType: The super type to be removed

Constraints:
  • The super type to be removed actually has to be a super type of the class

Remove Superfluous Super Type

In the metamodel, a super type is removed from a class that is already inherited from another super class. In the model, nothing is changed, as this super type is superfluous.

Parameters:
  • eClass: The class from which the super type is removed
  • superType: The super type to be removed

Constraints:
  • The super type to be removed actually has to be a super type
  • The super type to be removed must be subsumed by one of the other super types

Specialize Composition

In the metamodel, the type of a containment reference is specialized by a new sub class. In the model, the values of this reference are migrated to the new type.

Parameters:
  • reference: The containment reference to be specialized
  • ePackage: The package in which the sub class is created
  • name: The name of the sub class

Constraints:
  • The reference has to be a containment reference

Specialize Reference

In the metamodel, either the type or the multiplicity of a reference is specialized. In the model, values no longer conforming to the new type or multiplicity are removed.

Parameters:
  • reference: The reference to be generalized
  • type: The new type of the reference
  • lowerBound: The new lower bound of the reference
  • upperBound: The new upper bound of the reference

Constraints:
  • The multiplicity must be the same or more special
  • The type must be the same or more special

Specialize Reference Type

In the metamodel, the type of a reference can be specialized to its subclass, in case it is abstract and has only one subclass. In the model, nothing is changed.

Parameters:
  • reference: The reference whose type is specialized
  • type: The new type of the reference

Constraints:
  • The new type of the reference must be a subclass of its old type
  • The old type of the reference must be abstract
  • The old type must not have any other subclass

Specialize Super Type

In the metamodel, the super type of a class is replaced by one of its sub classes. In the model, nothing is modified.

Parameters:
  • eClass: The class whose super type is specialized
  • toReplace: The super type which is replaced
  • replaceBy: The sub class by which is replaced

Constraints:
  • The super type to be replaced must be a super type of the class
  • The replacing super type must be a sub type of the replaced super type

Back to the top