@namespace(uri="OO", prefix="OO") | |
package OO; | |
class Model extends Package { | |
} | |
abstract class PackageableElement extends NamedElement { | |
ref Package#contents ~package; | |
} | |
abstract class AnnotatedElement { | |
val Annotation[*] annotations; | |
} | |
class Annotation { | |
attr String key; | |
attr String value; | |
} | |
abstract class NamedElement extends AnnotatedElement { | |
attr String name; | |
} | |
class Package extends PackageableElement { | |
val PackageableElement[*]#~package contents; | |
} | |
abstract class ~Classifier extends PackageableElement { | |
} | |
class ExternalClass extends ~Class { | |
} | |
class ~Class extends ~Classifier { | |
ref ~Class#extendedBy ~extends; | |
ref ~Class[*]#~extends extendedBy; | |
val Feature[*]#owner features; | |
attr Boolean isAbstract; | |
} | |
class Datatype extends ~Classifier { | |
} | |
abstract class Feature extends NamedElement { | |
ref ~Class#features owner; | |
ref ~Classifier type; | |
attr VisibilityEnum visibility; | |
} | |
abstract class StructuralFeature extends Feature { | |
attr Boolean isMany; | |
} | |
class Operation extends Feature { | |
val Parameter[*]#owner parameters; | |
} | |
class Parameter extends NamedElement { | |
ref ~Classifier type; | |
ref Operation#parameters owner; | |
} | |
class Reference extends StructuralFeature { | |
} | |
class Attribute extends StructuralFeature { | |
} | |
enum VisibilityEnum { | |
public = 1; | |
private = 2; | |
} | |