Übungsblatt 1

Werbung
IT 2 – WS 2008/2009 – Übungsblatt 1
Beispiel 1.1
Das erste Übungsbeispiel soll Sie mit Objekten im BlueJ vertraut machen.
•
•
•
•
•
•
•
Öffnen Sie das Projekt shapes in chapter01.
Erzeugen Sie zwei Kreise und ein Quadrat.
Was geschieht, wenn Sie für ein Objekt moveDown() zweimal aufrufen? Was
geschieht, wenn Sie makeInvisible() zweimal aufrufen?
Rufen Sie die Methode changeColor() an einer Ihrer Kreis-Instanzen auf und
übergeben Sie die Zeichenkette "red". Diese sollte die Farbe des Kreises ändern.
Versuchen Sie es auch mit anderen Farben.
Dies ist ein sehr einfaches Beispiel, es werden nicht sehr viele Farben unterstützt. Was
passiert, wenn Sie eine Farbe angeben, die nicht unterstützt wird?
Rufen Sie die Methode changeColor() auf und geben Sie die Farbe ohne die
Anführungszeichen an. Was passiert?
Sorgen Sie dafür, dass mehrere Objekte auf der Objektliste liegen, und untersuchen
Sie diese der Reihe nach. Versuchen Sie, den Zustand eines Objekts zu ändern
(beispielsweise durch den Aufruf von moveLeft()), während der Objektinspektor
geöffnet ist. Sie sollten beobachten können, wie sich die Werte im Objektinspektor
ändern.
Beispiel 1.2
Im zweiten Beispiel sollen Sie sich bereits mit Java Klassenfiles beschäftigen.
•
•
•
•
Öffnen Sie das Projekt picture in chapter01.
Erzeugen Sie eine Instanz der Klasse Picture und rufen Sie an ihr die Methode draw()
auf. Probieren Sie dann die Methoden setBlackAndWhite() und setColor() aus.
Öffnen Sie die Klasse Picture.
Untersuchen Sie in der Klasse Picture die Methode draw(). Ändern Sie die Methode
so, dass die Sonne blau statt gelb ist.
Beispiel 1.3 [Picture.java]
Verändern Sie die Klasse Picture im Projekt picture so, dass der Zeichnung eine zweite Sonne
hinzugefügt wird. Dazu sollten Sie sich die Definition der Attribute zu Beginn der
Klassendefinition ansehen. Dort kann eine zweite Sonne eingefügt werden. Vergessen Sie
nicht, auch die entsprechenden Anweisungen für die zweite Sonne zu schreiben.
Die Datei Picture.java ist abzugeben.
Beispiel 1.4 [PictureSunset.java]
Fügen Sie einer Kopie PictureSunset der ursprünglichen Klasse Picture (mit nur einer Sonne)
eine Methode sunset() hinzu, die bewirkt, dass die Sonne langsam untergeht. Dazu können Sie
die Methode slowMoveVertical() der Klasse Circle verwenden.
Die Datei PictureSunset.java ist abzugeben.
-1-
IT 2 – WS 2008/2009 – Übungsblatt 1
Beispiel 1.5
•
•
•
•
Öffnen Sie das Projekt naive-ticket-machine in chapter02.
Experimentieren Sie mit Objekten der Klasse TicketMachine.
Experimentieren Sie mit unterschiedlichen eingeworfenen Beträgen, bevor Sie das
Ticket drucken lassen. Verhält sich der Automat in irgendeiner Weise eigenartig? Was
passiert, wenn Sie zu viel Geld einwerfen – bekommen Sie das Wechselgeld zurück?
Was passiert, wenn Sie nicht genügend Geld einwerfen und dann ein Ticket
ausdrucken?
Warum funktioniert folgende Version des Konstruktors der Klasse TicketMachine
nicht richtig?
TicketMachine(int ticketPrice)
{
int price = ticketPrice;
balance = 0;
total = 0;
}
•
•
•
Definieren Sie eine Methode setPrice(int ticketPrice), die das Attribut price auf
ticketPrice setzt.
Versuchen Sie, die Rückgabeanweisung aus dem Rumpf von getPrice() zu entfernen.
Welche Fehlermeldung sehen Sie, wenn Sie versuchen, die Klasse zu übersetzen?
Vervollständigen Sie die folgende Methode, deren Aufgabe es ist, das Attribut price
um den Wert des Parameters zu verringern?
void reducePrice (int amount)
{
...
}
•
•
•
•
Erzeugen Sie zwei Ticket-Maschinen mit unterschiedlichen Ticketpreisen. Liefern
Aufrufe von getPrice() unterschiedliche oder gleiche Ergebnisse? Wie erklären Sie
diesen Effekt?
Fügen Sie der Klasse TicketMachine eine Methode message() hinzu. Diese Methode
sollte parameterlos sein und keinen Rückgabewert liefern. Der Rumpf der Methode
soll folgenden Text ausgeben:
„Bitte werfen Sie den passenden Geldbetrag ein.“
Was würde ausgegeben, wenn Sie die vierte Anweisung in der Methode printTicket()
so ändern würden, dass price auch mit Anführungszeichen umschlossen ist:
System.out.println("# " + "price" + " cents.");
Wie sieht es mit folgender Version aus?
System.out.println("# price cents.");
-2-
IT 2 – WS 2008/2009 – Übungsblatt 1
Beispiel 1.6 [TicketMachine.java]
•
•
•
•
Fügen Sie der Klasse TicketMachine eine Methode printPrice() hinzu. Diese Methode
soll parameterlos sein und keinen Rückgabewert liefern. Die Methode soll einen Text
mit dem aktuellen Ticketpreis ausgeben:
„Der Preis eines Tickets beträgt <price> cents.“
Implementieren Sie eine Methode empty(), mit der simuliert wird, dass dem
Automaten alles Geld entnommen wird. Diese Methode soll keinen Rückgabewert
liefern, sondern lediglich das Attribut total auf 0 setzen.
Implementieren Sie eine Methode getTotal(), die den Wert des Attributs total
zurückliefert.
Die Datei TicketMachine.java mit den drei neuen Methoden ist abzugeben.
-3-
Herunterladen