Informatik

Implementationsdiagramm

Ein Implementationsdiagramm (englisch implementation class diagram) ist ein Klassendiagramm, das ein Entwurfsdiagramm präzisiert und sich an der verwendeten Programmiersprache orientiert. Es beantwortet die Frage Wie sieht der Quelltext aus?

Der Prüfstein: Aus einem Implementationsdiagramm lässt sich das Klassengerüst ohne Rückfragen schreiben – und umgekehrt.

Die Notation folgt den Vorgaben für das Zentralabitur in Nordrhein-Westfalen.

Der Klassenkasten

Ein Klassenkasten hat drei Felder: Name, Attribute, Methoden.

classDiagram
    class Wurmglied {
        -xKoordinate: int
        -yKoordinate: int
        -richtung: int
        +Wurmglied(pX: int, pY: int, pRichtung: int)
        +rueckeVor()
        +gibRichtung() int
        +setzeRichtung(pRichtung: int)
        +gibNaechstesX() int
        +gibNaechstesY() int
    }
Zeichen Bedeutung in Java
- nur in dieser Klasse sichtbar private
# auch in den Unterklassen sichtbar protected
+ überall sichtbar public

Geschrieben wird

  • ein Attribut als sichtbarkeit name: typ,
  • eine Methode als sichtbarkeit name(parameter: typ): rückgabetyp.

Der Datentyp steht also immer hinter dem Doppelpunkt – beim Attribut, beim Parameter und beim Rückgabewert.

Ein Konstruktor heißt wie die Klasse und hat keinen Rückgabetyp. Eine Methode ohne Rückgabewert bekommt auch keinen: Bei ihr endet die Zeile hinter der Klammer, das void aus dem Quelltext taucht im Diagramm nicht auf.

Beziehungen

Statt Multiplizitäten stehen hier konkrete Bezeichner – die Namen der Attribute, durch die die Assoziationen umgesetzt sind, samt ihrer Sichtbarkeit.

classDiagram
    class Wurm {
        +Wurm()
        +vor()
        +dreheLinks()
        +dreheRechts()
        +gibKopfRichtung() int
        +gibKopfX() int
        +gibKopfY() int
    }
    class List~Wurmglied~ {
    }
    class Wurmglied {
        -xKoordinate: int
        -yKoordinate: int
        -richtung: int
        +Wurmglied(pX: int, pY: int, pRichtung: int)
        +rueckeVor()
    }
    class Wurmkopf {
        +Wurmkopf(pX: int, pY: int, pRichtung: int)
        +dreheLinks()
        +dreheRechts()
    }
    Wurm --> List~Wurmglied~ : -glieder
    Wurm --> Wurmkopf : -kopf
    Wurmglied <|-- Wurmkopf

Bei den für das Zentralabitur dokumentierten Klassen – List, Stack, Queue, BinaryTree, … – wird auf die Angabe der Attribute und Methoden verzichtet; der Kasten bleibt leer. Der Typparameter sagt, welche Inhaltsobjekte dort verwaltet werden.

Besondere Klassen

Was Wie es gezeichnet wird
abstrakte Klasse {abstract} rechtsbündig unter dem Klassennamen
abstrakte Methode kursiv – handschriftlich mit einer Wellenlinie unterschlängelt
Klassenmethode, Klassenattribut unterstrichen
Schnittstelle <<interface>> über dem Klassennamen
Vererbung durchgezogene Linie, geschlossene leere Pfeilspitze
Umsetzung einer Schnittstelle gestrichelte Linie, geschlossene leere Pfeilspitze
generische Klasse Typparameter im gestrichelten Kasten oben rechts
classDiagram
    class Spielelement {
        <<abstract>>
        +gibXKoordinate() int*
        +gibYKoordinate() int*
    }
    class ComparableContent~ContentType~ {
        <<interface>>
        +isEqual(pInhalt: ContentType) boolean
        +isLess(pInhalt: ContentType) boolean
        +isGreater(pInhalt: ContentType) boolean
    }
    class Spielstand {
        -datum: String
        -name: String
        -punktestand: int
        +Spielstand(pDatum: String, pName: String, pPunkte: int)
        +isEqual(pAnderer: Spielstand) boolean
    }
    ComparableContent~ContentType~ <|.. Spielstand
Implementationsdiagramm

Teilbare URL erstellen

Abschnitte auswählen