Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

When describing Ecore's modelling constructs below, we will discuss both take the latter of these perspectives. For the code perspective, see Genmodel.

Ecore's modelling constructs

...

ConstructCodeRuntime

EClass

Has a name and can be abstract (cannot be instantiated) and interface (purely API). A container of so-called structural features (attributes and associations).

PlantUML Macro
class OrgUnit
class Person

An interface and an implementation class.

 

Non-abstract classes can be instantiated. Instances will have attributes values and links to other objects corresponding to contained and inherited features.

EDataType

A non-modelled or "foreign" type, provided by the host language and runtime environment, like int, double, String, Date etc. Many such types are pre-defined by Ecore, e.g. EInt, EIntegerObject, EDouble, EDoubleObject, EBoolean, EBooleanObject, EString, EDate corresponding to Java's int, Integer, double, Double, boolean, Boolean, String and Date types. You can define your own, to be able to use other Java types in your model.

No classes, as they already exist. Methods (stubs) for converting to/from String will be generated in the EPackage's classes.Instances of the corresponding (non-abstract) Java classes can be created from Strings.

EClassifier

Abstract superclass of EClass and EDataType

  

EAttribute

Has a name, type (an EDataType) and multiplicity (lower and upper bounds).

See EStructuralFeature.See EStructuralFeature.

EReference

Has a name, type (an EClass) and multiplicity. Corresponds to a one-way/directed association from the owning EClass to another EClass. Two EReferences may be each other's opposite, meaning that of one instance refers to the other, the other must refer back.

See EStructuralFeature.See EStructuralFeature.

EStructualFeature

Abstract superclass of EAttribute and EReference. The distinction between these two is the kind of type they have, EDataType and EClassifier, respectively.

The owning classes's interface will include getters and possibly setters, and the implementation will include an appropriate field. Single valued attributes will get a field and a getter and setter, while multi-valued attributes will get a list field with a only a getter.Instances will have fields constrained to the type of the attribute, either the type itself or a list of that type.
Operation  

...