Zurück
Objektorientierte Programmierung
Übungen
Übung 5-1
Vererbung und Konstruktoren
- Wie kann eine von der (Eltern-, Ober- oder Super-)Klasse A abgeleitete Tochterklasse B
dafür sorgen, dass bei Konstruktion eines B-Objektes ein bestimmter Konstruktor der Klasse A verwendet wird? - Wie sieht dies in C++, wie in Java aus?
- Welcher Konstruktor der Elternklasse wird verwendet, wenn die Tochterklasse keine Aussagen darüber trifft, welcher Konstruktor der Elternklasse zuständig sein soll?
- Wie können konstante (objektbezogene) Attribute angelegt werden? (Sehen Sie nötigenfalls
in einem guten Buch oder irgendwo im Internet nach.)
- Geben Sie für die oben genannten Punkte bitte jeweils ein praktisches (kleines) Beispiel (und implementieren
Sie dieses konkret in Java und in C++).
Anmerkung: Sie finden hier eine kompakte Gegenüberstellung
einiger Aspekte von C++ und Java. Vielleicht werfen Sie bei Gelegenheit einmal einen Blick...
Übung 5-2
Vererbung und Schutzbereiche
- Erläutern Sie die Bedeutung und Wirkungsweise der drei Schutzbereiche private, protected und public in C++.
Welches ist der vierte Schutzbereich, den es darüber hinaus in Java gibt? Verhalten sich private und protected in
C++ und in Java identisch?
- Variieren Sie das kleine Illustrationsprogramm von Aufgabe 4-1 so, dass kein protected mehr verwendet wird, d.h. die Klasse A ihr Attribut a im private-Bereich vorhält. Was müssen Sie konkret anpassen?
- Wenn die Elternklasse eine Methode void meth() im Schutzbereich protected besitzt, kann dann
eine Tochterklasse eine Methode void meth() (also mit derselben Signatur) bereitstellen, die im
Schutzbereich private liegt? Unterscheiden sich Ihre Antworten zwischen Java und C++?
- Wenn die Elternklasse eine Methode void meth() im Schutzbereich protected besitzt, kann dann
eine Tochterklasse eine Methode void meth() (also mit derselben Signatur) bereitstellen, die im
Schutzbereich public liegt? Verhalten sich hier C++ und Java gleich?
- Können Sie generell o h n e protected arbeiten? Erläutern Sie bitte!
Übung 5-3
Modellierung und Vererbung
Entwerfen und realisieren Sie anschließend in Java einen Fuhrpark eines Unternehmens.
In einem Objekt des Typs Fuhrpark kann es endlich viele Fahrzeuge geben, die sich in Pkw und Transporter unterscheiden lassen. Jedes Fahrzeug hat eine Bezeichnung, ein polizeiliches Kennzeichen und eine Anzahl von Sitzplätzen. Bei einem Transporter kommt noch das maximal zulässige Ladegewicht sowie das maximal mögliche Ladevolumen hinzu.
Jedes Fahrzeug in einem solchen Fuhrpark kann sich in einem der folgenden Zustände befinden:
- bereit: dieses Fahrzeug ist direkt für eine Ausleihe bzw. Buchung verfügbar;
- reserviert: wurde ein Fahrzeug gebucht, jedoch noch nicht zu seinem Einsatz abgeholt, dann gilt es als reserviert.
- ausgeliehen: das Fahrzeug ist vom Kunden aktuell ausgeliehen (und damit generell "unterwegs");
- in Wartung: dieses Fahrzeug befindet sich zu einer kleinen oder großen Inspektion in der Werkstatt; dies ist beispielsweise nach der Rückgabe vom Ausleiher standardmäßig der Fall.
Übung 5-4
Modellierung und Vererbung
Sollten Sie Zeit und entsprechenden Bedarf haben, können Sie die Fuhrpark-Aufgabe 5-3 auch
in C++ implementieren.
Übung 5-5
Vererbung, Konstruktoren und Operatoren
Entwerfen und realisieren Sie in C++ eine Klasse BigInteger, mit der Sie "beliebig große" ganze
Zahlen darstellen können. Es sollen also Objekte möglich sein, die die Zahlen 12345678901234567890 oder
12345678901234567891 repräsentieren.
Realisieren Sie neben sinnvollen Konstruktoren (und ggf. dem Destruktor) auch (mind.) die Rechenoperation +
(Addition, idealerweise als Operator Overload) sowie eine Ausgabe auf die Konsole.
© 1999-2023 FHDW/Peter Baeumle-Courth. Document-Id:
fhdwbap:opg:028271-4