Objektorientierte Modellierung

Object-Oriented Modelling

Informatik Klasse 11 15 Aufgaben
OOPModellierenUML

Ein UML-Klassendiagramm beschreibt ein System als Bauplan — Klassen mit Assoziationen, Kardinalitäten, Vererbung und Polymorphie — vor der Implementierung und unabhängig von ihr. Die Kernkompetenz ist das Abwägen von Modellierungsalternativen, vor allem die saubere Trennung von Vererbung („ist ein") und Assoziation („hat ein / kennt ein"), die dokumentierte Verwechslungsstelle. Erst mit Überschreiben und dynamischer Bindung bekommen die Entwurfsentscheidungen im Diagramm ihre Bedeutung.

Voraussetzungen (1)

Leicht
Multiple Choice #1 15s ▶ Testen

Welches Klassenpaar steht in einer Vererbungsbeziehung?

  • ○ Kunde und Konto
  • ● Girokonto und Konto
  • ○ Buchung und Konto
Vererbung ist eine „ist-ein“-Beziehung: Ein Girokonto IST EIN Konto und übernimmt dessen Attribute und Methoden (z. B. kontostand, einzahlen()). Ein Kunde HAT ein Konto (Assoziation), und eine Buchung GEHÖRT ZU einem Konto (Ganzes-Teil-Beziehung) – beides ist keine Vererbung.
Wahr / Falsch #2 15s ▶ Testen

Ein UML-Klassendiagramm zeigt Klassen, ihre Attribute, Methoden und Beziehungen.

✓ Wahr
Richtig. UML-Klassendiagramme sind der Standard für die grafische Darstellung objektorientierter Modelle mit Klassen, Attributen, Methoden und Beziehungen.
Lückentext #3 15s ▶ Testen

Die Beziehung 'ein Hund IST EIN Tier' beschreibt in der OOP eine ___-Beziehung.

✓ Antwort: is-a
Die is-a-Beziehung wird durch Vererbung modelliert: Hund extends Tier. Im Gegensatz dazu beschreibt 'has-a' eine Komposition (ein Auto HAT EINEN Motor).
Multiple Choice #4 15s ▶ Testen

Was ist ein Konstruktor?

  • ○ Ein Bauarbeiter
  • ● Eine spezielle Methode, die beim Erzeugen eines Objekts automatisch aufgerufen wird
  • ○ Ein Attribut
  • ○ Eine Klasse ohne Methoden
Der Konstruktor initialisiert ein neues Objekt mit Startwerten. Er hat in vielen Sprachen den gleichen Namen wie die Klasse.
Mittel
Lückentext #1 20s ▶ Testen

Wenn eine Methode in der Unterklasse anders implementiert wird als in der Oberklasse, spricht man von ___.

✓ Antwort: Überschreiben
Überschreiben (Override) bedeutet, dass die Unterklasse eine geerbte Methode neu definiert. Z. B. überschreibt Hund die Methode sprich() mit 'Wau!'.
Multiple Choice #2 25s ▶ Testen

Was ist Polymorphie?

  • ○ Dass ein Programm mehrere Sprachen spricht
  • ● Dass Objekte verschiedener Klassen über die gleiche Schnittstelle angesprochen werden können
  • ○ Dass Code kopiert wird
  • ○ Dass Variablen ihren Typ ändern
Polymorphie ('Vielgestaltigkeit') erlaubt es, z. B. die Methode zeichne() für Kreis, Rechteck und Dreieck aufzurufen – jedes Objekt reagiert passend.
Multiple Choice #3 20s ▶ Testen

Was ist eine abstrakte Klasse?

  • ○ Eine Klasse ohne Code
  • ● Eine Klasse, von der keine Objekte erzeugt werden können und die als Vorlage dient
  • ○ Eine besonders schwierige Klasse
  • ○ Eine Klasse ohne Attribute
Abstrakte Klassen definieren eine Schnittstelle, die Unterklassen implementieren müssen. Man kann kein Objekt direkt von einer abstrakten Klasse erzeugen.
Multiple Choice #4 15s ▶ Testen

Klasse Thermometer: Welche Variante ist korrekt gekapselt?

  • ○ public double temp; public double getTemp()
  • ○ private double temp; private double getTemp()
  • ● private double temp; public double getTemp()
Kapselung heißt: Der interne Zustand ist verborgen (private) und nur über öffentliche Methoden zugänglich. Ein public-Attribut kann jeder direkt ändern; sind auch die Methoden private, kommt niemand mehr an den Wert heran.
Wahr / Falsch #5 15s ▶ Testen

Ein Interface (Schnittstelle) enthält nur Methodensignaturen, keine Implementierung.

✓ Wahr
Richtig. Ein Interface definiert, WAS eine Klasse können muss, aber nicht WIE. Die implementierende Klasse liefert den konkreten Code.
Multiple Choice #6 20s ▶ Testen

Welches Klassenpaar steht in einer Kompositionsbeziehung?

  • ○ Playlist und Song
  • ● Bestellung und Bestellposition
  • ○ Hörbuch und Medium
Bei einer Komposition existiert das Teil nicht ohne das Ganze: Wird die Bestellung gelöscht, verschwinden ihre Positionen mit. Ein Song existiert auch ohne Playlist (Aggregation). Hörbuch und Medium bilden keine Teil-Ganzes-Beziehung, sondern eine Vererbung (ein Hörbuch IST EIN Medium).
Multiple Choice #7 20s ▶ Testen

In einem UML-Klassendiagramm steht ein Minus (−) vor einem Attribut. Was bedeutet das?

  • ○ Das Attribut ist negativ
  • ● Das Attribut ist private (nur innerhalb der Klasse sichtbar)
  • ○ Das Attribut wurde gelöscht
  • ○ Das Attribut ist optional
UML-Sichtbarkeit: − = private, + = public, # = protected. Private Attribute sind nur innerhalb der eigenen Klasse zugänglich.
Sortieren #8 30s ▶ Testen

Ordne die OOP-Prinzipien in logischer Reihenfolge beim Modellieren.

✓ Antwort: Klassen und Attribute identifizieren, Vererbungshierarchie festlegen, Methoden und Schnittstellen definieren, Kapselung anwenden (private/public)
Beim OO-Entwurf: zuerst Objekte der realen Welt als Klassen modellieren, dann Gemeinsamkeiten durch Vererbung abstrahieren, dann Verhalten festlegen und schließlich Zugriff regeln.
Wahr / Falsch #9 15s ▶ Testen

Mehrfachvererbung (eine Klasse erbt von mehreren Oberklassen) ist in Java erlaubt.

✓ Falsch
Falsch. Java erlaubt keine Mehrfachvererbung von Klassen (Diamond-Problem). Stattdessen kann eine Klasse mehrere Interfaces implementieren.
Multiple Choice #10 20s ▶ Testen

Welches UML-Diagramm stellt den zeitlichen Ablauf von Methodenaufrufen zwischen Objekten dar?

  • ○ Klassendiagramm
  • ○ Aktivitätsdiagramm
  • ● Sequenzdiagramm
  • ○ Zustandsdiagramm
Das Sequenzdiagramm zeigt die zeitliche Abfolge von Nachrichten (Methodenaufrufen) zwischen Objekten als Pfeile auf einer Zeitachse.
Schwer
Multiple Choice #1 25s ▶ Testen

Was ist das Prinzip 'Program to an interface, not an implementation'?

  • ○ Man soll nur Interfaces programmieren
  • ● Man soll Variablen mit dem abstraktesten Typ deklarieren, nicht mit konkreten Klassen
  • ○ Man soll keine Klassen verwenden
  • ○ Interfaces sind überflüssig
Dieses Prinzip fördert Flexibilität: List statt ArrayList deklarieren. So kann die Implementierung leicht ausgetauscht werden, ohne den restlichen Code zu ändern.