Christoph Ott Institut für Angewandte Informationsverarbeitung 28. August 2008
Blatt 5
WiMa-Praktikum/ Programmier-Praktikum (SS 2008)
Submit-Übungsaufgaben
Submit-Frist bis: Montag 1. September 2008 9:15 Uhr
Schreibt ein (objektorientiertes!) Programm, das Flächeninhalt
und Umfang für unterschiedliche
geometrische Figuren (insbesondere Kreise, Quadrate und Rechtecke)
berechnen und vergleichen kann. Hierzu soll von der Standardeingabe zuerst ein
String, der entweder ''circle'', ''square'' oder ''rectangle'' lauten kann eingelesen
werden. Hat man damit den Typ der geometrischen Figur festgelegt, so soll der
Radius (im Fall ''circle''), die Seitenlänge (im Fall ''square''), bzw. Breite und
Höhe (im Fall ''rectangle'') eingelesen werden.
Mit diesen Angaben, soll ein entsprechendes Objekt erstellt werden.
Nun wird auf die selbe Weise eine
zweite geometrische Figur eingelesen. Nun soll zuerst für die erste Figuer
Flächeninhalt und Umfang ausgegeben werden, dann für die zweite (jeweils auf signifikante
Stellen gerundet). Abschließend
soll eine ausgegeben werden falls die erste Figur einen größeren
Flächeninhalt besitzt, entsprechend , falls die zweite Figur den größeren
Flächeninhelt besitzt. Im Falle der Gleichheit soll ausgegeben werden.
Für eine erfolgreiche Einreichung ist es zwingend notwendig, dass Ihr Euer
Programm auf die drei Dateien figures.h, figures.cpp und
figureManager.cpp verteilt.
Die Bildschirmausgabe sollte für Euer Programm folgendermaßen aussehen:
thales$ a.out
square -> Typ der 1.geometrischen Figur
2 -> Seitenlaenge
rectangle -> Typ der 2.geometrischen Figur
1.5 -> Breite
2.5 -> Hoehe
4 -> Flaecheninhalt Quadrat
8 -> Umfang Quadrat
3.75 -> Flaecheninhalt Rechteck
8 -> Umgang Rechteck
1 -> Flaecheninhalt Quadrat > Flaecheninhalt Rechteck
Um ein objektorientiertes Programm zu erstellen, empfiehlt es sich folgende
Hinweise zu befolgen:
- Die Klasse, die eine allgemeine geometrische Figure repräsentiert, sollte
abstrakt sein (es macht schließlich keinen Sinn ein Objekt der Klasse geometrische
Figur zu erzeugen) und lediglich eine Funktion zum Vergleich des Flächeninhalts zweier
geometrischer Figuren bereitstellen.
- Die Klassen für ''circle'', ''square'' und ''rectangle'' sollten von der abstrakten Klasse
abgeleitet sein, die notwendigen Elementvariablen besitzen (Radius, Seitenlänge, ...)
und sowohl einen Konstruktor als auch die Elementfunktionen für die
Berechnung von Flächeninhelt und Umfang implementieren.
- Achtung: Von abstrakten Klassen können keine Elemente erzeugt werden, zur Verwendung
von Polymorphie müssen deshalb Zeiger auf abstrakte Klassen verwendet werden. (Der Aufruf der
Elementfunktionen erfolgt somit nicht mehr über ''.'', sondern über ''->''.)
- Denkt daran den Standarddestruktor der abstarkten Klassen virtuell zu machen.
Viel Erfolg!
Christoph Ott
2008-08-28