Komposition



  • Hallo
    Ich stehe vor einem riesen Problem. Ich hab morgen meoine Abschlussprüfung und wir wurden darüber aufgeklärt das jetzt doch C++ mitem kleinen Teil drankommt.. Jetzt habe ich meine ganzen Unterlagen zusammen gesucht und hab au alles durch ausser das Thema Komposition. Habe das bei Google eingeben und nix gefunden und in meinem Lehrbuch steht da au nix drin. Kann mir irgendjemand erklären wie das funktioniert?

    #include <iostream>
    class Adresse
    {
    private:      char Strasse;
    };
    class Mitarbeiter
    {
    private:      int Stunde;
          Adresse m_Adresse;
    };
    

    das habe ich in meinem Heft stehen..aber ich habe absolut keine Plan wie man die Sachen da ansprechen soll. Ich wäre wirklich für jede Erklärung dankbar. Ich würde au nich nachfragen aber weiss echt nich wie ich das raffen soll... denn normalerweisse programmier ich nich...



  • Komposition heißt, dass eine Klasse als Element ein Objekt einer anderen Klasse hat und mit diesem arbeitet. In deinem Beispiel hat die Klasse Mitarbeiter ein Objekt der Klasse Adresse.



  • und wie greife ich dann auf Strasse zu???



  • Trestor schrieb:

    und wie greife ich dann auf Strasse zu???

    Dazu musst du entsprechende Zugriffsmethoden implementieren oder strasse public machen.

    Beispiel mit Zugriffsmethode:

    #include <iostream>
    #include <string>
    using namespace std;
    
    class Adresse
    {
    private:      string strasse;
    public:       void setStrasse(const string& s) { strasse = s; }
                  const string& getStrasse() const { return strasse; }
    };
    class Mitarbeiter
    {
    private:      int Stunde;
          Adresse m_Adresse;
    };
    

    In der Klasse Mitarbeiter (und nicht nur da) kannst du jetzt mit

    m_Adresse.setStrasse("der_neue_strassenname");
    

    den aktuellen Straßennamen ändern. Mit

    m_Adresse.getStrasse();
    

    liefert dir den aktuellen Straßen-Namen als std::string zurück.

    Am besten nochmal in einem Buch/Tutorial das Kapitel Klassen nachschlagen, da dies doch die absoluten Grundlagen der OOP sind...

    Caipi



  • sowas mach ich oft, aber ich wusste nie dass sowas einen eigenen namen hat. ich denke im selbstsutium gehen auf diese art und weise viele begriffe verloren.



  • also kann ich jede normal Methode normal ansprehcen..sprich es macht kein Unterschied ob die Klasse dadrin steht oder einfach als anderre Klasse da eingefügt ist.. Es is genau das gleich als wenn sie selber dadrin stehen würde..?



  • Komposition bedeutet einfach nur, ein Objekt aus anderen Objekten zusammenzusetzen, so wie du zum Beispiel den Mitarbeiter zusammensetzt aus der Stundenzahl, die er gearbeitet hat und seiner Adresse (und seiner Telefonnummer, seiner Büronummer, seiner Mailadresse...) vermutlich ist auch die Adresse ein Kompositum, zusammengesetzt aus einer Hausnummer, einem Straßennamen, einer Postleitzahl, dem Ortsnamen,...

    Zugriff auf die Elemente bekommst du mit

    meinmitarbeiter.m_adresse
    

    , wenn meinmitarbeiter vom Typ Mitarbeiter ist. Um darauf so von außen zugreifen zu können muss allerdings m_adresse public definiert sein, besserer Stil sind auf jeden Fall Zugriffsmethoden wie Caipi sie dargestellt hat.


Anmelden zum Antworten