| package OO; |
| |
| class Model { |
| @diagram(direction="down") |
| val Classifier[*] contents; |
| } |
| |
| abstract class NamedElement { |
| attr String name; |
| } |
| |
| @diagram(inheritance.direction="down") |
| abstract class ~Classifier extends NamedElement { |
| } |
| |
| class ~Class extends ~Classifier { |
| ref ~Class#extendedBy ~extends; |
| ref ~Class[*]#~extends extendedBy; |
| val Feature[*]#owner features; |
| attr boolean isAbstract; |
| } |
| |
| @diagram(inheritance.direction="right") |
| class Datatype extends ~Classifier { |
| } |
| |
| abstract class Feature extends NamedElement { |
| ref ~Class#features owner; |
| attr VisibilityEnum visibility; |
| } |
| |
| abstract class StructuralFeature extends Feature { |
| } |
| |
| class Reference extends StructuralFeature { |
| @diagram(direction="up") |
| ref ~Class type; |
| } |
| |
| class Attribute extends StructuralFeature { |
| attr boolean isMany; |
| ref Datatype type; |
| } |
| |
| enum VisibilityEnum { |
| public = 1; |
| private = 2; |
| } |