JGU Logo JGU Logo JGU Logo JGU Logo

Institut für Informatik

Michael Wand
Christian Ali Mehmeti-Göpel
Wintersemester 2020/21DIGITAL

Blatt 06

Aufgabe 02
Einführung in die Softwareentwicklung



Aufgabe Polymorphie

Letzte Änderung: 14. December 2020, 13:34 Uhr
20 Punkteim Detail
Ansicht:   |  


Für ein besonderes Bauteil werden mehrere Holzprofile zu einem Verbundquerschnitt verleimt (insbesondere überlappen sich die Querschnitte nicht). Wir wollen



Aufgaben

Die Aufgabe ist, eine objektorientierte Klassehierarchie zu definieren, die das obige Setting representieren würde:

  1. Implementieren Sie zunächst eine Klasse cross_section, die eine abstrakte Methode area zur Ermittlung der Querschnittsfläche enthält. Denken Sie auch daran, der Klasse einen virtuellen Destruktor (mit leerer Implementierung) hinzuzufügen, damit der Destruktor bei abgeleiteten Klassen korrekt aufgelöst wird.
  2. Entwerfen Sie eine nicht-abstrakte Klasse rectangle als Subklasse von cross_section. Schreiben Sie einen Konstruktor, mit dem der Nutzer der Klasse Breite und Höhe vorgeben kann.
  3. Schreiben Sie analog dazu eine Klasse semicircle.
  4. Implementieren Sie eine andere Querschnitt-Klasse composite (auch als Subklasse von cross_section), die einen Verbundquerschnitt erzeugt, der aus Subklassen von cross_section zusammengesetzt ist. composite soll einen std::vector<cross_section*> speichern mit Pointern auf die individuellen Teilquerschnitte. Überlegen Sie sich, wie sich der Querschnitt eines Verbunds berechnet, und implementieren Sie area dementsprechend.
  5. Schreiben Sie außerdem ein Hauptprogramm, dessen main()-Methode den abgebildeten Verbundquerschnitt mit \(r=10, b1=12, b2=18, t1=7, t2=3\) erzeugt und dessen Fläche berechnet. Achten Sie auf korrekte Speicherverwaltung.