Was ist ein Klassendiagramm?

In der Softwaretechnik ist ein Unified Modeling Language (UML) Klassendiagramm ist ein statisches Strukturdiagramm das die Struktur eines Systems beschreibt, indem es seine Klassen, deren Attribute, Operationen (oder Methoden) und Beziehungen zwischen Objekten zeigt.

Class diagram in UML diagram hierarchy

Zwecke von Klassendiagrammen

  1. Anzeigen der statischen Struktur von Klassifizierern im System
  2. Bietet eine grundlegende Notation für andere UML-Strukturdiagramme
  3. Sehr nützlich für Entwickler und andere Teammitglieder
  4. Business-Analysten können Klassendiagramme verwenden, um Systeme aus einer geschäftlichen Perspektive zu modellieren

UML-Klassendiagramme bestehen aus:

  • Eine Menge von Klassen
  • Eine Menge von Beziehungen zwischen Klassen

Was ist eine Klasse?

Eine Beschreibung einer Gruppe von Objekten mit ähnlichen Rollen, einschließlich:

  • Strukturelle Merkmale (Attribute): definieren, was Objekte der Klasse „wissen“
    • Stellt den Zustand des Objekts dar
    • Beschreibt die Struktur oder statischen Eigenschaften der Klasse
  • Verhaltensmerkmale (Operationen): definieren, was Objekte der Klasse „können“
    • Definieren, wie Objekte interagieren
    • Beschreiben das Verhalten oder dynamischen Eigenschaften der Klasse

Klassensymbolik

Die Klassensymbolik besteht aus drei Teilen:

  1. Klassenname
    • Der Klassenname erscheint im ersten Fach.
  2. Klassenattribute
    • Attribute werden im zweiten Fach angezeigt.
    • Der Typ wird nach einem Doppelpunkt angezeigt.
    • Attribute werden den Mitgliedsvariablen (Datenmember) im Code zugeordnet.
  3. Klassenoperationen (Methoden)
    • Operationen werden im dritten Fach angezeigt. Sie stellen Dienstleistungen dar, die die Klasse bereitstellt.
    • Der Rückgabetyp erscheint nach einem Doppelpunkt am Ende der Methodensignatur.
    • Parameter-Typen erscheinen nach einem Doppelpunkt hinter dem Parameter-Namen.
    • Operationen werden den Klassenmethoden im Code zugeordnet.

Simple class

Graphische Darstellung der Klasse MeineKlasse wie oben gezeigt:

  • MeineKlasse hat 3 Attribute und 3 Operationen
  • Der Parameter p3 von op2 ist vom Typ int
  • op2 gibt einen Float zurück
  • op3 gibt einen Zeiger (gekennzeichnet durch *) auf Class6 zurück

Klassenbeziehungen

Eine Klasse kann an einer oder mehreren Beziehungen zu anderen Klassen beteiligt sein. Beziehungen können folgende Arten haben: (Siehe das Bild rechts für graphische Darstellungen).

Beziehungstyp Diagramm
Vererbung (oder Generalisierung):

  • Stellt eine „ist-ein“-Beziehung dar.
  • Abstrakte Klassennamen werden kursiv dargestellt.
  • SubClass1 und SubClass2 sind Spezialisierungen von SuperClass.
  • Feste Linie mit einer offenen Pfeilspitze, die von der Unterklasse zur Oberklasse zeigt.
Inheritance
Einfache Assoziation:

  • Ein struktureller Link zwischen zwei gleichwertigen Klassen.
  • Eine Assoziation besteht zwischen Class1 und Class2.
  • Feste Linie, die die beiden Klassen verbindet.
Simple association
Aggregation:

  • Ein besonderer Typ der Assoziation, der eine „Teil-von“-Beziehung darstellt.
  • Class2 ist ein Teil von Class1.
  • Mehrere Instanzen von Class2 (gekennzeichnet durch *) können mit Class1 assoziiert werden.
  • Class1- und Class2-Objekte haben unabhängige Lebenszyklen.
  • Offenes Diamant-Symbol am Ende der zusammengesetzten Klasse.
Aggregation
Komposition:

  • Ein besonderer Typ der Aggregation, bei dem die Teile zerstört werden, wenn das Ganze zerstört wird.
  • Class2-Objekte leben und sterben mit Class1.
  • Class2 kann nicht unabhängig existieren.
  • Festes Diamant-Symbol am Ende der zusammengesetzten Klasse.
Composition
Abhängigkeit:

  • Besteht zwischen zwei Klassen, wenn eine Änderung in der Definition einer Klasse eine Änderung in der anderen verursachen kann (aber nicht umgekehrt).
  • Class1 hängt von Class2 ab.
  • Gestrichelte Linie mit einem offenen Pfeilkopf.
Dependency

Beziehungsnamen

  • Beziehungsnamen werden in der Mitte der Assoziationslinie geschrieben.
  • Gute Beziehungsnamen sind sinnvoll, wenn man sie laut vorliest:
      • „Jedes Tabellenkalkulationsdokument enthält einige Zellen“

    <li> Ausdruck ergibt einen Wert“

  • Sie haben oft einen kleinen Pfeil, der die Leserichtung anzeigt, z. B. Ausdruck ergibt Wert, aber Wert ergibt nicht Ausdruck.kleinen Pfeil, der die Leserichtung anzeigt, z. B. Ausdruck ergibt Wert, aber Wert ergibt nicht Ausdruck.

Relationship name

Beziehung – Rollen

  • Rolle definiert den Zweck der Richtung in einer Assoziation.
  • Rolle wird am Ende der Assoziationslinie geschrieben und beschreibt die Rolle, die eine Klasse in dieser Beziehung spielt.
    • Z. B. ist Cell mit Expression verbunden. Die Art der Beziehung ist, dass Expression die Formel der Zelle ist.

Sichtbarkeit von Klassenmitgliedern

In der objektorientierten Gestaltung wird die Sichtbarkeit von Attributen und Operationen dargestellt. UML definiert vier Arten der Sichtbarkeit: öffentlich, geschützt, privat, und Paket.

Symbole +, -, # und ~ vor Attribut- und Operationsnamen zeigen die Sichtbarkeit an:

  • + zeigt ein öffentliches Attribut oder eine öffentliche Operation an
  • – zeigt ein privates Attribut oder eine private Operation an
  • # zeigt ein geschütztes Attribut oder eine geschützte Operation an
  • ~ zeigt ein Paketattribut oder eine Paketoperation an

Beispiel für Klassensichtbarkeit

Simple class

Im obigen Beispiel:

  • attribute1 und op1 von MyClassName sind öffentlich
  • attribute3 und op3 sind geschützt
  • attribute2 und op2 sind privat

Zugriffsberechtigungen für verschiedene Klassenmitglieder sind unten dargestellt:

Zugriffsebene Öffentlich (+) Privat (-) Geschützt (#) Paket (~)
Mitglieder derselben Klasse Ja Ja Ja Ja
Mitglieder abgeleiteter Klassen Ja Nein Ja Ja
Mitglieder einer anderen Klasse Ja Nein Nein Nur dasselbe Paket

Vielfachheit

Die Vielfachheit gibt an, wie viele Objekte einer Klasse an einer Beziehung teilnehmen. Sie kann wie folgt ausgedrückt werden:

  • Genau 1 – 1
  • Null oder eine – 0..1
  • Viele – 0..* oder *
  • Eine oder mehrere – 1..*
  • Genau angegebene Anzahl – z. B. 3..4 oder 6
  • Komplexe Beziehung – z. B. 0..1, 3..4, 6* bedeutet jede Anzahl außer 2 oder 5

Beispiel für Vielfachheit

  • Anforderung: Ein Student kann an vielen Kursen teilnehmen, und viele Studenten können an einem Kurs teilnehmen.
  • Im folgenden Beispiel beschreibt die Klassendiagramm (links) beschreibt das statische Modell der oben genannten Anforderung, während das Objektdiagramm (rechts) eine Momentaufnahme der Kursanmeldung (Instanz des Klassendiagramms) für die Kurse Softwaretechnik und Datenbankverwaltung zeigt.

Object diagram

Aggregationsbeispiel – Computer und Komponenten

  • Aggregation ist ein Sonderfall der Assoziation, der eine „enthält“-Hierarchie darstellt.
  • Aggregation ist die Elternklasse, Komponente ist die Kindklasse.

Aggregation example

Vererbungsbeispiel – Zellklassifikation

  • Vererbung ist ein weiterer Sonderfall der Assoziation, der eine „Art von“-Hierarchie darstellt.
  • Vererbung vereinfacht das Analysemodell durch Einführung einer Taxonomie.
  • Unterklassen erben Attribute und Operationen von der Oberklasse.

Inheritance example

Klassendiagramm – Beispiel für ein Diagramm-Tool

Klassendiagramme können Anmerkungen enthalten, die an Klassen oder Beziehungen angehängt sind. Anmerkungen werden in Grau angezeigt.

Class diagram example

Aus dem obigen Beispiel können wir das Diagramm wie folgt interpretieren:

  1. Shape ist eine abstrakte Klasse. Sie wird kursiv dargestellt.
  2. Shape ist eine Oberklasse. Circle, Rectangle und Polygon erben von Shape. Mit anderen Worten: Ein Circle ist ein Shape. Dies ist eine Generalisierungs-/Vererbungsbeziehung.
  3. Es besteht eine Assoziation zwischen DialogBox und DataController.
  4. Shape ist Teil von Window. Dies ist eine Aggregationsbeziehung. Shape kann ohne Window existieren.
  5. Point ist Teil von Circle. Dies ist eine Zusammensetzungsbeziehung. Point kann ohne Circle nicht existieren.
  6. Window hängt von Event ab. Event hängt jedoch nicht von Window ab.
  7. Die Attribute von Circle sind radius und center. Es ist eine konkrete Klasse.
  8. Die Methoden von Circle sind area(), circum(), setCenter() und setRadius().
  9. Der Parameter radius in Circle ist vom Typ float.
  10. Die Methode area() in Circle gibt einen double-Wert zurück.
  11. Attribute und Methoden von Rectangle sind versteckt. Einige andere Klassen im Diagramm verbergen ebenfalls ihre Attribute und Methoden.

Umgang mit komplexen Systemen – Mehrere oder ein einziges Klassendiagramm?

Beim Modellieren großer Systeme oder großer Geschäftsbereiche müssen viele Entitäten berücksichtigt werden. Sollten wir mehrere oder ein einziges Klassendiagramm verwenden? Die Antwort lautet:

  • Es ist besser, mehrere Klassendiagramme zu verwenden, anstatt jedes Entität und ihre Beziehungen auf einem einzigen Diagramm zu modellieren.
  • Die Aufteilung des Systems in mehrere Klassendiagramme macht es leichter zu verstehen, insbesondere wenn jedes Diagramm eine visuelle Darstellung eines bestimmten Teils des Systems ist.

Perspektive von Klassendiagrammen im Softwareentwicklungslebenszyklus

Klassendiagramme können in verschiedenen Phasen des Softwareentwicklungslebenszyklus (SDLC), und typischerweise werden drei unterschiedliche Detailstufen (Perspektiven) schrittweise modelliert:

Konzeptionelle Perspektive: Das Diagramm wird als Beschreibung von Dingen in der realen Welt interpretiert. Wenn Sie von einer konzeptionellen Perspektive ausgehen, zeichnen Sie ein Diagramm, das Konzepte im untersuchten Bereich darstellt. Diese Konzepte stehen natürlich in Beziehung zu den Klassen, die sie implementieren. Diese Perspektive wird als sprachunabhängig betrachtet.
Spezifikationsperspektive: Das Diagramm wird als Beschreibung von Softwareabstraktionen oder Komponenten mit Spezifikationen und Schnittstellen interpretiert, ohne sich auf eine bestimmte Implementierung festzulegen. Wenn Sie von einer Spezifikationsperspektive ausgehen, untersuchen Sie Software-Schnittstellen statt Implementierungen.
Implementationsperspektive: Das Diagramm wird als Beschreibung einer bestimmten Technologie und SpracheImplementierung von Software interpretiert. Wenn Sie von einer Implementationsperspektive ausgehen, untersuchen Sie die Software-Implementierung.

Versuchen Sie jetzt, ein UML-Klassendiagramm zu zeichnen

Sie haben gelernt, was ein Klassendiagramm ist und wie man es zeichnet. Es ist Zeit, Ihr eigenes zu zeichnen. Holen Sie sich die Visual Paradigm Community Edition, ein kostenloses UML-Tool, und erstellen Sie Ihr Klassendiagramm mit dem kostenlosen Klassendiagramm-Tool. Es ist einfach zu bedienen und intuitiv.
Kostenlos herunterladen

 

Kommentar hinterlassen