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:

  1. Der erste Konstruktor ist parameterlos und erzeugt den Punkt im Koordinatenursprung
  2. 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 und moveTo zum verschieben des Rechtecks. Verhalten wie bei Point
  • 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.

Last modified: Tuesday, May 11, 2021, 8:56 AM