FH Darmstadt 
FB Informatik

Prof.Dr.H.P.Weber

Programmieren II

Übung

    Juni 2005


Es soll die folgende Klassenhierarchie für zweidimensionale Figuren implementiert werden:
Abstrakte Basisklasse Shape, davon direkt abgeleitet die Klassen Polyline und Ellipse. Von Polyline direkt abgeleitet die Klassen Line und Polygon und zusätzlich von Polygon abgeleitet die Klasse Rectangle. Außerdem von Ellipse abgeleitet die Klasse Circle.

Teil 1:

Zunächst werden nur die grundlegenden Klassen Shape und Polyline entwickelt und getestet. Da die Klassen der Shape-Hierarchie mit Punkten arbeiten, wird zur Darstellung eines Punktes auch eine Klasse Point definiert:

Teil 2:

Ergänzen Sie die Shape-Klassenhierarchie um die noch fehlenden Klassen Line, Polygon, Rectangle, Ellipse und Circle:

Teil 3:

Die Figuren eines 'Bildes' bestehend aus Objekten der Shape-Hierarchie werden in einer verketteten Liste verwaltet und in der Reihenfolge 'gezeichnet', wie sie in der Liste vorkommen. Dazu soll std::list aus der STL verwendet werden:

Teil 4:

Die Klasse ShapePtrList wird noch in zwei Schritten verbessert:

Testen Sie die verbesserte Klasse ShapePtrList. Ändern Sie die  main-Funktion aus Teil 3 wie folgt: Entfernen Sie die globale Funktion printShapeList und verwenden Sie zur Ausgabe der Liste die Methode toString. Erzeugen Sie eine Kopie der Liste und modifizieren Sie die Figuren der neuen Liste durch einen Aufruf der Methode scale. Nur die Figuren der neuen Liste dürfen sich dadurch verändern. Testen Sie auch die Zuweisung ganzer Listen. Den Aufruf der Destruktoren können Sie sichtbar  machen, indem Sie im virtuellen Destruktor der Klasse Shape eine Meldung ausgeben.

Quelle: Prinz / Kirch-Prinz: C++ Das Übungsbuch