Untersuche ein Programm, in dem verschiedene Artikel ihre Informationen ausgeben. Starte es zuerst mit der grünen Playtaste und bearbeite dann die Teile der Reihe nach.
Die Online-IDE wird aus dem include-Ordner dieses Auftritts geladen. Dafür ist eine Internetverbindung erforderlich.
Abschlussquiz
Kreuze alle richtigen Antworten an. In manchen Fragen sind mehrere Antworten richtig.
Übersicht: alle Teilaufgaben und Ergebnisse
Hier stehen alle Arbeitsaufträge dieser Aufgabe mit ihren Ergebnissen – gut geeignet für die gemeinsame Besprechung.
Einstieg: Programm beobachten
Starte das Programm mit der grünen Playtaste und vergleiche die sieben Ausgaben. Kreuze alle Beobachtungen an, die stimmen.
- Richtiges Ergebnis
- Alle Objekte stehen in Artikel-Variablen und werden mit zeigeInfos() ausgegeben, trotzdem gibt jedes seine eigenen Informationen aus.
a) Funktionsweise des Hauptprogramms
Beschreibe kurz, wie das Hauptprogramm funktioniert: Was passiert in den Zeilen mit new und was beim Aufruf von zeigeInfos()?
- Richtiges Ergebnis
- Das Hauptprogramm erzeugt mit new nacheinander sieben Objekte verschiedener Klassen und übergibt den Konstruktoren Name, Preis, Gewicht und weitere Werte. Jedes Objekt wird in einer Variablen vom Typ Artikel gespeichert. Danach ruft das Programm für jedes Objekt zeigeInfos() auf; die Ausgabe hängt von der Klasse des Objekts ab.
b) Vererbungshierarchie
Ordne die Klassen in die Vererbungshierarchie ein. Ziehe jede Klasse in ein Feld oder tippe erst die Klasse und dann das Feld an. Zeichne auf dem Arbeitsblatt das vollständige Klassendiagramm aller sechs Klassen mit Attributen (mit Datentyp) und Methoden. Konstruktoren musst du noch nicht eintragen.
- Richtiges Ergebnis
- Artikel ist die oberste Klasse. Smartphone, Computer und Kaffeemaschine erben von Artikel, Laptop und Tower von Computer.
- Artikel: name: String, preis: float, gewicht: float | zeigeInfos(): void
- Smartphone: klappbar: boolean | zeigeInfos(): void
- Computer: speicher: int | zeigeInfos(): void
- Kaffeemaschine: inhalt: float | zeigeInfos(): void
- Laptop: klappbar: boolean, akku: int | zeigeInfos(): void
- Tower: breite: int | zeigeInfos(): void
c) Polymorphie im Programm
Beschreibe, an welchen Stellen im Hauptprogramm Polymorphie auftritt und was dort beim Aufruf von zeigeInfos() passiert. Nenne die Befehle, die bei Vererbung und bei Polymorphie verwendet werden.
- Richtiges Ergebnis
- Polymorphie tritt bei smart1, smart2, pc1, laptop1, tower1 und coffee1 auf: Eine Artikel-Variable verweist auf ein Objekt einer Unterklasse, und zeigeInfos() führt die Methode dieser Unterklasse aus. Vererbung: extends und super(…). Überschreiben für Polymorphie: gleiche Methode in der Unterklasse, gekennzeichnet mit @Override.
Abschlussquiz – Frage 1
Welche Aussagen zu class Laptop extends Computer stimmen?
- Richtiges Ergebnis
- Laptop ist eine Unterklasse von Computer. · Ein Laptop-Objekt besitzt auch die Attribute name, preis, gewicht und speicher. · Ein Laptop ist ein Artikel.
Abschlussquiz – Frage 2
Was bewirkt super(_name, _preis, _gewicht); im Konstruktor von Computer?
- Richtiges Ergebnis
- Der Konstruktor der Oberklasse Artikel wird aufgerufen. · Die geerbten Attribute name, preis und gewicht bekommen ihre Werte.
Abschlussquiz – Frage 3
Bei welchen Anweisungen verweist eine Variable vom Typ der Oberklasse auf ein Objekt einer Unterklasse?
- Richtiges Ergebnis
Artikel smart1 = new Smartphone("Sumsang G300", 1950, 0.300, true);·Artikel tower1 = new Tower("GAMER 1337", 2995, 25, 64, 32);
Abschlussquiz – Frage 4
Welche Methode wird bei smart1.zeigeInfos(); ausgeführt?
- Richtiges Ergebnis
- zeigeInfos() aus Smartphone, weil smart1 auf ein Smartphone-Objekt verweist.
Abschlussquiz – Frage 5
Welche Aussagen zu Polymorphie und Überschreiben stimmen?
- Richtiges Ergebnis
- Eine überschriebene Methode hat in der Unterklasse denselben Namen und dieselben Parameter wie in der Oberklasse. ·
@Overridekennzeichnet eine Methode, die eine geerbte Methode überschreibt. · Überschreibt eine Unterklasse eine Methode nicht, wird die geerbte Methode ausgeführt.