Kurs 20022 objektorientiertes Programmieren

Einsendeaufgaben zu Lerneinheit 7


Programmieraufgabe mit BlueJ: (25 Punkte)

Gegeben sei das BlueJ Projekt RentalCarStock.zip.

Das Programm soll zur Verwaltung von Mietwagen eingesetzt werden. Dabei soll davon ausgegangen werden, dass es sich hier höchstens um einen Bestand von 10 Wagen handeln kann. Implementieren Sie dazu die 2 Schnittstellenbeschreibungen "List" und "Element". Die Schnittstelle "List" wird von der Klasse "RentalCarStock" implementiert und die Schnittstelle "Element" von der Klasse "Car". Ergänzen Sie die Klassen "RentalCarStock" und "Car" so, dass sie den Spezifikationen der Schnittstellen, die diese implementieren, entsprechen.

Sie können nach der Implementierung der Klassen ein Objekt der Klasse "RentalCarStock" und einige der Klasse "Car" erzeugen. Benutzen Sie die Methoden des Objekts der Klasse "RentalCarStock", um die Funktionalität Ihrer Klassen zu überprüfen.

Hinweise:

  • Beim Aufruf der Methoden "equals" oder "lessOrEquals" werden als Übergabeparameter Objekte der Klasse "Element" verlangt. Dies ist eine generische Schnittstellenbeschreibung, womit verschiedene Listentypen aufgebaut werden können. In diesem Beispiel operieren wir auf einer Liste von "Car"-Objekten, deshalb müssen wir beim Aufruf dieser Methoden die übergebene Klasse zunächst darauf hin überprüfen, ob sie zur Klasse "Car" gehört. Dies kann man mit der Operator "instanceof" realisieren. Dieser Operator wird wie folgt aufgerufen:

    A instanceof B

    Der Operator liefert true falls das Objekt A eine Instanz der Klasse B ist.

    Danach kann das der Methode "equals" oder "lessOrEquals" übergebene Element gecastet werden, d. h. wir setzen explizit fest, welcher Klasse das übergebene Element zugehört. Dies sieht beispielsweise für die Methode "equals" so aus:

    equals((Car) toCompareWith)

    hierdurch geben wir den Compiler bekannt, daß die Objekte die beim Methodenaufruf übergeben werden der Klasse "Car" angehören.

  • Zum Vergleichen von 2 Zeichenketten (Strings) kann die Methode

    public int compareTo(String anotherString)

    aus der Klasse java.lang.String verwendet werden (import java.lang.*;). Diese Methode liefert beim Gleichheit zweier Zeichenketten (beispielsweise a und b):

    a.compareTo(b);

    eine Null und bei Ungleichheit eine positive (a>b) oder negative (a<b) ganze Zahl zurück.