Eingebettete Klassen...wozu?



  • Wozu sind eingentlich eingebettete Klassen sinnvoll?

    Klasse1.h:

    class Klasse2;
    class Klasse3;
    
    class Klasse1
    {
    public:
        Klasse1();
        virtual ~Klasse1();
    private:
        friend class Klasse2;
    
    };
    
    class Klasse3 : public Klasse4
    {
    };
    
    class Klasse2 : public Klasse4
    {
    public:
    
    protected:
    Klasse2();
    virtual ~Klasse2();
    
    private:
        friend class Klasse1;
        Klasse1* klasse1;
        Klasse3 klasse;
    
    };
    

    Laut UML-Tool Rational Rhapsody ist die Klasse 3 in die Klasse 2 eingebettet!? 😕
    Stimmt das? Wenn ja, wozu ist das gut?
    Sorry, das Beispiel ist etwas unübersichtlich, aber ihr versteht das bestimmt.



  • Klasse 2 hat ein Element von Klasse 3 - setz z.B. dort einen STL-Container ein, in dem du deine internen Daten unterbringst, dann erkennst du den Sinn.



  • Du meinst in Klasse3? Dann bekomme ich nur über Klasse2 kontrollierten Zugriff oder wie?



  • Ich meine, anstelle Klasse3 - das Element 'klasse' ist ein ganz normales Datenelement von Klasse2, von außen ist es egal, daß es existiert, aber Klasse2 kann seine Methoden verwenden, um die eigene Arbeit auszuführen (z.B. eine eigene Containerklasse nutzt die Methoden von std::list, um ihre Elemente zu speichern, oder ein "Auto" hat einen eingebetteten "Motor", an den es die "Zündung an",... Befehle weiterleitet).


Anmelden zum Antworten