|
1 | 1 | @startuml
|
| 2 | +hide empty members |
2 | 3 |
|
3 |
| - |
4 |
| -abstract class AbstractConcept extends MetamodelElement implements FeaturesContainer, NamespaceProvider { |
5 |
| - allFeatures(): List<Feature> |
| 4 | +class Concept #LightGreen extends FeaturesContainer { |
| 5 | + abstract: boolean |
6 | 6 | }
|
7 | 7 |
|
8 |
| -class Annotation extends AbstractConcept { |
9 |
| - platformSpecific: String? |
10 |
| -} |
| 8 | +class ConceptInterface #LightGreen extends FeaturesContainer |
11 | 9 |
|
12 |
| -class Concept extends AbstractConcept { |
13 |
| - abstract: boolean |
14 |
| -} |
| 10 | +class Containment #LightBlue extends Link |
15 | 11 |
|
16 |
| -class ConceptInterface extends AbstractConcept |
| 12 | +abstract class DataType #LightPink extends MetamodelElement |
17 | 13 |
|
18 |
| -class Containment extends Link |
| 14 | +class Enumeration #LightPink extends DataType implements NamespaceProvider |
19 | 15 |
|
20 |
| -abstract class Datatype extends MetamodelElement |
| 16 | +class EnumerationLiteral #LightPink implements NamespacedEntity |
21 | 17 |
|
22 |
| -abstract class Feature implements NamespacedEntity { |
23 |
| - multiplicity: Multiplicity |
24 |
| - derived: boolean |
| 18 | +abstract class Feature #LightBlue implements NamespacedEntity { |
| 19 | + optional: boolean |
25 | 20 | }
|
26 | 21 |
|
27 |
| -interface FeaturesContainer |
| 22 | +abstract class FeaturesContainer #LightGreen extends MetamodelElement implements NamespaceProvider { |
| 23 | + allFeatures(): List<Feature> |
| 24 | +} |
28 | 25 |
|
29 |
| -abstract class Link extends Feature |
| 26 | +abstract class Link #LightBlue extends Feature { |
| 27 | + multiple: boolean |
| 28 | +} |
30 | 29 |
|
31 | 30 | class Metamodel implements NamespaceProvider {
|
32 | 31 | qualifiedName: String
|
33 | 32 | }
|
34 | 33 |
|
35 | 34 | abstract class MetamodelElement implements NamespacedEntity
|
36 | 35 |
|
37 |
| -enum Multiplicity { |
38 |
| - Optional |
39 |
| - Single |
40 |
| - ZeroOrMore |
41 |
| - OneOrMore |
| 36 | +abstract class NamespacedEntity { |
| 37 | + simpleName: String |
| 38 | + qualifiedName(): String |
42 | 39 | }
|
43 | 40 |
|
44 | 41 | interface NamespaceProvider {
|
45 | 42 | namespaceQualifier(): String
|
46 | 43 | }
|
47 | 44 |
|
48 |
| -interface NamespacedEntity { |
49 |
| - simpleName: String |
50 |
| - qualifiedName(): String |
51 |
| -} |
52 |
| - |
53 |
| -class PrimitiveType extends Datatype |
54 |
| - |
55 |
| -class Property extends Feature |
| 45 | +class PrimitiveType #LightPink extends DataType |
56 | 46 |
|
57 |
| -class Reference extends Link |
58 |
| - |
59 |
| -class Typedef extends Datatype |
| 47 | +class Property #LightBlue extends Feature |
60 | 48 |
|
| 49 | +class Reference #LightBlue extends Link |
61 | 50 |
|
62 | 51 | ' relations:
|
63 | 52 |
|
64 |
| -Annotation "*" -- "1" AbstractConcept: target |
65 |
| - |
66 |
| -Concept "*" -- "0..1" Concept: extends |
67 |
| -Concept "*" -- "*" ConceptInterface: implements |
68 |
| - |
69 |
| -ConceptInterface "*" -- "*" ConceptInterface: extends |
70 |
| - |
71 |
| -Containment "*" -- "0..1" Containment: specializes |
72 |
| - |
73 |
| -FeaturesContainer "1" o-- "*" Feature: features |
| 53 | +Concept "*" -> "0..1" Concept: extends |
| 54 | +Concept "*" --> "*" ConceptInterface: implements |
74 | 55 |
|
75 |
| -Link "*" -- "1" AbstractConcept: type |
| 56 | +ConceptInterface "*" --> "*" ConceptInterface: extends |
76 | 57 |
|
77 |
| -Metamodel "1" o-- "*" MetamodelElement: elements |
78 |
| -Metamodel "*" -- "*" Metamodel: dependsOn |
| 58 | +EnumerationLiteral "*" -* "1" Enumeration : literals |
79 | 59 |
|
80 |
| -NamespacedEntity "*" -- "1" NamespaceProvider: container |
| 60 | +Feature "*" -* "1" FeaturesContainer: features |
81 | 61 |
|
82 |
| -Property "*" -- "1" Datatype: type |
| 62 | +Link "*" --> "1" FeaturesContainer: type |
83 | 63 |
|
84 |
| -Reference "*" -- "0..1" Reference: specializes |
| 64 | +Metamodel "*" --> "*" Metamodel: dependsOn |
| 65 | +MetamodelElement "*" -* "1" Metamodel: elements |
85 | 66 |
|
86 |
| -Typedef "*" -- "1" PrimitiveType: constraints |
| 67 | +NamespacedEntity "*" --> "1" NamespaceProvider: container |
87 | 68 |
|
| 69 | +Property "*" -> "1" DataType: type |
88 | 70 |
|
| 71 | +legend |
| 72 | + <#LightGray,#LightGray>| <#LightBlue>Feature | |
| 73 | + | <#LightGreen>Feature Container | |
| 74 | + | <#LightPink>DataType | |
| 75 | +end legend |
89 | 76 | @enduml
|
0 commit comments