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 kompakt
Einordnung und Lernziele des Themenfelds Q1.1
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
- Objekt und Klasse: Objekt als Instanz, Klasse als Bauplan mit Attributen, Methoden und Konstruktor.
- Objektmengen: Felder und Listen von Objekten unter Nutzung geeigneter Standardbibliotheksklassen.
- Kapselung: Geheimnisprinzip, Sichtbarkeit sowie get-/set-Methoden für kontrollierten Zugriff.
- UML-Modellierung: Klassendiagramm als Beschreibungsmittel inkl. Assoziation und Aggregation.
Erhöhtes Niveau (Leistungskurs)
- Vererbung: gemeinsame Struktur zentralisieren und fachlich spezialisieren.
- Abstraktion: abstrakte Klassen für nicht direkt instanziierbare Oberbegriffe einsetzen.
- Polymorphie: unterschiedliche Unterklassen über gemeinsame Typen einheitlich nutzen.
Einstieg: Die Schulbibliothek als fachliches Problem
Anforderungen sichtbar machen, bevor modelliert wird
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?
Im Bibliothekssystem tauchen konkrete Medien wie Tschick, Die Welle oder Krabat zunächst als einzelne Objekte mit eigenen Zustandswerten auf.
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.
Konkrete Medienobjekte als Ausgangspunkt
Konkrete Instanzen zeigen Ähnlichkeiten und Unterschiede
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.
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.
Im Diagramm sind die drei gezeigten Medienobjekt-Karten konkrete Instanzen mit jeweils eigenen Werten.
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.
Vom Objekt zur Klasse und naive Klassenbildung
Klassen als Baupläne – und warum der erste Entwurf noch nicht reicht
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.
Die Klassen sind als Baupläne klarer als reine Objekte, erzeugen aber noch Codeduplizierung in Attributen und Methoden.
Die Methoden getTitel() und istVerfuegbar() tauchen in mehreren Medienklassen auf und zeigen die wiederholte Basislogik.
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.
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.
Einfache Klassenbeziehungen auf Grundniveau
Assoziation und Aggregation einzeln und explizit einführen
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
class Benutzer {
private String name;
public void leiheAus(Medium medium) {
System.out.println(name + " leiht " + medium.getTitel());
}
}
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
class Ausleihkonto {
private final List<Medium> ausgelieheneMedien = new ArrayList<>();
public void add(Medium medium) { ausgelieheneMedien.add(medium); }
public List<Medium> getAusgelieheneMedien() { return ausgelieheneMedien; }
}
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 und Sichtbarkeit
Geheimnisprinzip vor Vererbung stabil verankern
Geheimnisprinzip vor Vererbung stabil verankern
Modellentscheidung
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.
Redundanz und Vererbung
Gemeinsamkeiten zentralisieren, Unterschiede erhalten
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;
}
5) Kurze Erklärung: Die Unterklasse bekommt die gemeinsame Grundstruktur der Oberklasse und ergänzt nur ihre Besonderheiten.
Hierarchie, Verhalten und Objektmengen
Zusammenhängende Ausbauphase: Struktur → Verhalten → Nutzung
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.
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.
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));
Objektmengen nutzen damit direkt die aufgebaute Hierarchie: Ein gemeinsamer Obertyp Medium trägt verschiedene konkrete Medienobjekte in einem Modell.
Polymorphie als anspruchsvollerer Spezialfall
Gleicher Obertyp, unterschiedliches Laufzeitverhalten
Gleicher Obertyp, unterschiedliches Laufzeitverhalten
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());
}
Medium werden in der passenden Unterklasse ausgeführt.Didaktischer Gewinn: Der Code bleibt bei der Verarbeitung von Objektmengen allgemein (Medium), das konkrete Laufzeitverhalten kommt aber aus Buch, Film oder Hoerbuch.
Abstrakte Klasse als Verfeinerung
Oberklasse fachlich präzisieren, direkte Instanzierung vermeiden
Oberklasse fachlich präzisieren, direkte Instanzierung vermeiden
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 als spätere Spezialform
Gemeinsame Fähigkeit statt gemeinsame Herkunft
Gemeinsame Fähigkeit statt gemeinsame Herkunft
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.
Zusammenführung und Systemrückblick
Vom Objekt zur erweiterten Modellstruktur
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).
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-Anbindung für Q1.1
Begriffe konsistent verlinken und Ergänzungen vorbereiten
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.