Unified Modeling Language
In diesem Beitrag zeigen wir dir was die Unified Modeling Language ist und wie sie Informatikern hilft, richtig zu programmieren.
Inhaltsübersicht
Graphische Modellierungssprache
Die Unified Modelling Language, kurz UML, dient dazu, Softwaremodelle programmier-sprachenunabhängig darzustellen. Sie sorgt also dafür, dass alle eine Ahnung haben, was sie überhaupt programmieren sollen. Das ist vor allem bei größeren Projekten wichtig, um nicht den Überblick zu verlieren. Es kann dir aber auch bei kleinen Projekten helfen alles besser nachvollziehen zu können.
Und damit du auch weißt, wie du das ganze anstellst, zeigen wir dir hier die einfachsten Elemente.
Elemente der UML
Es gibt verschiedene Arten von Verknüpfungen, die Klassen miteinander in Verbindung setzen, z.B. die Pfeile, die Ober- und Unterklasse verbinden, ist eine davon.
Eine andere Verbindung sind die Assoziationen. Assoziationen haben immer eine Rolle, eine Multiplizität und einen Namen. Zusätzlich zu diesen festen Eigenschaften, können sie manchmal auch Einschränkungen aufweisen.
Sie werden immer so benannt, dass die Kombination aus Rolle-Assoziationsname-Rolle einen möglichst natürlichsprachigen Satz ergibt. Stell dir einfach vor, du hast zwei Klassen. Eine Klasse beinhaltet Sportler, die andere Objekte des Typs Wettbewerb. Die Rolle der Sportler in der Assoziation der beiden ist teilnehmer, die der Wettbewerbe ist einfach wettbewerbe.
Dabei kann laut Multiplizität ein Wettbewerb 0 bis unendlich viele Teilnehmer haben. Genauso kann auch ein Sportler an 0 bis unendlich vielen Wettbewerben teilnehmen.
Wollen wir nun noch verschiedene Dinge, wie zum Beispiel die Startnummer und den derzeitigen Rang des Sportlers wissen, so brauchen wir dazu eine sogenannte Assoziationsklasse. Diese benutzen wir immer dann, wenn Daten nicht eindeutig einer der assoziierten Klassen zugeordnet werden können.
Implementiert werden Assoziationsklassen allerdings anders. Denn bei der Implementierung wird die Assoziationsklasse zu einer „richtigen“ Klasse.
Aggregation, Komposition und Generalisierung
Aber Klassen haben nicht nur gleichwertige Verbindungen. Es gibt auch solche, die eine Rangordnung besitzen, also eine „Teil-von“ oder „besteht-aus-Beziehung“ haben. Diese nennt man Aggregation.
Der Vorteil einer solchen Verbindung liegt darin, dass Objekte Teile von mehreren „Ganzen“ sein können. Allerdings herrscht hier ein Informationsungleichgewicht, wobei zwar das „Ganze“ seine Teile kennt, aber die „Teile“ nicht das Ganze.
Eine Variation der Aggregation ist die Komposition, bei der das Objekt NUR Teil des Ganzen sein kann. Dies hat zu Folge, dass wir, wenn wir das Ganze löschen, auch die Teile vernichten.
Der Vollständigkeit halber gehen wir hier auch noch auf die Generalisierung ein. Diese ist eine „ist-ein“ bzw. eine „ist-eine-Art-von-Beziehung“, wie du sie bereits aus der Vererbung kennst. Allerdings sind wir auch hier nicht limitiert auf normale Klassen. Um unsere Hierarchie zu vereinfachen, können wir auch abstrakte Klassen einbauen. Aus diesen Klassen werden keine Objekte erzeugt. Ihr Zweck besteht darin, Operationen und Eigenschaften für Unterklassen zur Verfügung zu stellen.
Sie werden mit abstract gekennzeichnet.
Schnittstelle und Implementierung von Assoziationen
Die letzte Komponente ist die Schnittstelle. Sie ist ein Datentyp, der abstrakte Operationen, aber konstante Klassenattribute besitzt. Sie hat auch keine Objektattribute, denn ihr Zweck besteht darin, von anderen Klassen implementiert zu werden.
Eine Klasse ist in der Lage, mehrere Schnittstellen zu implementieren.
Assoziationen, wie die in unserem Beispiel lassen sich implementieren, indem wir im Konstruktor zwar einen Rang anlegen, diesen aber noch nicht initialisieren.
So kannst du auch bei mehrwertigen Assoziationen dasselbe mit einer ArrayList machen. Auch die anderen Verbindungen lassen sich auf diese oder ähnliche Weise implementieren.
Nun weißt du auch was die Unified Modeling Language ist und kannst dein gesamtes Wissen beim Programmieren anwenden. Viel Glück dabei!