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....


Anmelden zum Antworten