JavaRush /Java-Blog /Random-DE /UML: von der Theorie zur Praxis
Viacheslav
Level 3

UML: von der Theorie zur Praxis

Veröffentlicht in der Gruppe Random-DE

Einführung

Ich denke, jeder hat in seiner Kindheit ein Sprichwort gehört wie „ Zweimal messen, einmal schneiden “. Beim Programmieren ist es genauso. Es ist immer besser, über die Implementierung nachzudenken, bevor Sie Zeit damit verbringen, sie auszuführen. Oftmals muss man bei der Implementierung Klassen erstellen und deren Interaktion erfinden. Und oft kann eine visuelle Darstellung davon helfen, das Problem auf die korrekteste Art und Weise zu lösen. Hier hilft uns UML .

Was ist UML?

Schaut man sich Bilder in Suchmaschinen an, wird einem klar, dass es bei UML um Diagramme, Pfeile und Quadrate geht. Wichtig ist, dass UML in Unified Modeling Language übersetzt wird . Das Wort Unified ist hier wichtig. Das heißt, unsere Bilder werden nicht nur von uns verstanden, sondern auch von anderen, die UML kennen. Es stellt sich heraus, dass dies eine internationale Sprache zum Zeichnen von Diagrammen ist.

UML: von der Theorie zur Praxis - 1

Wie Wikipedia sagt

UML ist eine grafische Beschreibungssprache für die Objektmodellierung in der Softwareentwicklung, Geschäftsprozessmodellierung, Systemdesign und Darstellung von Organisationsstrukturen.
Das Interessanteste, woran nicht jeder denkt oder es erkennt, ist, dass UML Spezifikationen hat. Darüber hinaus gibt es sogar eine UML2-Spezifikation. Weitere Details zur Spezifikation finden Sie auf der Website der Object Management Group . Tatsächlich entwickelt diese Gruppe UML-Spezifikationen. Interessant ist auch, dass sich UML nicht auf die Beschreibung der Struktur von Klassen beschränkt. Es gibt viele Arten von UML-Diagrammen. Eine kurze Beschreibung der Arten von UML-Diagrammen finden Sie in derselben Wikipedia: UML-Diagramme oder im Video von Timur Batyrshinov Rezension von UML-Diagrammen . UML wird auch häufig zur Beschreibung verschiedener Prozesse verwendet, zum Beispiel hier: Single Sign-On mit JWT . Zurück zur Verwendung von UML-Klassendiagrammen: Erwähnenswert ist das Buch „ Head First: Design Patterns“ , in dem die Muster durch dieselben UML-Diagramme veranschaulicht werden. Es stellt sich heraus, dass tatsächlich UML verwendet wird. Und es stellt sich heraus, dass das Wissen und Verständnis seiner Anwendung eine durchaus nützliche Fähigkeit ist.

Anwendung

Schauen wir uns an, wie Sie mit derselben UML aus der IDE arbeiten können. Nehmen wir IntelliJ Idea als IDE . Wenn wir IntelliJ Idea Ultimate verwenden , ist das Plugin „ UML-Unterstützung “ sofort installiert. Es ermöglicht Ihnen, automatisch schöne Klassendiagramme zu generieren. Mit Strg+N oder dem Menüpunkt „Navigieren“ -> „Klasse“ gelangen wir beispielsweise zur ArrayList- Klasse . Wählen Sie nun über das Kontextmenü für den Klassennamen „Diagramm“ -> „Diagramm-Popup anzeigen“. Als Ergebnis erhalten wir ein schönes Diagramm:
UML: von der Theorie zur Praxis - 2
Aber was ist, wenn Sie es selbst zeichnen möchten und nicht einmal die Ultimate-Version von Idea haben? Wenn wir die IntelliJ Idea Community Edition verwenden, haben wir keine andere Wahl. Dazu müssen Sie verstehen, wie ein solches UML-Diagramm aufgebaut ist. Zuerst müssen wir Graphviz installieren . Dies ist eine Reihe von Dienstprogrammen zur Visualisierung von Diagrammen. Es wird von dem Plugin verwendet, das wir verwenden werden. Nach der Installation müssen Sie das bin- Verzeichnis aus dem Graphviz- Installationsverzeichnis zu Ihrer PATH- Umgebungsvariablen hinzufügen . Wählen Sie anschließend in IntelliJ Idea im Menü Datei -> Einstellungen aus. Wählen Sie im Fenster „Einstellungen“ die Kategorie „Plugins“, klicken Sie auf die Schaltfläche „Repositorys durchsuchen“ und installieren Sie das PlantUML-Integrations -Plugin . Warum ist PlantUML so gut ? Es verwendet eine Graphbeschreibungssprache namens „ dot “, um UML zu beschreiben, und ist dadurch universeller, weil... Diese Sprache wird nicht nur von PlantUML verwendet. Darüber hinaus kann alles, was wir unten tun, nicht nur in der IDE, sondern auch im Onlinedienst planttext.com durchgeführt werden . Nach der Installation des PlantUML-Plugins können wir über „Datei“ -> „Neu“ UML-Diagramme erstellen. Erstellen wir ein Diagramm vom Typ „UML-Klasse“. Dabei wird automatisch eine Vorlage mit einem Beispiel generiert. Löschen wir seinen Inhalt und erstellen wir unseren eigenen, bewaffnet mit einem Artikel aus Habr: Klassenbeziehungen – von UML bis Code . Und um zu verstehen, wie man das im Text darstellt, nehmen wir das PlantUML-Handbuch: plantuml class-diagram . Ganz am Anfang steht eine Tabelle, die zeigt, wie Zusammenhänge zu beschreiben sind:
UML: von der Theorie zur Praxis - 3
Auch die Zusammenhänge selbst können wir uns hier ansehen: „ Beziehungen zwischen Klassen in UML. Beispiele .“ Basierend auf diesen Materialien beginnen wir mit der Erstellung unseres UML-Diagramms. Fügen wir den folgenden Inhalt hinzu, der die beiden Klassen beschreibt:

@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
Um das Ergebnis in Idea anzuzeigen, wählen Sie „Ansicht“ -> „Werkzeugfenster“ -> „PlantUML“. Wir erhalten lediglich zwei Quadrate, die Klassen darstellen. Wie wir wissen, implementieren diese beiden Klassen die List-Schnittstelle. Diese Klassenbeziehung wird Implementierung genannt. Um eine solche Verbindung darzustellen, verwenden Sie einen Pfeil mit einer gepunkteten Linie. Stellen wir es dar:
interface List
List <|.. ArrayList
List <|.. LinkedList
List- eine der Kinderklassen Collection. Das heißt, es erbt von Collection. Diesen Zusammenhang nennt man Generalisierung. Es sieht aus wie ein Pfeil mit einer regelmäßigen durchgehenden Linie. Stellen wir es dar:
interface Collection
Collection <|-- List
Fügen Sie für den folgenden Verbindungstyp der Klassenbeschreibung ArrayListeinen Eintrag über das private Elementarray des Pakets hinzu:
~Object[] elementData
Jetzt wollen wir zeigen, was ArrayListeinige Objekte enthält. In diesem Fall ist der Verbindungstyp Aggregation . Die Einheit ist in diesem Fall ArrayList, weil es enthält andere Objekte. Wir wählen die Aggregation, weil Objekte in der Liste ohne die Liste leben können: Sie sind keine integralen Bestandteile der Liste. Ihre Lebensdauer ist nicht an die Lebensdauer der Liste gebunden. Aggregat wird aus dem Lateinischen als „zusammengebaut“ übersetzt, also etwas, das aus etwas besteht. Im Leben gibt es beispielsweise eine Pumpeinheit, die aus einer Pumpe und einem Motor besteht. Das Gerät selbst kann zerlegt werden, wobei einige seiner Komponenten übrig bleiben. Zum Beispiel zum Verkauf oder zur Eingliederung in eine andere Einheit. So ist die Liste. Und dies wird in Form einer leeren Raute in der Nähe der Einheit und einer durchgehenden Linie ausgedrückt. Stellen wir es uns so vor:
class Object{
}
ArrayList o- Object
Nun wollen wir zeigen, dass ArrayListdie Klasse im Gegensatz zu Containern LinkedListenthält Node, die auf gespeicherte Daten verweisen. In diesem Fall Nodesind sie Teil ihrer selbst LinkedListund können nicht getrennt leben. Nodehandelt es sich dabei nicht um direkt gespeicherte Inhalte, sondern enthält lediglich einen Link darauf. Wenn wir beispielsweise etwas zu LinkedListeiner Zeile hinzufügen, fügen wir ein neues hinzu Node, das einen Link zu dieser Zeile sowie einen Link zum vorherigen und nächsten enthält Node. Diese Art der Kommunikation nennt man Komposition . Um ein Komposit (das aus Teilen besteht) anzuzeigen, wird eine farbige Raute gezeichnet, zu der eine durchgehende Linie führt. Schreiben wir dies nun als Textanzeige der Verbindung:
class Node{
}
LinkedList *-- Node
Und jetzt müssen wir lernen, wie man eine weitere wichtige Art von Beziehung darstellt – die Abhängigkeitsbeziehung . Es wird verwendet, wenn eine Klasse eine andere verwendet und die Klasse die verwendete Klasse nicht enthält und nicht ihr Nachkomme ist. LinkedListSie wissen zum Beispiel, ArrayListwie man erstellt ListIterator. Lassen Sie uns dies als Pfeile mit einer gepunkteten Linie darstellen:
class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
Nach all dem wird es so aussehen:
UML: von der Theorie zur Praxis - 4
Sie können so detailliert wie nötig darauf eingehen. Alle Bezeichnungen sind hier angegeben: „ PlantUML – Klassendiagramm “. Darüber hinaus ist das Zeichnen eines solchen Diagramms nichts Übernatürliches, und wenn Sie an Ihren Aufgaben arbeiten, können Sie es schnell von Hand zeichnen. Dadurch entwickeln Sie Ihre Fähigkeiten im Durchdenken von Anwendungsarchitekturen und können Fehler in der Klassenstruktur frühzeitig erkennen, anstatt erst den ganzen Tag damit verbracht zu haben, das falsche Modell zu implementieren. Ich denke, das ist ein guter Grund, es auszuprobieren? )
UML: von der Theorie zur Praxis - 5

Automatisierung

Es gibt verschiedene Möglichkeiten, PlantUML-Diagramme automatisch zu generieren. Idea verfügt beispielsweise über ein SketchIT- Plugin , das diese jedoch nicht ganz korrekt zeichnet. Beispielsweise wird die Implementierung von Schnittstellen falsch gezeichnet (als Vererbung angezeigt). Im Internet finden Sie auch Beispiele, wie Sie dies in den Build-Lebenszyklus Ihres Projekts integrieren können. Nehmen wir an, es gibt ein Beispiel für Maven , das uml-java-docklet verwendet . Um zu zeigen, wie das geht, verwenden wir Maven Archetype , um schnell ein Maven-Projekt zu erstellen. Führen wir den Befehl aus: mvn archetype:generate Wenn Sie aufgefordert werden, einen Filter auszuwählen ( Wählen Sie eine Zahl oder wenden Sie einen Filter an ), belassen Sie die Standardeinstellung, indem Sie einfach die Eingabetaste drücken. Dies wird immer „ maven-archetype-quickstart “ sein. Wählen Sie die neueste Version aus. Als nächstes beantworten wir die Fragen und schließen die Erstellung des Projekts ab:
UML: von der Theorie zur Praxis - 6
Da Maven nicht im Mittelpunkt dieses Artikels steht, finden Sie Antworten auf Ihre Maven-Fragen im Maven Users Center . Öffnen Sie im generierten Projekt die Projektbeschreibungsdatei pom.xml zur Bearbeitung . Kopieren wir den Inhalt aus der Beschreibung der Installation von UML-Java-Docklet . Das in der Beschreibung verwendete Artefakt konnte im Maven Central-Repository nicht gefunden werden. Aber bei mir hat es damit funktioniert: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0 . Das heißt, in dieser Beschreibung müssen Sie lediglich die Gruppen-ID von „ info.leadinglight “ durch „ com.chfourie “ ersetzen und die Version auf „ 1.0.0 “ setzen. Danach können wir diese Befehle in dem Verzeichnis ausführen, in dem sich die Datei pom.xmlmvn clean install befindet: und mvn javadoc:javadoc. Wenn wir nun die generierte Dokumentation öffnen (Explorer-Ziel\site\apidocs\index.html), sehen wir die UML-Diagramme. Die Umsetzung wird hier übrigens schon korrekt dargestellt)

Abschluss

Wie Sie sehen, können Sie mit UML die Struktur Ihrer Anwendung visualisieren. Darüber hinaus ist UML nicht nur darauf beschränkt. Mit UML können Sie verschiedene Prozesse in Ihrem Unternehmen beschreiben oder den Geschäftsprozess beschreiben, in dem die Funktion, die Sie schreiben, abläuft. Wie nützlich UML für Sie persönlich ist, bleibt Ihnen überlassen, aber es wird in jedem Fall nützlich sein, sich die Zeit zu nehmen, es genauer zu lesen. #Wjatscheslaw
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION