Skip to content

Commit 307eea9

Browse files
authored
Merge pull request #45 from LIonWeb-org/agreed-upon
Updated M3 diagram to reflect current state of discussion
2 parents cc2d551 + 7dcaa42 commit 307eea9

File tree

3 files changed

+43
-119
lines changed

3 files changed

+43
-119
lines changed

lioncore/metametamodel.puml

Lines changed: 37 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,76 @@
11
@startuml
2+
hide empty members
23

3-
4-
abstract class AbstractConcept extends MetamodelElement implements FeaturesContainer, NamespaceProvider {
5-
allFeatures(): List<Feature>
4+
class Concept #LightGreen extends FeaturesContainer {
5+
abstract: boolean
66
}
77

8-
class Annotation extends AbstractConcept {
9-
platformSpecific: String?
10-
}
8+
class ConceptInterface #LightGreen extends FeaturesContainer
119

12-
class Concept extends AbstractConcept {
13-
abstract: boolean
14-
}
10+
class Containment #LightBlue extends Link
1511

16-
class ConceptInterface extends AbstractConcept
12+
abstract class DataType #LightPink extends MetamodelElement
1713

18-
class Containment extends Link
14+
class Enumeration #LightPink extends DataType implements NamespaceProvider
1915

20-
abstract class Datatype extends MetamodelElement
16+
class EnumerationLiteral #LightPink implements NamespacedEntity
2117

22-
abstract class Feature implements NamespacedEntity {
23-
multiplicity: Multiplicity
24-
derived: boolean
18+
abstract class Feature #LightBlue implements NamespacedEntity {
19+
optional: boolean
2520
}
2621

27-
interface FeaturesContainer
22+
abstract class FeaturesContainer #LightGreen extends MetamodelElement implements NamespaceProvider {
23+
allFeatures(): List<Feature>
24+
}
2825

29-
abstract class Link extends Feature
26+
abstract class Link #LightBlue extends Feature {
27+
multiple: boolean
28+
}
3029

3130
class Metamodel implements NamespaceProvider {
3231
qualifiedName: String
3332
}
3433

3534
abstract class MetamodelElement implements NamespacedEntity
3635

37-
enum Multiplicity {
38-
Optional
39-
Single
40-
ZeroOrMore
41-
OneOrMore
36+
abstract class NamespacedEntity {
37+
simpleName: String
38+
qualifiedName(): String
4239
}
4340

4441
interface NamespaceProvider {
4542
namespaceQualifier(): String
4643
}
4744

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
5646

57-
class Reference extends Link
58-
59-
class Typedef extends Datatype
47+
class Property #LightBlue extends Feature
6048

49+
class Reference #LightBlue extends Link
6150

6251
' relations:
6352

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
7455

75-
Link "*" -- "1" AbstractConcept: type
56+
ConceptInterface "*" --> "*" ConceptInterface: extends
7657

77-
Metamodel "1" o-- "*" MetamodelElement: elements
78-
Metamodel "*" -- "*" Metamodel: dependsOn
58+
EnumerationLiteral "*" -* "1" Enumeration : literals
7959

80-
NamespacedEntity "*" -- "1" NamespaceProvider: container
60+
Feature "*" -* "1" FeaturesContainer: features
8161

82-
Property "*" -- "1" Datatype: type
62+
Link "*" --> "1" FeaturesContainer: type
8363

84-
Reference "*" -- "0..1" Reference: specializes
64+
Metamodel "*" --> "*" Metamodel: dependsOn
65+
MetamodelElement "*" -* "1" Metamodel: elements
8566

86-
Typedef "*" -- "1" PrimitiveType: constraints
67+
NamespacedEntity "*" --> "1" NamespaceProvider: container
8768

69+
Property "*" -> "1" DataType: type
8870

71+
legend
72+
<#LightGray,#LightGray>| <#LightBlue>Feature |
73+
| <#LightGreen>Feature Container |
74+
| <#LightPink>DataType |
75+
end legend
8976
@enduml

lioncore/metametamodel.svg

Lines changed: 1 addition & 1 deletion
Loading
Lines changed: 5 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,10 @@
11
@startuml
22

3-
' classes
3+
!include metametamodel.puml
44

5-
class Metamodel {
6-
qualifiedName: String
7-
}
8-
9-
class Concept extends AbstractConcept {
10-
abstract: boolean
11-
}
12-
13-
class ConceptInterface extends AbstractConcept
14-
15-
class PrimitiveType extends Datatype
16-
17-
class Typedef extends Datatype
18-
19-
class Annotation extends AbstractConcept {
20-
platformSpecific: String?
21-
}
22-
23-
class Containment extends Link
24-
25-
class Reference extends Link
26-
27-
class Property extends Feature
28-
29-
' Abstract classes
30-
31-
abstract class MetamodelElement
32-
33-
abstract class AbstractConcept extends MetamodelElement {
34-
allFeatures(): List<Feature>
35-
}
36-
37-
abstract class Datatype extends MetamodelElement
38-
39-
abstract class Feature {
40-
multiplicity: Multiplicity
41-
calculated: boolean
42-
}
43-
44-
abstract class Link extends Feature {
45-
}
46-
47-
' Relations
48-
49-
Metamodel "1" o-- "*" MetamodelElement: elements
50-
Metamodel "*" -- "*" Metamodel: dependsOn
51-
52-
Concept "0..1" -- "*" Concept: extends
53-
Concept "*" -- "*" ConceptInterface: implements
54-
55-
ConceptInterface "*" -- "*" ConceptInterface: extends
56-
57-
Annotation "*" -- "1" AbstractConcept: target
58-
59-
Containment "1" -- "*" Containment: specializes
60-
61-
Reference "1" -- "*" Reference: specializes
62-
63-
Property "*" -- "1" Datatype: type
64-
65-
Link "*" -- "1" AbstractConcept: type
66-
67-
NamespacedEntity "*" -- "1" NamespaceProvider: container
68-
69-
FeaturesContainer "1" o-- "*" Feature: features
70-
71-
Typedef "*" -- "1" PrimitiveType: constraints
5+
remove NamespacedEntity
6+
remove NamespaceProvider
7+
remove Typedef
8+
remove Annotation
729

7310
@enduml

0 commit comments

Comments
 (0)