/* 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 <iostream>
#include <conio.h>
#include <string.h>
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<kreis2)
{
return -1;
}
if(kreis1==kreis2)
{
return 0;
}
}
//Hauptprogramm
int main()
{
Kreis k1; //Objekt
Kreis k2(2.0, "m");
//Zugriff auf das öffentliches Attribut beschreibung
k1.beschreibung="Kreis initialisiert mit Standardkonstruktor!";
k2.beschreibung="Kreis initialisiert mit Konstruktor mit Radius als Parameter";
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;
float r=0.0;
cout << endl;
cout << "Setzen des Radius von Kreis 1:";
cin >> 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;
}