UML für die Kleinen: Klassendiagramm





Ave, Coder! Ein UML-Klassendiagramm veranschaulicht die Struktur eines Systems und beschreibt Klassen, ihre Attribute, Methoden und Beziehungen zwischen Objekten.



Selbst die kleinsten Kinder wissen, dass UML aus der einheitlichen Modellierungssprache stammt, wenn auch in russischer Sprache - eine einheitliche Modellierungssprache, die, wie die Legende sagt, entwickelt wurde, als ernsthafte Onkel und Tanten es endlich satt hatten, in einer Vielzahl von Kreisen, Strichen und Wolken zu schwimmen.



Für diejenigen, die zu faul sind, um zu lesen:



Die Hauptfigur







Erinnern wir uns zunächst daran, was eine Klasse ist. Kurz gesagt, eine Klasse ist eine Vorlage zum Erstellen von Objekten, die Anfangszustandswerte bereitstellt: Initialisierung von Variablenfeldern und Implementierung des Verhaltens von Feldern und Methoden.



Im Wesentlichen beschreibt eine Klasse, was ein Objekt sein kann.







Eine Klasse repräsentiert ein Konzept, das Zustand (Attribute) und Verhalten (Methoden) beschreibt. Jedes Attribut hat seinen eigenen Typ, jede Methode hat ihre eigene Signatur, aber im Klassendiagramm müssen nur die Klassennamen eingegeben werden, was logisch ist - selbst die besten Hellseher der Welt werden nicht verstehen können, was dieses unbenannte Quadrat ist und worauf es sich allgemein bezieht.



Der Klassenname wird in der obersten Abteilung geschrieben, gefolgt von den Klassenattributen, deren Typen nach dem Doppelpunkt geschrieben werden, und schließlich gibt es in der unteren Abteilung Methoden.



Der Typ, den eine Methode zurückgeben kann, wird nach dem Doppelpunkt ganz am Ende der Methodensignatur geschrieben. Bereichsmodifikatoren werden vor Klassenattributen und -methoden angezeigt.







Jeder Parameter in einer Methode kann auch eine Beschreibung der Richtung der Methode enthalten: in, out, inout.

In dieser Abbildung verwendet Methode1 p1 als Eingabe und der Wert von p1 wird irgendwie von der Methode verwendet, und die Methode ändert p1 nicht.



Methode2 verwendet p2 als E / A-Parameter, der Wert von p2 wird irgendwie von der Methode verwendet und nimmt die Ausgabe der Methode, aber die Methode selbst kann auch p2 ändern.



Methode3 verwendet p3 als Ausgabeparameter, dh der Parameter dient als Repository für den Ausgabewert der Methode.



Perspektiven zu Klassendiagrammen im Softwareentwicklungszyklus



Wir können Klassendiagramme in verschiedenen Phasen des Softwareentwicklungslebenszyklus verwenden und Klassendiagramme in der Regel schrittweise aus drei verschiedenen Perspektiven modellieren, während wir die Detailebenen durchlaufen.







Konzeptionelle Perspektive ist, wenn Diagramme so interpretiert werden, dass sie Dinge in der realen Welt beschreiben. Wenn wir also eine konzeptionelle Perspektive einnehmen, zeichnen wir ein Diagramm, das die Konzepte im Untersuchungsgebiet darstellt. Diese Konzepte beziehen sich auf die Klassen, die sie implementieren. Die konzeptionelle Perspektive wird als sprachunabhängig angesehen.







Eine Spezifikationsperspektive besteht darin, dass Diagramme so interpretiert werden, dass sie Abstraktionen von Software oder Komponenten mit Spezifikationen und Schnittstellen beschreiben, jedoch nicht an eine bestimmte Implementierung gebunden sind.







Eine Implementierungsperspektive besteht darin, dass Diagramme so interpretiert werden, dass sie Softwareimplementierungen in einer bestimmten Technologie und Sprache beschreiben.

Wenn Sie also eine Implementierungsperspektive einnehmen, betrachten Sie die Softwareimplementierung.



Beziehungstypen



Als nächstes werde ich sechs Haupttypen der Klassenbeziehungsnotation vorstellen, die in UML-Diagrammen am häufigsten vorkommen.



Verband.





Wie Verknüpfungen, die Objekte verbinden, verknüpfen Assoziationen Klassen. Damit Objekte verbunden werden können, muss eine Zuordnung zwischen ihnen bestehen.



Wenn wir davon ausgehen, dass zwei Klassen miteinander interagieren, sollte zwischen ihnen eine durchgehende Verbindungslinie gezogen werden, die die Zuordnung im Diagramm angibt. Oft können wir auch ein Verb sehen, das seine Bedeutung vermittelt.



Darüber hinaus können wir auch die Multiplizität angeben, dh die Anzahl der Objekte, die an der Beziehung teilnehmen können. Die Multiplizität wird als durch Kommas getrennte Liste von Intervallen angegeben, in denen jedes Intervall als Minimum-Maximum dargestellt wird.



Zum Beispiel kann ein Schüler von vielen Lehrern lernen.

Aber ein Lehrer kann viele Schüler unterrichten.



Vererbung







Oder manchmal wird es auch Verallgemeinerung genannt.



Wie der Name schon sagt, ist dies eine schematische Darstellung der Beziehung zwischen einer Elternklasse und ihren Nachkommen. Der hohle Pfeil zeigt immer auf die übergeordnete Klasse.

Ein klassisches Beispiel für Vererbung: die Quadrat-, Rechteck- und Kreisklassen, die von der übergeordneten Figurenklasse erben.



Wir haben das Recht, die Vererbung für jede Klasse separat darzustellen und zu kombinieren.

Wenn die Vererbung von einer abstrakten Klasse stammt, wird der Name einer solchen übergeordneten Klasse kursiv geschrieben.



Implementierung







Normalerweise bedeutet dies die Beziehung zwischen einer Schnittstelle und Objekten, die diese Schnittstelle implementieren.



Beispielsweise verfügt die Eigentümerschnittstelle über Methoden zum Kaufen und Verkaufen von Privateigentum, und die Beziehung der Personen- und Unternehmensklassen, die diese Schnittstelle implementieren, wird im Diagramm als gestrichelte Linie mit einem Pfeil angezeigt, der zur Schnittstelle zeigt.



Abhängigkeit Ein







Objekt einer Klasse kann in seiner Methode ein Objekt einer anderen Klasse verwenden.

Wenn das Objekt nicht im Klassenfeld gespeichert ist, wird diese Art von Interklassenbeziehung als Abhängigkeit modelliert.



Die Abhängigkeit ist in der Tat ein Sonderfall der Assoziation zweier Klassen. In diesem Fall führen Änderungen in einer Klasse unaufhaltsam zu Änderungen in der anderen.



Beispielsweise verfügt die Person-Klasse über eine hasRead-Methode mit dem Bucheingabeparameter, die true zurückgibt, wenn die Person beispielsweise ein Buch gelesen hat.



Die Abhängigkeit wird durch eine gestrichelte Linie mit einem Pfeil in Richtung der Klasse angezeigt, von der beispielsweise Methoden einer anderen Klasse abhängen.



Aggregation







Eine spezielle Art von Beziehung zwischen Klassen, bei denen eine Klasse Teil einer anderen ist.



Zum Beispiel besteht der Arbeitsplatz eines Programmierers aus einem Stuhl, einem Tisch, einem Computer und einem Ventilator. Wenn jedoch die Klasse "Arbeitsplatz" gelöscht wird, haben wir einfach alle diese Klassen nur separat.



Die Aggregation wird als durchgehende Linie mit einem hohlen Diamanten dargestellt, der von den Klassen, die Teil einer Klasse sind, zur Aggregatorklasse gerichtet ist.



Komposition







Tatsächlich wird eine Art Aggregation, nur in diesem Fall, Klassen, die Teil einer anderen Klasse sind, zerstört, wenn die Aggregatorklasse zerstört wird.



Zum Beispiel besteht unser Körper aus Organen, aber für sich genommen sind sie nicht lebensfähig.



Die Zusammensetzung wird ähnlich wie bei der Aggregation angegeben, diesmal ist der Diamant jedoch vollständig gefüllt.



Finalchka



Die UML kann für Anfänger sehr nützlich sein, die sich im Stadium des Verstehens befinden, „was wohin und von was geerbt werden soll“. Wie unsere englischsprachigen Kollegen sagen: „Es hilft zu sehen, wie der ganze Wald hinter Baumstämmen aussieht“.



Bevor Sie mit Ihrem, wenn auch kleinen, aber beeindruckenden Projekt beginnen, sollten Sie den Code daher nicht sofort abrufen. Entwerfen Sie zunächst Ihre Anwendungsarchitektur in UML.



Ave!



All Articles