Hilfe beim verstehen eines Programmcodes



  • Hallo 🙂
    ich hab hier einen code vor mir liegen und verstehe an mehreren stellen nicht, was er genau mach - könnt ihr mir da weiterhelfen?

    header:

    #include <conio.h>
    #include <iostream.h>
    #include <string.h>

    class Hund
    {
    private:
    string name;
    string farbe;
    int alter;

    public:
    //Konstruktor:
    Hund(const string& name="", const string& farbe="", int alter=0);
    ~Hund();

    const string& getName() {return name;}
    const string& getFarbe() {return farbe;}
    int getAlter() {return alter;}

    bool setName(const string& n)
    { if(n.size()<1)
    return false;
    name=n;
    return true;
    }

    bool setFarbe(const string& f)
    { if(f.size()<1)
    return false;
    farbe = f;
    return true;
    }

    void setAlter(int a) {alter = a;}

    void display();
    };

    dekl:

    #include "hund.h"

    Hund::Hund(const string& name, const string& farbe, int alter)
    {
    setName(name); setFarbe(farbe); setAlter(alter);
    }

    Hund::~Hund(){}

    void Hund::display()
    {
    cout<<"Name: "<<name<<endl;
    cout<<"Farbe: "<<farbe<<endl;
    cout<<"Alter: "<<alter<<endl;
    }

    main:

    #include "hund.h"

    #pragma hdrstop
    #pragma argsused

    Hund hund("a", "a", 1);

    int main(int argc, char* argv[])
    {
    Hund hund2("Bello", "Schwarz", 12);
    hund2.display();

    getch();
    }

    Nun meine Fragen:

    was macht das Programm an diesen beiden stellen: int getAlter() {return alter;} // void setAlter(int a) {alter = a;}
    Das getAlter ist doch nur zum betrachten, während das setAlter zur veränderung von alter im private ist ... aber wie genau läuft das Programmintern ab?^^

    Danke im voraus 🙂



  • Hallo

    Mr. Blonde schrieb:

    Hallo 🙂

    int getAlter() {return alter;} 
    void setAlter(int a) {alter = a;}
    

    Du hast es doch schon geschrieben. Die Methode getAlter gibt die Memebervarible alter zurück und die Methode setAlter erwartet einen Wert und setzt die Memebervariable auf alter auf den übergebenen Wert.

    chrische



  • chrische5 schrieb:

    Hallo

    Mr. Blonde schrieb:

    Hallo 🙂

    int getAlter() {return alter;} 
    void setAlter(int a) {alter = a;}
    

    Du hast es doch schon geschrieben. Die Methode getAlter gibt die Memebervarible alter zurück und die Methode setAlter erwartet einen Wert und setzt die Memebervariable auf alter auf den übergebenen Wert.

    chrische

    Kannst du das bitte nochmal ein bissle verständlicher ausdrücken?
    ich schnall das irgendwie nicht ... danke 🙂



  • Hallo,

    wo hast du denn den Code her? Was genau steht denn da zu entsprechenden Funktionen?



  • Wenn du z.B. irgendwo das Alter von Hund2 ausgeben möchtest, kannst du nicht einfach schreiben:

    cout << Hund2.alter;
    

    weil alter private ist.
    Deswegen benutzt du die Methode getAlter und schreibst:

    cout << Hund2.getAlter();
    

    Genauso kannst du nicht schreiben:

    Hund2.alter = 8;
    

    sondern musst die Methode setAlter nutzen:

    Hund2.setAlter(8);
    


  • Hallo

    Ich versuche es erneut:

    int getAlter() {return alter;}
    

    int ist der Rückgabetyp der Methode
    getAlter ist der Name der Methode
    () bedeutet, dass sie keine Parameter erwartet
    die geschweiften Klammern an dieser Stelle bedeuten, dass es sich um eine Inline-Methode handelt
    return alter bedeutet, dass die Memebervariable zurückgegeben wird:

    int a = ClassTest.getAlter()
    
    void setAlter(int a) {alter = a;}
    

    void bedeutet kein Rückgabetyp
    setAlter ist der Name
    (int a) heißt, dass diese Methode einen int-Wert als Parameter erwartet
    {} siehe oben
    alter = a bedeutet, dass die Memebervariabel alter auf den Wert des Parameters gesetzt wird.

    chrische



  • Ah ... danke 🙂

    jetzt hab ich's geschnallt - vielen dank 🙂


Anmelden zum Antworten