Zurück

Objektorientierte Programmierung

Übungen

Übung 5-1

Vererbung und Konstruktoren

  1. 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?
  2. Welcher Konstruktor der Elternklasse wird verwendet, wenn die Tochterklasse keine Aussagen darüber trifft, welcher Konstruktor der Elternklasse zuständig sein soll?
  3. Wie können konstante (objektbezogene) Attribute angelegt werden? (Sehen Sie nötigenfalls in einem guten Buch oder irgendwo im Internet nach.)
  4. 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

  1. 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?
  2. 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?
  3. 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++?
  4. 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?
  5. 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:

Ü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