Übung08

Werbung
Übung Grundlagen der Programmierung
WS 2004/05
Übung 08: Objektorientierte Programmierung
Abgabetermin: 14. 12. 2004
Name:
Matrikelnummer:
Gruppe:
o G1 (Löberbauer)
Aufgabe
Punkte
gelöst
Aufgabe 08.1
12
Aufgabe 08.2
12
o G2 (Prähofer)
o G3 (Prähofer)
abzugeben schriftlich
abzugeben
elektronisch
korr.
o
Prosabeschreibung,
Java-Programm,
Testfälle und
Testausgabe
Java-Programm
o
o
Prosabeschreibung,
Java-Programm,
Testfälle und
Testausgabe
Java-Programm
o
Pkte
Aufgabe 08.1: Rechnen mit komplexen Zahlen
Eine komplexe Zahl (z.B. 3.2 + 1.75i) besteht aus einem reellen und einem imaginären Teil, beide vom Typ
float. Implementieren Sie eine Klasse Complex, die komplexe Zahlen darstellt und das Rechnen mit
komplexen Zahlen ermöglicht. Als Operationen sollen die vier Grundrechenarten
(a + bi) + (c + di) = (a+c) + (b + d) i
(a + bi) - (c + di) = (a-c) + (b - d) i
(a + bi) * (c + di) = (a*c – b*d) + (a*d + b*c) i
(a + bi) / (c + di) = (a*c + b*d)/(c*c + d*d) + (b*c – a*d)/(c*c + d*d) i
unterstützt werden. Schreiben Sie für diese Operationen Objektmethoden, wobei als Ergebnis jeweils ein neues
Zahlenobjekt erzeugt werden soll. Implementieren Sie weiters Konstruktoren, Methoden zum Lesen und Setzen
des Real- und Imaginärteils und eine Methode toString, welche eine String-Darstellung der komplexen Zahl
liefert.
Schreiben Sie dann einen benutzerfreundlichen Dialog wie folgt:
Mit einem Zeichencode soll der Benutzer folgende Operationen auswählen können:
n a s md e -
für eine neue komplexe Zahl
für eine Addition
für eine Subtraktion
für eine Multiplikation
für eine Division
für Ende
Jede Operation (außer e) liefert eine neue komplexe Zahl als Ergebnis. Diese Zahlen sollen in einem Array
gespeichert werden und können für folgende Operationen als Operanden verwendet werden. Die Operation n
erzeugt eine neue komplexe Zahl, welche im nächsten freien Arrayindex gespeichert wird. Für die Operationen
Addition, Subtraktion, Multiplikation und Division werden die Operanden durch Angabe des Arrayindex aus den
Ergebnissen früherer Operationen ausgewählt und das Ergebnis im nächsten freien Arrayindex gespeichert.
Übung Grundlagen der Programmierung
WS 2004/05
Beispiel:
Operation: n
Zahl eingeben (r i): 1 2
[0] 1.0+2.0i
Operation: n
Zahl eingeben (r i): 2 3
[1] 2.0+3.0i
Operation: a
Index Operand 1: 0
Index Operand 2: 1
[2] 3.0+5.0i
Operation: s
Index Operand 1: 2
Index Operand 2: 0
[3] 2.0+3.0i
Operation: e
Gehen Sie bei der Lösung folgend vor:
1. Skizzieren Sie Klassen und die Methoden in Prosa.
2. Implementieren Sie die Klassen und die Methoden in Java
3. Stellen Sie für alle Methoden einen Testplan auf und testen Sie das Programm.
Aufgabe 08.2: Wer trifft den Schneemann?
Schreiben Sie eine Basisklasse GraphObject und
Unterklassen Rectangle und Circle für graphische
Objekte. GraphObjects haben eine Position, und einen
Namen. Rectangles haben zusätzlich eine Breite und Höhe,
Circles einen Radius. Neben Konstruktoren und
Zugriffsmethoden sollen die Klassen folgende Operationen
implementieren:
GraphObject
boolean hit(Point p)
void draw()
Rectangle
boolean hit(Point p)
void draw()
Circle
boolean hit(Point p)
void draw()
void draw(): zur Ausgabe mit Klasse Window
boolean hit(Point p): welche testet, ob der Punkte p innerhalb des graphischen Objekts liegt.
Erzeugen Sie dann mehrere Objekte vom Typ Rectangle und Circle, die zusammen einen Schneemann
darstellen (siehe folgende Abbildung) und speichern Sie diese in einem Array von Typ GraphObject[].
Realisieren Sie dann einen Benutzerdialog, in dem man Schüsse in der Form von x/y-Koordinaten eingeben kann
und geantwortet wird, ob man den Schneemann getroffen hat.
Beispiel:
Gehen Sie bei der Lösung folgend vor:
1. Skizzieren Sie Klassen und die Methoden in
Prosa.
2. Implementieren Sie die Klassen und die
Methoden in Java
3. Stellen Sie für alle Methoden einen Testplan
auf und testen Sie das Programm.
Herunterladen