Sequenzdiagramm - Klassen



  • Versuch mal deinen Code zwischne [ cpp] und [ /cpp] einzufügen, dann weißt du was DarthZiu mit "schöner formatiert" meinte.



  • Erstmal ein kleiner Tip: Wenn du die Quelltexte in cpp-Tags einschließt, sehen sie wesentlich besser aus 😉

    Zweitens sieht der Code etwas unvollständig aus (z.B. fehlt bei der okornot()-Methode die return-Anweisung - und einen Ctor, der Strings entgegennimmt, gibt es auch nicht)

    Drittens frage ich mich, was dieser Schnipsel eigentlich bewirken soll.

    Und viertens beschreibt ein Sequenzdiagramm die Interaktion verschiedener Objekte - also mußt du mindestens zwei Objekte haben, die sich gegenseitig aufrufen.



  • Sunny55 schrieb:

    So, schön formatiert:
    **
    test.h:
    **

    class Test { 
       public: 
    
              Test(); 
              void initBase(int a); 
              void Verify(string c); 
              int okornot( int z); 
              void execute (Test ggg); 
    }
    

    test.cpp:

    Test::Test()
    {
    } 
    
    //-------------------------
    
    Test::initBase(int a) 
    { 
       int test = okornot(a); 
    } 
    
    //--------------------------
    
    Test::okornot (int a)
    { 
        Test ggg = "ghjghj"; 
        execute (ggg); 
    }
    

    Machs mal bitte konkret !!!

    Danke

    Das wär (halbwegs) schön formatiert. 👍

    Du zeigst uns nur deine Klasse.
    In diesem Falle lässt du den Namen des Objekts weg: [ : Test]

    Wenn du jetzt ein Objekt dieser Klasse in einem Anwendungsprogramm erstellst, bekommt dieses Objekt ja einen Namen. Zum Beispiel "Geschmackstest".

    In diesem Falle kommt in den "Kasten" der Lebenslinie:
    [ Geschmackstest : Test ]

    btw: Eigentlich erstellt man so ein Diagramm bevor man programmiert.



  • Also wenn ich Code habe der so aussieht:

    conrol = new Controller();
    

    Wäre dann nicht

    control:Controller

    in meinem Kästchen?

    Danke



  • Jupp, das ist richtig so.



  • ok, aber wenn ich dann z.b. in in meiner Klasse Controller mit meinem Objekt control (control:Controller)eine Funktion hat, die
    verify heisst ubnd eine die okornot heisst usw. wie stelle ich das dann dar, bzw gehe ich genauer auf die Funktionen ein, oder mache ich nur einen loop auf die Lebenslinie von control:Controller und schreibe verify dran???



  • [Aufrufer]            [control:Controller]
        |                         |
        []      verify()          |
        []---------------------->[]
        []                       []   // Controller führt verify() aus
        []                       []
        []                        |
        []                        |
        []                        |
        []      okornot()         |
        []---------------------->[]
        []                       []   // Controller führt okornot() aus
        |                        []
        |                         |
    


  • hmm,,, nicht ganz.
    Die Funktion verify wird aus dem Controller aufgerufen...
    Also aus main wird der control:Controller erzeugt.
    Dann wird mit control->verify im Controller das Verify aufgerufen. Das ist so, wie du es dargestellt hast.
    Allerdings wird jetzt aus diesem verify das okornot aufgerufen.

    [Aufrufer]
    | new()
    []----------------------> [control:Controller]
    [] |
    [] verify() |
    []---------------------->[]
    [] []-- // Controller führt verify() aus
    [] [] |
    [] [] | okornot() // Controller führt okornot() aus
    [] []<--
    [] |

    stimmt das so? und wenn jetzt in okornot nochmal eine andere Funktion aus Controller aufgerufen wird? Wie mache ich das?
    Und stimmt das new ?



  • Bitte setz mal die code-Tags drumherum... Reicht, wenn du deinen Post nochmal damit editierst.



  • [Aufrufer] 
    |       new() 
    []-----------------> [control:Controller] 
    []                       | 
    []        verify()       | 
    []---------------------->[] // Controller führt verify() aus 
    []                       []--
    []                       []  | 
    []                       []  | okornot() // Controller führt okornot() aus 
    []                       []<-- 
    []                       |
    

    SORRY



  • Die Darstellung stimmt so. okornot() ist ein Selbstaufruf.



  • ok, aber wenn ich in okornot noch eine andere Funktion aufrufe, z.B. testing.
    Wie mache ich das dann.
    Kann ich denn nicht einfach den "Aktivierungsbalken" unterbrechen und dann am Ende des einen Balken das okornot aufrufen und dann im neuen Balken das Testing aufrufen?

    [Aufrufer] 
    |       new() 
    []-----------------> [control:Controller] 
    []                       | 
    []        verify()       | 
    []---------------------->[] // Controller führt verify() aus 
    []                       []--
    []                       |   | 
    []                       |   | okornot() // Controller führt okornot() aus 
    []                       []<-- 
    []                       []--
                             []  |   testing () //Testing wird v okornot aufgerufen
                             []<--
    

    geht das so?



  • Nein, dass kannst du nicht machen. Jeder "Balken" muss einen "Aktivierungspfeil" besitzen, der ihn aufruft.

    Hab dir mal ein Beispiel gemacht:

    http://u16583.hs-harz.de/forum/sequenz.jpg

    Dazu würde etwa folgender Code gehören:

    einObjekt::einObjekt()
    {
        methode1();
        methode2();
    }
    
    einObjekt::methode2()
    {
        methode2_1();
        methode2_2();
    }
    

Anmelden zum Antworten