[Objektorientierung] parameter verstaendnisproblem - funktionierender code im anhang



  • guude,

    ich habe ein verstaendnis problem beim objektorientiertem programmieren. und zwar fehlt mir die "verknuepfung" in der klasse mitarbeiter. ich hab die funktion setMitarbeiterName. dieser funktion gebe ich den parameter name mit. in der funktion weise ich dann dem privaten attribut MitarbeiterName den parameter name zu.

    nur frage ich mich, warum das so gemacht werden muss? den parameter name brauch ich nicht mehr. im gegenteil in der main benutze ich zum speichern des namens des mitarbeiters den string NameDesMoeglichenKandidaten.

    ich bin verwirrt und hoffe mir kann jmd weiterhelfen.

    ----- nachtrag -----
    nachdem ich mir den code nochmal (und nochmal, ... 🙂 ) angeschaut habe ...
    der parameter name in der setMitarbeiterName methode ist dafuer da, das ich der methode von "aussen" einen namen zuweisen kann, also in der main wo ich den namen abfrage und dann per setMitarbeiterName zuweise?

    danke, gruss und schoenen sonntag!
    buk

    /*
     *  Mitarbeiter.h
     *  MItarbeiterVerwaltung
     *
     *
     */
    
    #include <iostream>
    using std::cout;
    using std::cin;
    using std::endl;
    
    #include <string>
    using std::string;
    
    class Mitarbeiter {
    
    	public:
    
    	void setMitarbeiterName(string name)
    	{
    		MitarbeiterName = name;
    	}
    
    	string getMitarbeiterName()
    	{
    		return MitarbeiterName;
    	}
    
    	void DisplayMitarbeiterName()
    	{
    		cout << "Ihr Mitarbeiter des Monats heisst: " << getMitarbeiterName() << endl;
    	}
    
    	private:
    
    	string MitarbeiterName;
    
    };
    
    // Samstag 10.01.2009
    // main.cpp
    //
    
    #include "Mitarbeiter.h"
    
    #include <iostream>
    using std::cout;
    using std::cin;
    using std::endl;
    
    int main (int argc, char * const argv[]) {
        // insert code here...
        cout << "Willkommen beim Mitarbeiter des Monats - Sie werden stinkreich Programm!" << endl;
    	cout << endl;
    	cout << endl;
    
    	Mitarbeiter MitarbeiterDesMonats;
    
    	cout << "Geben Sie einen Mitarbeiternamen an der Mitarbeiter des Monates werden koennte: " << endl;
    	string NameDesMoeglichenKandidaten;
    	getline(cin, NameDesMoeglichenKandidaten);
    
    	MitarbeiterDesMonats.setMitarbeiterName(NameDesMoeglichenKandidaten);
    
    	cout << "Sie haben den Kandidaten " << MitarbeiterDesMonats.getMitarbeiterName() << " gewaehlt" << endl;
    
    	MitarbeiterDesMonats.DisplayMitarbeiterName();
    
        return 0;
    }
    


  • nachdem ich mir den code nochmal (und nochmal, ... 🙂 ) angeschaut habe ...
    der parameter name in der setMitarbeiterName methode ist dafuer da, das ich der methode von "aussen" einen namen zuweisen kann, also in der main wo ich den namen abfrage und dann per setMitarbeiterName zuweise?

    Jap, genau dafür ist es da, und für nix anderes.



  • guude,

    ok soweit so gut ...

    ich muss dann praktisch "rueckwaertsdenken" ?!

    cout << "Geben Sie einen Mitarbeiternamen an der Mitarbeiter des Monates werden koennte: " << endl;
        string NameDesMoeglichenKandidaten;
        getline(cin, NameDesMoeglichenKandidaten);
    

    speichert mir den namen des kandidaten in der variablen NameDesMoeglichenKandidaten

    der name wird dann in der MitarbeiterDesMonats.setMitarbeiterName(NameDesMoeglichenKandidaten) methode an den parameter name in der mitarbeiter klasse "von aussen" uebergeben und und dann dem private attribut MitarbeiterName zugewiesen?

    gruss,
    buk



  • Genau.
    So wird gewährleistet das 'MitarbeiterName' nicht ohne die Methode der Klasse verändert werden kann.
    Und sehe dich mal um ob du 'const' Parameter in diesem Programm sinnvoll einsetzen kannst. So genannte Getter-Methoden sollen ja nichts verändern, dafür sind ja die Setter-Methoden da.
    Const hilft dir hier, aber das kannst du ja dann nach lesen und selber entscheiden.


Anmelden zum Antworten