Vererbung
-
hi leute, hab ein kleines prog geschreiben mit vererbung, meine frage ist ob ich das richtig gemacht hab! also die aufgabe, es gibt studenten und lehrveranstalungsleiter. tutoren können jedoch studenten und lvleiter sein. mein code dazu
/*public: student (char* nach, char* vor); // Konstruktor mit // Vor- und Nachname -student(); // Destruktor student& liesDaten(); // liest Matrikelnummer // und Semester ein void zeigePersDaten(); // liefert Vor- und Nachname void zeigeMatrikel(),- // liefert Matrikelnummer void zeigeSemester(); // liefert Semester private: char* nachname; // Nachname char* vorname; // Vorname int matrikel; //Matrikelnummer int Semester; // Semester };*/ #include <iostream.h> #include <string> #include "student.h" //using namespace std; student::student(){ nachname = "doe"; vorname = "john"; matrikel = 101010101; Semester = 12; } student::student(char* nach, char* vor){ nachname = nach; vorname = vor; } student::~student(){} void student::liesDaten(){ cout << "matrikelnummer :"; cin >> matrikel; cout << endl; cout << "semesteranzahl :"; cin >> Semester; cout << endl; } void student::zeigePersDaten(){ cout<< vorname << " "; cout<< nachname <<endl; } void student::zeigeMatrikel(){ cout<< matrikel <<endl; } void student::zeigeSemester(){ cout<< Semester <<endl; }; /* class LVLeiter{ public: LVLeiter ( char* nach, char* vor); void zeigePersDaten(); void zeigeSV(); void zeigeLV(); void zeigeStunden(); protected: char* nachname; // Nachname char* vorname; // Vorname int svNummer; // Sozialversicherungsnr. int lvNummer; // Lehrveranstaltungsnr. int stunden; // Semesterstunden };*/ LVLeiter::LVLeiter(){ nachname = "doe"; vorname = "john"; svNummer = 101010101; lvNummer = 12; stunden = 0; } LVLeiter::LVLeiter(char* nach, char* vor){ nachname = nach; vorname = vor; } LVLeiter::~LVLeiter(){} void LVLeiter::liesDaten(){ cout << "svnummer :"; cin >> svNummer; cout << endl; cout << "lvNummer :"; cin >> lvNummer; cout << endl; cout << "stunden :"; cin >> stunden; cout << endl; } void LVLeiter::zeigePersDaten(){ cout<< vorname << " "; cout<< nachname <<endl; } void LVLeiter::zeigeSV(){ cout<< svNummer <<endl; } void LVLeiter::zeigeLV(){ cout<< lvNummer <<endl; } void LVLeiter::zeigeStunden(){ cout<< stunden <<endl; }; /* class tutor: public student, public LVLeiter{ public: tutor(char* nach, char* vor, int nr); void zeigeGruppe(); private: int nummer; };*/ tutor::tutor(char* nach, char* vor, int nr){ student::student(nach, vor); nummer = nr; } void tutor::liesDaten(){ student::liesDaten(); LVLeiter::liesDaten(); } void tutor::zeigePersDaten(){ student::zeigePersDaten(); } void tutor::zeigeGruppe(){ cout << nummer <<endl; }
auskommentiert sind die headerfiles!
aja in der aufgaben stellung war anstelle von student::liesDaten() im headerfile,
student& liesDaten(); wie wird das eigentlich implementiert in der *.cpp datei?
ich bedanke mich bei euch!
-
Durchs Kompilieren wären Fehler entdeckt worden! Die anderen Sachen scheinen mir vom Design her falsch zu sein:
1. Benutze string statt *char (ist nicht falsch, nur umständlich)
2. Standardkonstruktor fehlt in der Klassendeklaration....
3. Du kannst einem StudentObjekt weder eine Matrikel Nr. noch ein Semeser zuordnen, weil es keine Methoden gibt und auch keinen entsprechenden Konstruktor...Habs aber nur überflogen....