Angabe

UML Diagramm

Loesung

/* Beispiel: Klassen (Arrays von Objekten,Vererbung, Attribute, Methoden, Konstruktor)
   Filename: main.cpp
   Author: Lahmer
   Title: Geometrische Formen
   Description: In diesem Beispiel lernen Sie wie man Arrays von Objekten anlegt und verwendet. 
   Change: 20.02.2018
*/
#include <iostream>
#include <stdlib.h>
#include <time.h>
 
#define PI 3.14
 
using namespace std;
 
class Information 
{
	public: 
		int kanten;
		int ecken;
};
 
class GeometrischerKoerper
{
	protected:
		float oberflaeche;
		float volumen;
 
	public: 
		Information info;    //Assoziation, ein geometrischer Koerper hat eine (Beziehung mit) Information
		float getVolumen()
		{
			return volumen;
		}
		float getOberflaeche()
		{
			return oberflaeche;
		}
};
 
class Wuerfel : public GeometrischerKoerper    //Vererbung, Klasse Wuerfel wird von Klasse GeometrischerKoerper abgeleitet
{
	private:
		float a;
	public:
		Wuerfel()
		{
			a=0.0;
		}
		Wuerfel(float laenge)
		{
			a=laenge;
		}
		void berechneOberflaeche()
		{
			oberflaeche=a*a*6;	//6 Seiten hat ein Würfel
		}
		void berechneVolumen()
		{
			volumen=a*a*a;
		}
		float getLaenge()
		{
			return a;
		}
 
};
 
class Drehzylinder : public GeometrischerKoerper
{
	public:
		float r;
		float h;
 
		void berechneOberflaeche()
		{
			oberflaeche=2*r*r*PI+2*r*PI*h;	//2x Grundfläche + Mantel
		}
		void berechneVolumen()
		{
			volumen=r*r*PI*h;  //Grundfläche * H
		}		
 
};
 
class Quader : public GeometrischerKoerper
{
	public:
		float a;	//a*b = Grundfläche
		float b;
		float c;	//c=Höhe
		void berechneOberflaeche()
		{
			oberflaeche=2*(a*b+a*c+b*c);	//
		}
		void berechneVolumen()
		{
			volumen=a*b*c;
		}		
 
};
 
 
 
 
int main(int argc, char** argv) {
 
	Wuerfel *w=new Wuerfel(3.3);
	w->berechneOberflaeche();
	w->berechneVolumen();
	w->info.ecken=8;
	w->info.kanten=12;
 
	cout << "Wuerfel: \t" << endl;
	cout << "----------------------------" << endl;
	cout << "Seitenlaenge: \t" << w->getLaenge() << endl;
	cout << "Oberflaeche: \t" << w->getOberflaeche() << endl;
	cout << "Volumen: \t" << w->getVolumen() << endl;
	cout << "Anzahl Kanten: \t" << w->info.kanten << endl;
	cout << "Anzahl Ecken: \t" << w->info.ecken << endl;
 
	cout << endl << "##############################" << endl;
 
	srand(time(NULL));
 
	cout << endl << "Array von Wuerfeln: " << endl;
	Wuerfel *warray=new Wuerfel[3];   //Alternativ geht auch Wuerfel warray[3];
	for(int i=0; i<3; i++)
	{
 
		warray[i]=Wuerfel((rand()%10+1)/2.0);
		warray[i].berechneOberflaeche();
		warray[i].berechneVolumen();
		cout << endl << "Wuerfel " << i << ":" << endl;
		cout << "----------------------------" << endl;
		cout << "Seitenlaenge: \t" << warray[i].getLaenge() << endl;
		cout << "Oberflaeche:\t" << warray[i].getOberflaeche() << endl;	
		cout << "Volumen:\t" << warray[i].getVolumen() << endl;	
	}
 
	cout << endl << "##############################" << endl;
 
	cout << endl << "Array von Drehzylindern: " << endl;
	Drehzylinder *zylinder=new Drehzylinder[3];
	for(int i=0; i<3; i++)
	{
 
		zylinder[i].h=rand()%10;
		zylinder[i].r=(rand()%20+1)/2.0;
		zylinder[i].berechneOberflaeche();
		zylinder[i].berechneVolumen();
		cout << endl << "Drehzylinder " << i << ":" << endl;
		cout << "----------------------------" << endl;
		cout << "Radius: \t" << zylinder[i].r << endl;
		cout << "Hoehe: \t\t" << zylinder[i].h << endl;
		cout << "Oberflaeche:\t" << zylinder[i].getOberflaeche() << endl;	
		cout << "Volumen:\t" << zylinder[i].getVolumen() << endl;	
	}
 
 
 
	return 0;
}