Praktikumsanleitung

Praktikum 8

Aufgabe 1: Point - Fehlerbehandlung

Fügen Sie zur Klasse Point eine Fehlerbehandlung mittels Exceptions hinzu.

Wir gehen davon aus, dass Punkte nur in einem Bereich von (-100, 100) gültig sind.

Werfen (throw) Sie einen std::runtime_error (verfügbar in <stdexcept>), wenn ein Punkt außerhalb dieser Koordinaten liegt (siehe auch das Vorlesungsbeispiel zum PositivePoint, hier soll aber die Klasse Point direkt, also ohne Vererbung, modifiziert werden).

Erstellen Sie eine geeignete main-Funktion, um das Verhalten zu testen. Fragen Sie dazu den Benutzer nach X- und Y-Koordinaten und behandeln Sie auftretende Fehler (try-catch).

Aufgabe 2: Rectangle - Fehlerbehandlung

Fügen Sie zur Klasse Rectangle eine Fehlerbehandlung mittels Exceptions hinzu.

Werfen Sie einen std::runtime_error, wenn Breite oder Höhe des Rechtecks 0 oder kleiner sind.

Aufgabe 3: Klasse Circle

Programmieren Sie das abgebildete UML-Diagramm nach. Ein Kreis wird durch dessen Ursprungspunkt (origin) und dessen Radius (radius) beschrieben. Aus Konsistenzgründen mit anderen geometrischen Objekten, ist der Ursprungspunkt dabei oben links in der Ecke (siehe Abbildung).

Ein Einheitskreis (Radius = 1) mit Ursprungspunkt im Koordinatenursprung

Zum Erzeugen von Circle-Objekten sollen zwei Konstruktoren bereitgestellt werden:

  1. Der erste Konstruktor ist parameterlos und erzeugt einen Einheitskreis, dessen Mittelpunkt im Koordinatenursprung liegt.
  2. Der zweite Konstruktor erzeugt einen Kreis mittels Ursprungspunkt und Radius. Ein Radius <= 0 ist unzulässig (Exception werfen).

Mit vier Gettern können der Radius (getRadius), der Durchmesser (getDiameter), der Ursprungspunkt (getOrigin) und der Mittelpunkt des Kreises (getCenter) ermittelt werden.

Es steht ein Setter für den Radius (setRadius) zur Verfügung. Ein Radius <= 0 ist unzulässig (Exception werfen).

Durch zwei weitere Methoden soll sich der Kreis versetzen bzw. verschieben lassen:

  • Verschieben (moveBy) verschiebt den Kreis (die übergebenen Werte werden auf die Punktkoordinaten addiert)
  • Versetzen (moveTo) ersetzt die Koordinatenwerte

Zusatzaufgaben

Die Methode bool isInside(const Point& p) soll ermitteln, ob ein übergebener Punkt innerhalb des Kreises liegt.

Zuletzt geändert: Dienstag, 18. Mai 2021, 00:49