Archiv für den Monat: April 2011

UML2: Das Metamodell (Teil 2)

Als Fortsetzung der begonnenen Erklärung des Metamodells von UML, setzt dieser Text an der wohlbekannten Stelle der „Klasse“ die Serie fort.
Welche Merkmale besitzt eine Klasse? Sie hat einen Namen und liegt in einem Package. Zunächst der Name, ohne Kenntnisse des Metamodells liegt der Gedanke nahe, dass eine Klasse ein String-Attribut namens „name“ besitzt (wie im folgenden Bild dargestellt).

class with a name-property
Im UML-Metamodell besitzt die Klasse aber kein Attribut „name“, sondern erbt dieses von „NamedElement“.

inheritance of the name-property

Dieses Diagramm zeigt verschiedene Dinge: Erstens wird deutlich, dass das UML-Metamodell mit Mehrfachvererbung arbeitet (selbst das Meta-Metamodell benutzt Mehrfachvererbung). Zweitens ist eine Klasse gleichzeitig ein „Type“, Properties und andere TypedElements können also als Typ eine Klasse (genauer: die Instanz von „Class“ des Metamodells) haben. Drittens ist eine Klasse auch ein Namespace, sie kann also andere Elemente (zum Beispiel PackageableElements oder NamedElements) enthalten. Damit kann man innere Klassen, Properties, Operationen und vieles mehr in eine Klasse legen.