Übungsaufgaben zum Entwurf von Methoden und Klassen

Aufgabe 1: Polynomauswertung

Aufgabe 2: Überladene Methoden

  1. Implementieren Sie die beiden Varianten der Methode polynomEvaluation von der Folie "Überladene Methode" und probieren Sie deren Aufruf aus, wie auf der Folie "Überladene Methode: Aufruf in der Sketch" beschrieben.

  2. Legen Sie in Ihrem Hauptprogramm eine neue Klasse Summation an und in dieser zwei Varianten einer Methode

    static int sum(...)

    für das Summieren von Zahlenwerten. Dabei stehen die Punkte ... im Methodenkopf oben für die unterschiedlichen Parametermengen der beiden Varianten.

    1. Variante: Diese besitzt zwei Parameter: z1 und z2 vom Typ int. Die Aufgabe der Methode besteht darin, die in diesen Parametern übergebenen Werte zu addieren und das Ergebnis mit return an die Aufrufumgebung, d. h. den Programmcode, in den der Aufruf der Methode eingebettet ist, zurückzugeben.

    2. Variante: Diese besitzt drei Parameter: z1, z2 und z3 vom Typ int. Entsprechend zur ersten Variante besteht die Aufgabe der Methode wieder darin, die in diesen Parametern übergebenen Werte zu addieren und das Ergebnis mit return an die Aufrufumgebung zurückzugeben.

    Wie oben angegeben, besitzen beide Varianten den gleichen Methodennamen.

    Testen Sie die Varianten der Methode in Ihrem Hauptprogramm durch das Übergeben einiger Zahlenwerte, wie z. B. 1, 2, 3 usw. als Parameterwerte und das Ausgeben der jeweils berechneten Methodenwerte.

Aufgabe 3: Zirkus

Im Zirkus sind der Clown Beppo und der Seehund Charlie eine große Attraktion. Immer, wenn Beppo einen Ball wirft, balanciert Charlie diesen auf der Nase. Geworfene Ringe lässt Charlie um seinen Hals rotieren. Wirft Beppo zur Belohnung einen Fisch, so frisst Charlie diesen.

  1. Definieren Sie eine Klasse Clown. Clowns können einen Namen haben, der bei der Instanzierung dem Konstruktor der Klasse als Zeichenkette übergeben wird. Zeichenketten werden in Variablen vom Typ String gespeichert.

    Das einzige Verhalten eines Clowns ist, dass er Bälle, Ringe und Fische wirft. Dieses Verhalten lässt sich mit Hilfe folgender Methode implementieren:

    public void werfen (Seehund s) {...}

    Die Wurfobjekte lassen sich in der Methode durch die Integerwerte 1, 2, und 3 codieren. Die zum Werfen gehörende Handlung wird in der Methode durch Textausgaben auf die Konsole simuliert, entsprechend zur Beispielausgabe unten. Bei jedem Aufruf der Methode werfen wirft der Clown nur ein Objekt. Das Werfen des jeweiligen Objekts löst bei dem als Parameterwert übergebenen Seehund eine Fangreaktion aus.

  2. Definieren Sie eine Klasse Seehund. Auch Seehunde können einen Namen haben. Dieser wird wieder bei der Instanzierung der Klasse angegeben. Daneben besitzen Seehunde das von außen auslösbare Verhalten, d. h. die Methode

    public void fangen (int objekt) {...}

    und die privaten Verhaltensweisen balancieren, rotieren und fressen, die wieder für Methoden stehen.
    Die hierzu gehörenden Handlungen werden wieder durch Textausgaben simuliert. Das Verhalten fangen wird vom Clown aufgerufen und löst im Seehund das Balancieren, Rotieren oder Fressen aus.

  3. Erzeugen Sie in Ihrem Hauptprogramm ein Clown-Objekt mit dem Namen Beppo und ein Seehund-Objekt mit dem Namen Charlie. Danach wirft Beppo in einer Schleife abwechselnd einige Male einen Ball, einen Ring und einen Fisch zu Charlie.

Nutzen Sie bei der Textausgabe die in dem jeweiligen Objekt gespeicherte Information über den Objektnamen. Beachten Sie, dass Sie in .java-Dateien nicht die abgekürzte Formen println bzw. print für die Ausgabe benutzen können, sondern nur die Java-Varianten System.out.println und System.out.print. Alle Programmausgaben finden bei dieser Aufgabe in den Java-Dateien statt und nicht aus der Sketch-Datei heraus.

Beispielausgabe:

Beppo wirft Ball
Charlie balanciert Ball
Beppo wirft Ring
Charlie rotiert Ring
Beppo wirft Fisch
Charlie frisst Fisch
Beppo wirft Ball
Charlie balanciert Ball
Beppo wirft Ring
Charlie rotiert Ring
Beppo wirft Fisch
Charlie frisst Fisch
usw.

Aufgabe 4: Autovermietung

Eine Autovermietung möchte die Bestellungen der Kunden zukünftig effizient über ein Kundenterminal abwickeln. Das Terminal soll alle hinsichtlich der Bestellung relevanten Daten in Objekten vom Typ Car speichern, in denen die konkreten Bestellwünsche der Kunden codiert sind. Im Einzelnen können die Kunden am Terminal ihre Wunschfarbe als Zeichenkette frei wählen (z. B. "rot") und angeben, ob das Auto eine Automatik und/oder ein Schiebedach haben soll oder nicht.

  1. Konstruieren Sie eine Klasse Car, die in ihren privaten Klassenvariablen die gewünschte Farbe sowie die gewählten Werte für die Automatik und das Schiebedach codiert. Die Kenndaten werden mit Hilfe eines Konstruktors

    Car(String color, boolean automatic,
        boolean slidingRoof) {...}

    erfasst und im Objekt abgelegt.

    Schreiben Sie drei Methoden, mit deren Hilfe Sie die Daten auslesen können:

    • public String getColour() {...}
    • public boolean hasAutomatic() {...}
    • public boolean hasSlidingRoof() {...}
  2. Schreiben Sie ein Programm, in dem Kundenwünsche zunächst, wie im Beispiel unten, mit Hilfe von Eingaben abgefragt werden. Speichern Sie die erfassten Daten in einem Objekt vom Typ Car. Die gespeicherten Daten werden danach aus dem Objekt ausgelesen und wie in dem folgenden Beispiel auf die Konsole ausgegeben.

    Sinngemäßer Ablauf der Programmeingabe über IOLib:

    Welche Farbe wünschen Sie? weiß
    Wünschen Sie eine Automatik? (false: nein, true: ja) true
    Wünschen Sie ein Schiebedach? (false: nein, true: ja) false
    

    Programmausgabe (ohne Ausgaben aus der IOLib):

    Das von Ihnen bestellte Auto ist wie gewünscht weiß, 
    besitzt eine Automatik und kein Schiebedach.

    Berücksichtigen Sie bei der Programmausgabe alle möglichen Eingabefälle.

    Für die Programmausgabe werden die Daten ausgelesen, die im Car-Objekt gespeichert wurden. Alle Programmausgaben geschehen bei dieser Aufgabe über die Sketch. Die Objekte dienen nur als Daten-Container.