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).
Zum Erzeugen von Circle
-Objekten sollen zwei Konstruktoren bereitgestellt werden:
- Der erste Konstruktor ist parameterlos und erzeugt einen Einheitskreis, dessen Mittelpunkt im Koordinatenursprung liegt.
- 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.