/* Beispiel: Klassen (Attribute, Methoden, Konstruktor, Destruktor) Filename: main.cpp Author: Lahmer Title: Klassen Description: In diesem Beispiel lernen Sie das Konzept von Klassen kennen. Es wird eine Klasse Kreis angelegt, welche Attribute (z.B.: Radius,..), Methoden (z.B.: getFlaeche(),.. ) bzw. Konstruktoren und einen Destruktor beinhaltet. Last Change: 15.02.2018 */ #include #include #include using namespace std; #define PI 3.141 class Kreis { private: //Zugriffsrecht private -> sieht man nur innerhalb der Klasse float radius; //privates Attribut public: //Zugriffsrecht public -> sieht man auch außerhalb der Klasse string beschreibung; //öffentliches Attribut string einheit; /*** Konstruktoren (gleicher Name wie Klasse & kein Rückgabewert) sind spezielle Methoden ***/ Kreis() // der Default-Konstruktor (wird standardmäßig ausgeführt) { radius=1.0; einheit="cm"; } Kreis(float r, string e) // weiterer Konstruktor mit Parameter und Defaultwert { radius=r; einheit=e; } /*** Methoden einer KLasse ***/ float getRadius() //Inline-Methode (Deklaration + Definition) getRadius -> gibt den privaten Radius zurück { return radius; } float setRadius(float r) //Inline-Methode (Deklaration + Definition) setRadius -> setzt den privaten Radius auf r { radius=r; } float getUmfang() //Inline-Methode (Deklaration + Definition) getUmfang berechnet den Umfang und gibt diesen zurück { return 2*radius*PI; } float getFlaeche(); //Methodendeklaration getFlaeche berechnet die Fläche und gibt diese zurück }; float Kreis::getFlaeche() //Methodendefinition der Methode getFlaeche von der Klasse Kreis { return 2*radius*radius; } //Funktionsdefinition int kreisvergleich(Kreis a, Kreis b) { float kreis1, kreis2; kreis1=a.getRadius(); kreis2=b.getRadius(); if(a.einheit=="cm") { kreis1=a.getRadius()/100; } if(b.einheit=="cm") { kreis2=b.getRadius()/100; } if(kreis1>kreis2) { return 1; } if(kreis1> r; k1.setRadius(r); r=0.0; cout << endl; cout << "Setzen des Radius von Kreis 2:"; cin >> r; k2.setRadius(r); cout << endl; cout << "KREIS 1:" << endl; //Zugriff auf die öffentliche Methode getRadius und das öffentliche Attribut einheit von k1 cout << "Radius: \t" << k1.getRadius() << k1.einheit << endl; //Zugriff auf die öffentliche Methode getFlaeche und das öffentliche Attribut einheit von k1 cout << "Flaeche: \t" << k1.getFlaeche() << k1.einheit << "^2"<< endl; //Zugriff auf die öffentliche Methode getUmfang und das öffentliche Attribut einheit von k1 cout << "Umfang: \t" << k1.getUmfang() << k1.einheit << endl; cout << endl; cout << "KREIS 2:" << endl; //Zugriff auf die öffentliche Methode getRadius und das öffentliche Attribut einheit von k2 cout << "Radius: \t" << k2.getRadius() << k2.einheit << endl; //Zugriff auf die öffentliche Methode getFlaeche und das öffentliche Attribut einheit von k2 cout << "Flaeche: \t" << k2.getFlaeche() << k2.einheit << "^2" << endl; //Zugriff auf die öffentliche Methode getUmfang und das öffentliche Attribut einheit von k2 cout << "Umfang: \t" << k2.getUmfang() << k2.einheit << endl; cout << "Welcher Kreis ist groesser?" << endl; if(kreisvergleich(k1,k2)==1) { cout << "Der Kreis k1 ist groesser!" << endl; } if(kreisvergleich(k1, k2)==-1) { cout << "Der Kreis k2 ist groesser!" << endl; } if(kreisvergleich(k1, k2)==0) { cout << "Die beiden Kreise sind gleich gross" << endl; } return 0; }