UML Frage wie setze ich das in C++ um



  • Hallo Leute!!! Ich habe da mal ein frage
    Wie sieht der Quellcode für dieses Kommunkationsdiagramm aus ??

    ___
    | |
    ---- __________
    | | |
    ---|--- | :C1 |
    | 2:op2()
    |
    |
    Aktuer | |
    |1:op1()|
    | |
    | |
    | | | |
    | :C2 | | :C2 |
    |
    | |
    __|

    ich hoffe man kann mit diesem Bild was anfangen



  • ___
       |  |
       ----                     __________
        |      ________________|         |____
     ---|---                   |  :C1    |____| 2:op2()
                               |_________|
       Aktuer                   |       | 
                                |1:op1()|
                                |       |
                        ________|_   ___|______
                       |         |   |        |
                       |  :C2    |   |   :C2  |
                       |_________|   |________|
    

    jetzt schon 😃



  • So:

    int main() {
    // ...
      Communicate();
    // ...  
    }
    

    Öhm Scherz bei Seite, du willst net wirklich, dass wir dir n fertiges Programm machen?



  • Du meinst diese Diagramm:

    ___
       |  |
       ----                     __________
        |      ________________|         |____
     ---|---                   |  :C1    |____| 2:op2()
                               |_________|
       Aktuer                   |       | 
                                |1:op1()|
                                |       |
                        ________|_   ___|______
                       |         |   |        |
                       |  :C2    |   |   :C2  |
                       |_________|   |________|
    

    Das ist ein Collaboration Diagram. Es gibt zwei Klassen C1 und C2 und von C2 zwei Objekte, auf die das eine Objekt von C1 zugreift. Der Code könnte etwa so aussehen:

    class C2
    {
    public:
        void op1() { /* irgendwas */ }
    };
    
    class C1
    {
    public:
        void operator()() // namelos, da unspezifiziert; ruft der Akteur (s.o.)
        {
            m_ca->op1();   // 1:op1()
            op2();         // 2:op2()
        }
    
    private: // muss nicht; kann
        void op2() { /* irgendwas */ }
    
        // Member
        C2* m_c2a;
        C2* m_c2b;
    };
    

    .. das ist natürlich unvollständig, da nur das (nicht 😉 ) implementiert wird, was durch den Aufruf des Akteurs ausgelöst wird.

    Gruß
    Werner


Anmelden zum Antworten