Praktikumsanleitung
Praktikum 7
Punkt
UML-Klassendiagramm
Aufgaben
Zur Darstellung der Punkte der zweidimensionalen Ebene entwickeln Sie eine Klasse Point
.
Ein Punkt wird durch eine X- und eine Y-Koordinate beschrieben.
Zum Erzeugen von Point
-Objekten sollen zwei Konstruktoren bereitgestellt werden:
- Der erste Konstruktor ist parameterlos und erzeugt den Punkt im Koordinatenursprung
- Der zweite Konstruktor erzeugt den Punkt an den übergeben Koordinaten.
Zwei Zugriffsmethoden (Getter) namens getX
und getY
sollen die Koordinatenwerte eines Punktes zurückgeben.
Es gibt keiner Setter, da die Verschiebung über die move
-Methoden erfolgt.
Durch zwei weitere Methoden sollen sich Punkte versetzen bzw. verschieben lassen:
- Verschieben (
moveBy
) verschiebt den Punkt (die übergebenen Werte werden auf die Punktkoordinaten addiert) - Versetzen (
moveTo
) ersetzt die Koordinatenwerte
Zusatzaufgaben
Eine Methode void mirror(bool flip_x, flip_y)
soll den Punkt spiegeln. Wenn flip_x
wahr ist, soll an der X-Achse gespiegelt werden, bei flip_y
hingegen an der Y-Achse.
Schreiben Sie eine Methode double distance()
. Diese gibt den Abstand des Punktes zum Koordinatenursprung zurück.
Rechteck(*)
UML-Klassendiagramm
Aufgaben
Zur Darstellung eines Rechtecks erstellen Sie eine Klasse Rectangle
.
Ein Rechteck wird beschrieben durch:
- Einen Startpunkt (linke, obere Ecke), Klasse
Point
- Eine Breite als Dezimalzahl
- Eine Höhe als Dezimalzahl
- Das Rechteck ist also Achsenparallel
Das Rechteck soll mit einem Konstruktor ausgestattet werden: Der Startpunkt, die Höhe und die Breite werden vorgegeben
Für Rechtecke sollen folgende Methoden vorhanden sein:
- Getter zum lesen der Startpunkts, der Höhe und der Breite
moveBy
undmoveTo
zum verschieben des Rechtecks. Verhalten wie beiPoint
- Methoden zur Berechung des Umfangs (
calcCircumference
) und des Flächeninhalts (calcArea
)
Zusatzaufgaben
Eine Methode void mirror(bool flip_x, flip_y)
soll das Rechteck spiegeln. Wenn flip_x
wahr ist, soll an der X-Achse gespiegelt werden, bei flip_y
hingegen an der Y-Achse.
Eine Methode bool collidesWith(const Rectangle& other)
soll prüfen, ob zwei Rechtecke sich berühren.