/* 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 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; }