/* Beispiel: Klassen (Vererbung, Attribute, Methoden, Konstruktor, Destruktor)
Filename: main.cpp
Author: Lahmer
Title: Vererbung von Klassen
Description: In diesem Beispiel lernen Sie das Konzept von Vererbungen in Klassen kennen.
Change: 15.02.2018
*/
#include <iostream>
using namespace std;
bool ungleichNULL(int i) //FUNKTION ungleichNULL prüft Variable ob > 0
{
if(i>0)
{
return true;
}
else
{
return false;
}
}
struct PersonStrukt{ //Struktur PersonStrukt
//Standardzugriffsrecht public
string name; //Attribut name
string adresse; //Attribut adresse
};
class Person //(BASIS-)Klasse Person
{
//Standardzugriffsrecht = private
private: //Zugriffsrecht private -> nur in der Klasse selbst verwendbar; nicht im Hauptprogramm und in den vererbten Klassen
string adresse; //Attribute
protected: //Zugriffsrecht protected -> in der Klasse selbst + in allen abgeleiteten Klassen verwendbar; nicht im Hauptprogramm
int svnr;
public: //Zugriffsrecht public -> überall verwendbar (Klasse selbst, vererbten Klassen, Hauptprogramm)
string telefonnr;
string name;
//Methode setAdresse
void setAdresse(string s)
{
adresse=s;
}
string getAdresse()
{
return adresse;
}
//Konstruktor = spezielle Methode ohne Rückgabewert zur Initialisierung von Variablen
Person()
{
adresse="Amstetten";
name="Max Mustermann";
}
Person(string adr, string n)
{
adresse=adr;
name=n;
}
//Destruktor = spezielle Methode ohne Rückgabewert zum Freigeben/Löschen von Variablen
~Person()
{
cout << endl << "Objekt wird geloescht!" << endl;
}
};
class Partner : public Person //Klasse Partner ist vererbt (=abgeleitet) von der Klasse Person
{
public:
string Kto, BLZ;
/* nicht möglich, da id private ist
void setID(int idnr)
{
id=idnr;
}
*/
//Möglich, da svnummer protected ist
void setSVNR(int svnummer) //METHODE
{
svnr=svnummer;
}
bool groesserNULL() //Methode groesserNULL, die eine Funktion ungleichNULL von außerhalb aufruft
{
return ungleichNULL(svnr);
}
};
class Mitarbeiter : public Partner //Klasse Mitarbeiter ist abgeleitet von der Klasse Partner
{
public:
string Krankenkasse;
};
class Kunde : public Partner //Klasse Kunde ist vererbt von der Klasse Partner
{
public:
string Lieferadresse;
};
class Lieferant : public Partner //Klasse Lieferant ist abgeleitet von der Klasse Partner
{
public:
int anzRechnungen;
};
class Aussendienst : public Mitarbeiter //Klasse Aussendienst ist abgeleite von der Klasse Mitarbeiter
{
public:
string Bezirk;
};
int main (void) {
PersonStrukt p1; //Objekt p1 von der Klasse PersonStrukt
p1.name="Mario";
p1.adresse="Amstetten";
cout << endl << "PERSONEN: ";
Person person1; //Objekt person1 von der Klasse Person
person1.name="Moritz";
person1.setAdresse("Ulmerfeld");
cout << person1.getAdresse();
Person person2;
cout << endl << person2.name;
cout << endl << person2.getAdresse();
Person person3("Waldhausen","Lisa");
cout << endl << person3.name;
cout << endl << person3.getAdresse();
Partner partner1;
partner1.Kto="12341235";
partner1.setSVNR(2790);
partner1.setSVNR(0);
cout << endl << endl << "PARTNER: ";
cout << endl << partner1.name << endl;
cout << partner1.groesserNULL();
Mitarbeiter m1;
m1.Kto="12341235";
m1.setSVNR(2790);
m1.setSVNR(0);
m1.name="Mitarbeiter Sven";
cout << endl << endl << "MITARBEITER: ";
cout << endl << m1.name << endl;
cout << m1.groesserNULL();
Kunde k1;
k1.Lieferadresse="St. Pölten";
k1.name="Kunde MediaMarkt";
cout << endl << endl << "KUNDE: ";
cout << endl << k1.name << endl;
cout << k1.groesserNULL();
Lieferant l1;
l1.anzRechnungen=3;
l1.name="Lieferant Hollywood";
cout << endl << endl << "LIEFERANT: ";
cout << endl << l1.name << endl;
cout << l1.groesserNULL();
Aussendienst a1;
a1.Bezirk="Meidling";
a1.name="Aussendienstfuzi";
cout << endl << endl << "AUSSENDIENST: ";
cout << endl << a1.name << endl;
cout << a1.groesserNULL();
return 0;
}