Qualifikationsphase Q1 · Themenfeld Q1.1

Q1.1 – Objektorientierte Modellierung als Systemaufbau

Ein durchgehendes Schulbibliotheks-/Mediathek-Modell: von konkreten Medienobjekten bis zu abstrakten Typen und Interfaces.

Die Schulbibliothek möchte ihren Medienbestand digital erfassen: Schülerinnen und Schüler sollen im Katalog Titel, Verfügbarkeit und medientypspezifische Informationen abrufen können.

Diese Seite entwickelt deshalb ein einziges Modell schrittweise weiter – nicht als lose Theorieblöcke, sondern als zusammenhängenden Konstruktionsprozess.

Diagramme und Codeausschnitte sind so aufgebaut, dass jede Modellentscheidung direkt am Bibliotheks- und Mediathek-System nachvollziehbar bleibt.

Kerncurriculum
Kerncurriculum kompakt
Einordnung und Lernziele des Themenfelds Q1.1

A) Allgemeine Einordnung

Q1.1 führt in die objektorientierte Modellierung ein: Lernende entwickeln aus konkreten Medienobjekten ein tragfähiges Klassensystem und verbinden fachliche Anforderungen mit UML-gestützter Strukturarbeit.

B) Anforderungen nach Kursniveau

Grundlegendes Niveau
Erhöhtes Niveau (Leistungskurs)
Einstieg
Einstieg: Die Schulbibliothek als fachliches Problem
Anforderungen sichtbar machen, bevor modelliert wird

Problem / fachliche Situation

Die Schulbibliothek möchte Medien digital erfassen. Im Katalog sollen Lernende zu jedem Medium den Titel, die Inventarnummer, die Verfügbarkeit und je nach Medientyp weitere Informationen sehen können.

Modellentscheidung

Wir entwickeln ein durchgehendes Medienmodell für Buch, Film, Hörbuch und Zeitschrift. Die Leitfrage lautet: Welche Eigenschaften sind allen Medien gemeinsam, welche unterscheiden Buch, Film, Hörbuch und Zeitschrift, und welche Zuständigkeit hat jede Klasse im späteren System?

Definition: Objekt
Ein Objekt ist eine konkrete Instanz einer Klasse, also eines Klassentyps. Es besitzt konkrete Attributwerte und kann Methoden ausführen.

Im Bibliothekssystem tauchen konkrete Medien wie Tschick, Die Welle oder Krabat zunächst als einzelne Objekte mit eigenen Zustandswerten auf.

Definition: Klasse
Eine Klasse ist ein Bauplan und selbst definierter Objektdatentyp. Objekte dieses Typs besitzen die in der Klasse beschriebenen Attribute und Methoden.

Aus E3 kennen Lernende Variablen mit Datentypen. Neben elementaren Datentypen werden in Q1.1 Klassen als selbst definierte Objektdatentypen verstanden: Eine Variable vom Typ Medium kann auf ein konkretes Medium-Objekt verweisen. Dieses Objekt besitzt Attributwerte und kann Methoden ausführen.

Die spätere Klassenbildung entsteht hier aus der Beobachtung, dass viele Objekte im Diagramm dieselbe Grundstruktur teilen.

Damit wird die Schulbibliothek nicht Kulisse, sondern Treiber aller Modellschritte. Aus dem Beispiel entsteht eine klare Entwicklungslogik: Objektbeschreibung, Klassenbildung, Redundanzanalyse, Beziehungen, Kapselung, Vererbung, Polymorphie und Abstraktion.

Objekte
Konkrete Medienobjekte als Ausgangspunkt
Konkrete Instanzen zeigen Ähnlichkeiten und Unterschiede

Problem / fachliche Situation

Einzelne Medien sind leicht zu beschreiben. Für das Gesamtsystem bleibt aber offen, wie viele ähnliche Instanzen konsistent verwaltet werden sollen.

Modellentscheidung

Wir beginnen mit konkreten Objektbeschreibungen und markieren die wiederkehrenden Kerndaten als Vorbereitung für eine belastbare Klassenbildung.

Diagramm: Objektnahe Startstruktur in der Schulbibliothek.
Medienobjekt titel = "Tschick" inventarNummer = "B-2048" verfuegbar = true Medienobjekt titel = "Die Welle" inventarNummer = "F-0312" verfuegbar = false Medienobjekt titel = "Krabat" inventarNummer = "H-0177" verfuegbar = true Medien enthalten ähnliche Kerndaten

Die Diagramm-Sicht macht den Übergang vom Einzelfall zur Typbildung sichtbar: Gleiche Muster wiederholen sich über mehrere Medien hinweg.

Diese Klassenkarten nutzen dieselbe Klassenbox- und Typografie-Logik wie der UML-Klassendiagramm-Editor: Klassenname oben, getrennte Bereiche für Strukturinhalte und die gleiche visuelle Leselogik.

Definition: Instanz
Eine Instanz ist ein konkret erzeugtes Objekt einer Klasse.

Im Diagramm sind die drei gezeigten Medienobjekt-Karten konkrete Instanzen mit jeweils eigenen Werten.

Definition: Attribut
Ein Attribut beschreibt einen Teil des Zustands eines Objekts. In der Klasse wird festgelegt, welche Attribute Objekte dieses Typs besitzen. Im einzelnen Objekt haben diese Attribute konkrete Werte, zum Beispiel titel, inventarNummer und verfuegbar.

Die Einträge im Medienmodell zeigen damit nicht nur Namen, sondern konkrete Zustandswerte der einzelnen Medienobjekte.

Die Objektansicht macht die Bibliothek anschaulich, liefert aber noch keinen stabilen Bauplan. Weil sich Muster wiederholen, wechseln wir jetzt in die Klassenperspektive.

Klassen
Vom Objekt zur Klasse und naive Klassenbildung
Klassen als Baupläne – und warum der erste Entwurf noch nicht reicht

Problem / fachliche Situation

Wie entstehen Klassen fachlich sinnvoll aus ähnlichen Objekten – und was passiert, wenn jede Medienart als eigene, isolierte Klasse modelliert wird?

Modellentscheidung

Wir bilden zunächst getrennte Klassen (Buch, Film, Hoerbuch, Zeitschrift) und prüfen diese Struktur bewusst kritisch auf Redundanz und Zuständigkeit.

Diagramm: Erste Klassenlandschaft ohne Vererbungsbeziehungen.
Buch - titel : String - inventarNummer : String - verfuegbar : boolean - autor : String - seitenzahl : int + getTitel() : String + istVerfuegbar() : boolean Film - titel : String - inventarNummer : String - verfuegbar : boolean - laufzeitMinuten : int - fsk : int + getTitel() : String + istVerfuegbar() : boolean Hoerbuch - titel : String - inventarNummer : String - verfuegbar : boolean - sprecher : String - dauerMinuten : int + getTitel() : String + istVerfuegbar() : boolean Zeitschrift - titel : String - inventarNummer : String - verfuegbar : boolean - ausgabe : String + getTitel() : String + istVerfuegbar() : boolean Titel, Inventarnummer, Verfügbarkeit und Basis-Methoden tauchen immer wieder auf.

Die Klassen sind als Baupläne klarer als reine Objekte, erzeugen aber noch Codeduplizierung in Attributen und Methoden.

Definition: Methode
In E3 ist eine Methode zunächst eine benannte Teilaufgabe. In Q1.1 beschreibt eine Methode Verhalten, das Objekte einer Klasse ausführen können; Methoden können auf Attributwerte zugreifen oder sie verändern.

Die Methoden getTitel() und istVerfuegbar() tauchen in mehreren Medienklassen auf und zeigen die wiederholte Basislogik.

Definition: Konstruktor
Ein Konstruktor ist ein spezieller Erzeugungs- und Initialisierungsmechanismus einer Klasse. Er wird beim Erzeugen eines Objekts aufgerufen und legt dessen Anfangszustand fest.

Wenn in der Mediathek eine neue Buch- oder Film-Instanz angelegt wird, übernimmt der Konstruktor die Initialisierung von Titel, Inventarnummer, Verfügbarkeit und medientypspezifischen Daten.

Ein UML-Klassendiagramm zeigt Klassen mit Attributen, Methoden und Beziehungen in einer strukturierten Übersicht.

Genau diese Sicht macht im gezeigten Diagramm die doppelt modellierten Basisattribute sofort als Entwurfsproblem sichtbar.

Konvention wie im UML-Werkzeug: Sichtbarkeit wird direkt vor Attributen/Methoden notiert (- privat, # protected, + öffentlich). So ist im Diagramm sofort lesbar, welche Elemente intern bleiben und welche von außen nutzbar sind.

Die Klassenbildung ist ein Fortschritt gegenüber Einzelobjekten, aber noch nicht wirtschaftlich: gleiche Grundlogik liegt verteilt in vielen Klassen. Genau daraus entsteht der Bedarf nach einer gemeinsamen Oberklasse.

Beziehungen
Einfache Klassenbeziehungen auf Grundniveau
Assoziation und Aggregation einzeln und explizit einführen

Problem / fachliche Situation

Klassen existieren nicht isoliert: Benutzerinnen, Ausleihkonten und Medien stehen in fachlichen Beziehungen. Diese Grundlagen sollen vor Vererbung geklärt werden.

A) Assoziation

Definition: Assoziation
Eine Assoziation beschreibt eine fachliche Beziehung zwischen zwei Klassen, ohne dass eine Klasse Teil der anderen sein muss.
class Benutzer {
  private String name;

  public void leiheAus(Medium medium) {
    System.out.println(name + " leiht " + medium.getTitel());
  }
}
UML-Konvention Assoziation: Linie zwischen Klassen, bei gerichteter Assoziation mit Pfeil zur Zielklasse.
Benutzer- name : String+ leiheAus(m : Medium) Medium# titel : String+ getTitel() : String leiht / waehlt 10..*

Damit wird die Assoziation fachlich konkret: Benutzer kennt ausgewählte Medium-Objekte für eine Ausleihe oder Vormerkung, ohne eine Besitzstruktur zu modellieren.

B) Aggregation

Definition: Aggregation
Aggregation ist eine spezielle Assoziation, bei der ein Ganzes aus Teilen besteht, die grundsätzlich auch unabhängig existieren können.
class Ausleihkonto {
  private final List<Medium> ausgelieheneMedien = new ArrayList<>();

  public void add(Medium medium) { ausgelieheneMedien.add(medium); }
  public List<Medium> getAusgelieheneMedien() { return ausgelieheneMedien; }
}
UML-Konvention Aggregation: Leere Raute am „Ganzen“, Verbindungslinie zum Teil.
Ausleihkonto- medien : List<Medium>+ add(m : Medium) Medium# titel : String+ getTitel() : String enthaelt 10..*

Das Ausleihkonto aggregiert Medien bzw. Ausleihen als Teile einer Nutzungssituation. Die Medium-Objekte können grundsätzlich unabhängig vom Ausleihkonto im Bestand existieren.

Aggregation meint hier die UML-Ganzes-Teil-Beziehung, nicht SQL-Aggregatfunktionen.

Kapselung
Kapselung und Sichtbarkeit
Geheimnisprinzip vor Vererbung stabil verankern

Modellentscheidung

Definition: Sichtbarkeit
Sichtbarkeit legt fest, von wo aus auf Attribute und Methoden zugegriffen werden darf.
Definition: Geheimnisprinzip
Das Geheimnisprinzip schützt den inneren Zustand einer Klasse, damit Änderungen kontrolliert über definierte Schnittstellen erfolgen.
public class Medium {
  private String titel;
  private String inventarNummer;
  private boolean verfuegbar;

  public String getTitel() { return titel; }
  public String getInventarNummer() { return inventarNummer; }
  public boolean istVerfuegbar() { return verfuegbar; }

  public void setVerfuegbar(boolean neuerStatus) {
    verfuegbar = neuerStatus;
  }
}

private schützt Attribute, öffentliche Methoden bilden die kontrollierte Schnittstelle. Getter und Setter können Zugriff erlauben und prüfen: Der Titel kann gelesen werden, die Verfügbarkeit wird aber kontrolliert über eine Methode geändert, statt direkt von außen manipuliert zu werden.

Vererbung
Redundanz und Vererbung
Gemeinsamkeiten zentralisieren, Unterschiede erhalten

1) Redundanzproblem

Änderungen an gemeinsamen Daten und Methoden müssten sonst in vielen Klassen parallel gepflegt werden. Das erhöht Fehleranfälligkeit und Wartungsaufwand.

2) Codebeispiel

public class Medium {
  protected String titel;
  protected String inventarNummer;
  protected boolean verfuegbar;

  public String getTitel() { return titel; }
}

public class Buch extends Medium {
  private String autor;
  private int seitenzahl;
}
3) Definition: Vererbung
Vererbung überträgt gemeinsame Attribute und Methoden von allgemeineren Klassen auf spezialisierte Klassen.
4) UML-Konvention Vererbung: Geschlossener Dreieckspfeil, der immer zur Oberklasse zeigt.
Medium (Oberklasse)# titel : String# inventarNummer : String# verfuegbar : boolean+ getTitel() : String Buch Film Hoerbuch Zeitschrift Lesart: „ist ein Medium“ → Pfeilspitze zeigt auf die Oberklasse

5) Kurze Erklärung: Die Unterklasse bekommt die gemeinsame Grundstruktur der Oberklasse und ergänzt nur ihre Besonderheiten.

6) Definition: Oberklasse
Eine Oberklasse bündelt gemeinsame Strukturanteile, die mehreren Unterklassen zur Verfügung stehen.
7) Definition: Unterklasse
Eine Unterklasse übernimmt Eigenschaften der Oberklasse und ergänzt oder präzisiert sie fachlich.
Hierarchie
Hierarchie, Verhalten und Objektmengen
Zusammenhängende Ausbauphase: Struktur → Verhalten → Nutzung

A) Einfache Medienhierarchie

Wir präzisieren die Hierarchie: Medium bündelt gemeinsame Struktur, konkrete Medienarten wie Buch, Film, Hoerbuch und Zeitschrift ergänzen ihre speziellen Attribute und Verhalten.

UML-Konvention in Hierarchien: Jede Spezialisierungsstufe zeigt mit geschlossenem Dreieckspfeil auf ihre allgemeinere Klasse.
Medium# titel : String# inventarNummer : String# verfuegbar : boolean+ istVerfuegbar() : boolean+ beschreibung() : String Buch- autor : String+ beschreibung() : String Film- fsk : int+ beschreibung() : String Hoerbuch- sprecher : String+ beschreibung() : String Zeitschrift- ausgabe : String+ beschreibung() : String
Definition: Generalisierung
Generalisierung fasst gemeinsame Merkmale mehrerer Klassen in einer übergeordneten Klasse zusammen.
Definition: Spezialisierung
Spezialisierung ergänzt eine allgemeinere Klasse um zusätzliche Merkmale für einen engeren fachlichen Fall.

B) Verhalten in Hierarchien

public class Buch extends Medium {
  private String autor;

  @Override
  public String beschreibung() {
    return titel + " von " + autor;
  }

  @Override
  public int berechneLeihfrist() { return 28; }
}

public class Film extends Medium {
  private int laufzeitMinuten;
  private int fsk;

  @Override
  public String beschreibung() {
    return titel + " (" + laufzeitMinuten + " Minuten, FSK " + fsk + ")";
  }

  @Override
  public int berechneLeihfrist() { return 7; }
}

Methodenvererbung: Grundmethoden kommen aus Medium und stehen allen Unterklassen zur Verfügung.

Definition: Überschreiben
Überschreiben bedeutet, dass eine Unterklasse eine geerbte Methode mit einer eigenen fachlich passenden Implementierung ersetzt.

Fachlicher Unterschied: Vererbung sichert gemeinsame Basislogik, Überschreiben liefert je Unterklasse das passende Spezialverhalten.

C) Felder und Listen von Objekten

Medium[] neuerwerbungen = {
  new Buch("Tschick", "B-2048", "Wolfgang Herrndorf", 256),
  new Film("Die Welle", "F-0312", 107, 12),
  new Hoerbuch("Krabat", "H-0177", "Ulrich Noethen", 360)
}; // feste Länge
List<Medium> ausleihen = new ArrayList<>();                                  // dynamische Länge
ausleihen.add(new Buch("Tschick", "B-2048", "Wolfgang Herrndorf", 256));
ausleihen.add(new Film("Die Welle", "F-0312", 107, 12));
Definition: Feld von Objekten
Ein Feld von Objekten speichert gleichartige Objektreferenzen in einer festen, bei der Erzeugung definierten Länge.
Definition: Liste von Objekten
Eine Liste von Objekten verwaltet Objektreferenzen in veränderbarer Länge und eignet sich für dynamische Bestände.

Objektmengen nutzen damit direkt die aufgebaute Hierarchie: Ein gemeinsamer Obertyp Medium trägt verschiedene konkrete Medienobjekte in einem Modell.

Polymorphie
Polymorphie als anspruchsvollerer Spezialfall
Gleicher Obertyp, unterschiedliches Laufzeitverhalten
Definition: Polymorphie
Polymorphie erlaubt es, unterschiedliche Unterklassen über einen gemeinsamen Obertyp einheitlich zu verwenden.
List<Medium> medien = List.of(
  new Buch("Tschick", "B-2048", "Wolfgang Herrndorf", 256),
  new Film("Die Welle", "F-0312", 107, 12),
  new Hoerbuch("Krabat", "H-0177", "Ulrich Noethen", 360)
);
for (Medium medium : medien) {
  System.out.println(medium.beschreibung());
}
UML-Konvention / Lesart: Ein Obertyp mit mehreren Unterklassen; Aufrufe über Medium werden in der passenden Unterklasse ausgeführt.
Medium+ beschreibung() : String Buch Film Hoerbuch

Didaktischer Gewinn: Der Code bleibt bei der Verarbeitung von Objektmengen allgemein (Medium), das konkrete Laufzeitverhalten kommt aber aus Buch, Film oder Hoerbuch.

Abstrakte Klasse
Abstrakte Klasse als Verfeinerung
Oberklasse fachlich präzisieren, direkte Instanzierung vermeiden
Definition: abstrakte Klasse
Eine abstrakte Klasse liefert gemeinsame Struktur und kann abstrakte Methoden vorgeben, ohne selbst direkt instanziiert zu werden.
public abstract class Medium {
  protected String titel;
  protected String inventarNummer;
  protected boolean verfuegbar;

  public abstract int berechneLeihfrist();
  public abstract String beschreibung();
}

UML-Konvention: Abstrakte Klasse in kursiver Schrift oder mit <<abstract>>; abstrakte Methoden ebenfalls kursiv.

Abgrenzung zur allgemeinen Vererbung: Vererbung allein beschreibt die Strukturweitergabe. Die abstrakte Klasse legt zusätzlich verbindlich fest, dass eine Methode wie beschreibung() erst in konkreten Medienarten implementiert werden muss.

Interface
Interface als spätere Spezialform
Gemeinsame Fähigkeit statt gemeinsame Herkunft
Definition: Interface
Ein Interface beschreibt eine Menge von Methoden als gemeinsame Fähigkeit, unabhängig von der Vererbungshierarchie.
public interface KatalogEintrag {
  String katalogText();
  String detailTitel();
}

public class Buch extends Medium implements KatalogEintrag {
  private String autor;

  @Override
  public String katalogText() { return titel + " | " + autor; }

  @Override
  public String detailTitel() { return titel; }
}

UML-Konvention: Kennzeichnung mit <<interface>>, Umsetzung über gestrichelte Linie mit Pfeil zur Schnittstelle.

Fachlicher Unterschied zur Vererbung: Vererbung modelliert gemeinsame Herkunft („ist-eine“-Beziehung), ein Interface modelliert gemeinsame Fähigkeit („kann-etwas“-Beziehung) über verschiedene Klassen hinweg.

Rückblick
Zusammenführung und Systemrückblick
Vom Objekt zur erweiterten Modellstruktur

Der Lernweg folgt nun der gestuften Progression: Grundlagen (Objekt/Klasse) → erste Strukturbeziehungen (Assoziation/Aggregation) → Vererbung und Hierarchie → Verhalten und Objektmengen → Spezialfälle (Polymorphie, abstrakte Klasse, Interface).

Diagramm: Vollständiges UML-Endmodell Q1.1.
<<abstract>> Medium# titel : String# inventarNummer : String# verfuegbar : boolean+ getTitel() : String+ istVerfuegbar() : boolean+ berechneLeihfrist() : int+ beschreibung() : String <<interface>> KatalogEintrag+ katalogText() : String+ detailTitel() : String Buch- autor : String- seitenzahl : int+ beschreibung() : String+ katalogText() : String Film- laufzeitMinuten : int- fsk : int+ beschreibung() : String+ katalogText() : String Hoerbuch- sprecher : String- dauerMinuten : int+ beschreibung() : String+ katalogText() : String Zeitschrift- ausgabe : String+ beschreibung() : String+ katalogText() : String Ausleihkonto- medien : List<Medium>+ add(m : Medium) Benutzer+ leiheAus(m : Medium) implements enthaelt leiht

Arbeitsbewegung im UML-Werkzeug: Fachobjekte identifizieren, Klassen bilden, Attribute und Methoden bestimmen, Konstruktor formulieren, Beziehungen modellieren, Sichtbarkeit prüfen, Java-Skizze aus dem UML-Modell ableiten und die Modellentscheidung kurz begründen.

Glossar
Glossar-Anbindung für Q1.1
Begriffe konsistent verlinken und Ergänzungen vorbereiten

Bereits angebundene Glossarbegriffe

Diese Seite nutzt verlinkte Begriffe aus dem Glossar konsistent im Modellverlauf des Schulbibliotheks- und Mediathek-Beispiels: Objekt, Klasse, Attribut, Methode, Geheimnisprinzip, Sichtbarkeit, UML-Klassendiagramm, Vererbung, Generalisierung, Assoziation und Aggregation.

Für Glossar-Erweiterung vorgemerkt

Die folgenden Kapitelbegriffe sind in Q1.1 bereits fachlich vorbereitet und bleiben unabhängig vom konkreten Medienbeispiel relevant: Instanz, Konstruktor, Oberklasse, Unterklasse, Spezialisierung, Überschreiben, Polymorphie, Interface/Schnittstelle, Feld von Objekten, Liste von Objekten, Typ, Hierarchie und Zuständigkeit.

Hinweis zur Progression: Die Begriffspaare Feld/Liste von Objekten sowie Assoziation/Aggregation werden im fachlichen Hauptverlauf eingeführt und am Medienmodell konkretisiert.