Luisengymnasium

Darstellungsformen: Struktogramm und Entwurfsdiagramm

Lernziele

Nach diesem Kapitel kannst du:

  • ein Struktogramm lesen und die Bausteine Sequenz, Verzweigung und Schleife identifizieren,
  • ein Struktogramm in Java-Code übersetzen und umgekehrt,
  • den Unterschied zwischen Entwurfs- und Implementationsdiagramm erklären,
  • ein Objektdiagramm zu Code mit Referenzen zeichnen,
  • ein Implementationsdiagramm in ein Entwurfsdiagramm überführen.

Leitfrage: Warum planen wir zuerst die Struktur (Struktogramm, Entwurfsdiagramm), bevor wir Code schreiben?

Voraussetzungen

Hinweis

Dieses Kapitel baut auf Kapitel 01–03 auf. Du solltest Referenzen, Aliasing, null-Checks und Arrays von Referenzen sicher beherrschen. Zusätzlich: Grundlegende UML-Klassendiagramme aus der EF.

Zwischenstopp: Strukturen sichtbar machen

Wir haben jetzt mehrere Dinge kennengelernt, die man im Code nicht direkt sieht: Referenzen, Aliasing, null, Speicheradressen und Arrays von Referenzen.

Wenn man diese Dinge nur im Kopf behält, wird es schnell unübersichtlich. Dieses Kapitel ist deshalb eine bewusste Pause vom reinen Implementieren: Wir lernen, Strukturen so darzustellen, dass man sie planen, erklären und überprüfen kann.


Phase 1: Einstieg

Hinweis

Retrieval-Check:

  1. Was ist ein Klassendiagramm und wofür nutzt du es?
  2. Nenne die drei Grundbausteine eines Algorithmus.

Phase 2: Konzeptaufbau

2.1 Struktogramm — Algorithmus vor Syntax

Ein Struktogramm zeigt die logische Form eines Programms, bevor du dich mit Java-Syntax beschäftigst:

  • Was passiert nacheinander? (Sequenz)
  • Wo wird entschieden? (Verzweigung)
  • Was wird wiederholt? (Schleife)

Worked Example: Prüfprogramm

StruktoLab lädt…

Übersetzung in Java:

Für den ersten Test ersetzt der Java-Code die Eingabe durch den festen Wert 67. Prüfe anschließend auch 49 und 50: Welche Ausgabe erwartest du jeweils?

IDE lädt…

Schleifen-Beispiel:

StruktoLab lädt…

2.2 Entwurfsdiagramm vs. Implementationsdiagramm

Im bisherigen Kurs hast du vollständige Klassendiagramme gesehen (mit allen Datentypen, allen Methoden). Das ist ein Implementationsdiagramm. Ein Entwurfsdiagramm ist bewusst abstrakter.

Entwurfsdiagramm — Was + Warum (für Fachexperten):

Mermaid-Diagramm
Mermaid-Diagramm wird geladen…

Implementationsdiagramm — Wie (für Programmierer):

Mermaid-Diagramm
Mermaid-Diagramm wird geladen…
Hinweis

Unterschied: Das Entwurfsdiagramm zeigt Klassen und ihre Verantwortungen — ohne Datentypen, ohne Getter/Setter, ohne Implementierungsdetails. Das Implementationsdiagramm zeigt alles.

Achtung

Häufiger Fehler (F10): Viele Schüler denken, das Entwurfsdiagramm sei „unvollständig" oder „falsch". Es ist bewusst abstrakt — ein Fachexperte braucht keine Datentypen, sondern will verstehen, welche Klassen es gibt und wie sie zusammenarbeiten.

Sicherung: Drei Bausteine

Struktogramm-Bausteine
BausteinIm StruktogrammIn Java
SequenzBlöcke untereinanderAnweisungen nacheinander
VerzweigungGeteilter Block (links/rechts)if ... else
SchleifeBlock mit Rahmen (Bedingung oben)while / for
Entwurf vs. Implementierung
EntwurfsdiagrammImplementationsdiagramm
ZeigtKlassen + VerantwortungenAlles (Datentypen, Getter/Setter, ...)
ZielgruppeFachexperteProgrammierer
DetailgradAbstrakt (WAS + WARUM)Konkret (WIE)

Ruhige Sicherung: Welche Darstellung beantwortet welche Frage?

Tipp

Nutze Darstellungen nicht als Schmuck, sondern als Werkzeug:

Wenn du wissen willst ...Nutze ...
Welche Klassen und Beziehungen es gibtKlassendiagramm
Was ein Algorithmus Schritt für Schritt machtStruktogramm
Welche konkreten Objekte gerade existierenObjektdiagramm
Welche Verantwortung eine Klasse im System hatEntwurfsdiagramm
Wie der konkrete Code später aussehen sollImplementationsdiagramm

Die Entlastung in diesem Kapitel besteht darin, nicht alles gleichzeitig im Kopf behalten zu müssen.

2.3 Objektdiagramm — Konkreter Schnappschuss

Ein Objektdiagramm zeigt konkrete Objekte mit ihren aktuellen Attributwerten zu einem bestimmten Zeitpunkt. Es ist ein „Foto" des Speichers.

Pilot p1 = new Pilot("Kirk");
Raumschiff rs1 = new Raumschiff();
rs1.setPilot(p1);
Mermaid-Diagramm
Mermaid-Diagramm wird geladen…

Im Gegensatz zum Klassendiagramm (das die Struktur zeigt) zeigt das Objektdiagramm den Zustand — mit konkreten Werten und Referenzpfeilen.

2.4 Mermaid — Diagramme als Code

In diesem Kurs kannst du Klassendiagramme und Objektdiagramme direkt als Mermaid-Code schreiben. Mermaid ist eine Text-Notation, die automatisch in Diagramme umgewandelt wird — wie eine Programmiersprache für Diagramme.


Phase 3: Üben

Hinweis

Retrieval-Check:

  1. Was ist der Unterschied zwischen Entwurfs- und Implementationsdiagramm?
  2. Was passiert bei flotte[0].setGroesse(100) nach new Raumschiff[3]? (Rückbezug Kap. 03)

A1: Struktogramm → Java (Pflicht)

Übersetze das folgende Struktogramm in Java-Code:

StruktoLab lädt…

IDE lädt…

A2: Java → Struktogramm (Pflicht)

Erstelle ein Struktogramm für den folgenden Code:

int max = arr[0];
for (int i = 1; i < arr.length; i++)
{
    if (arr[i] > max)
    {
        max = arr[i];
    }
}
System.out.println("Maximum: " + max);

StruktoLab lädt…

A3: Objektdiagramm zeichnen (Pflicht)

Zeichne ein Objektdiagramm zum folgenden Code. Zeige alle Objekte und Referenzen.

Pilot p1 = new Pilot("Kirk");
Raumschiff rs1 = new Raumschiff();
rs1.setPilot(p1);
Pilot p2 = rs1.getPilot();

Wie viele Objekte? Wie viele Referenzen zeigen auf den Piloten?

Excalidraw lädt…

A4: Implementationsdiagramm → Entwurfsdiagramm (Vertiefung)

Gegeben ist das Implementationsdiagramm:

Mermaid-Diagramm
Mermaid-Diagramm wird geladen…

Erstelle daraus ein Entwurfsdiagramm: Streiche alles, was ein Fachexperte (nicht Programmierer) nicht braucht. Behalte nur Klassen, zentrale Verantwortungen und Beziehungen.

Textabgabe

A5: Eigener Entwurf (Vertiefung)

Erstelle ein Entwurfsdiagramm für eine Bibliothek, die Bücher verwaltet. Überlege:

  • Welche Klassen brauchst du?
  • Welche Klasse hat welche Verantwortung?
  • Wo sind Referenz-Beziehungen?

Schreibe nur die Klassen, zentralen Methoden und Beziehungen auf — keine Datentypen.

Textabgabe
Durchgängiges Projekt: Online-Shop

Diese Aufgabe ist Teil des Online-Shop-Projekts, das sich durch den Kurs Lineare Datenstrukturen 1 zieht. In den bisherigen Kapiteln hast du Produkt, Kunde, Warenkorb und Lager implementiert. Jetzt stellst du den bisherigen Shop als Entwurfsdiagramm dar.

Projektstand Online-Shop

Der Shop bekommt jetzt Übersicht. Produkt, Kunde, Warenkorb und Lager werden als Struktur sichtbar, sodass du Beziehungen planen und prüfen kannst.

Die Grenze bleibt: Sichtbarkeit löst noch nicht das Problem, dass das Lager feste Plätze hat.

A6: Online-Shop — Entwurfsdiagramm (Vertiefung)

In den bisherigen Kapiteln hast du folgende Klassen für den Online-Shop entwickelt:

  • Produkt — hat einen Namen und einen Preis
  • Kunde — hat einen Namen und ein Lieblingsprodukt
  • Warenkorb — hat ein aktuelles Produkt, kann es wechseln
  • Lager — verwaltet ein Array von Produkten (feste Größe 10), kann ein-/auslagern

Erstelle ein Entwurfsdiagramm für den bisherigen Online-Shop. Zeige:

  • Alle vier Klassen mit ihren zentralen Verantwortungen (keine Datentypen, keine Getter/Setter)
  • Die Referenz-Beziehungen zwischen den Klassen (Pfeile)
Textabgabe

Phase 4: Vernetzung

Heute gelöst: Du hast nicht einfach neue Diagrammarten gelernt. Du hast Werkzeuge bekommen, um unsichtbare Strukturen sichtbar zu machen: Algorithmen, Objektzustände, Klassenbeziehungen und Verantwortlichkeiten.

Noch offen: Sichtbarkeit löst noch nicht das Grundproblem von Arrays. Arrays haben feste Plätze. Wenn Daten ständig wachsen, schrumpfen oder in eine bestimmte Reihenfolge gebracht werden müssen, wird das starr.

Nächster Schritt: Jetzt wechseln wir von festen Plätzen zu verketteten Objekten. Die erste dynamische Datenstruktur ist die Queue: hinten einfügen, vorne entnehmen, keine Verschieberei.

Alle Darstellungsformen im Überblick:

FormZeigtWann nutzen
KlassendiagrammKlassen, Attribute, Methoden, BeziehungenProgrammstruktur planen
ObjektdiagrammKonkrete Objekte mit Attributwerten zu einem ZeitpunktCode-Verhalten verstehen, Referenzen nachvollziehen
StruktogrammAlgorithmus-Ablauf (Sequenz, Verzweigung, Schleife)Algorithmus planen, bevor Java geschrieben wird
EntwurfsdiagrammKlassen + Verantwortungen (abstrakt)Fachliches Konzept kommunizieren
ImplementationsdiagrammAlles inkl. Datentypen, Methoden-SignaturenKonkreten Code planen

Reflexion

Hinweis

Beantworte die Leitfrage: Warum planen wir zuerst die Struktur, bevor wir Code schreiben?

Textabgabe

Selbstdiagnose

  • Ich kann ein Struktogramm lesen und in Java übersetzen.
  • Ich kann den Unterschied Entwurfs-/Implementationsdiagramm erklären.
  • Ich kann ein Objektdiagramm zu Code mit Referenzen zeichnen.