2012-08-02 11 views

Odpowiedz

13

Najpierw umieść obiekt wiadomości UML z jego bazą dołączoną do linii życia.

Następnie kliknij dwukrotnie strzałkę (lub kliknij prawym przyciskiem myszy Właściwości) i zmień ustawienie pola typ wiadomości rozwijane do rekurencyjnego, a otrzymasz coś takiego:

enter image description here

Teraz możesz przeciągnąć zielony punkt kontrolny, aby strzałka Wiadomość wyglądała tak, jak chcesz. (Uwaga: wydaje się, że w przypadku obiektu komunikatu rekursywnego możesz TYLKO wybrać obiekt, klikając go dokładnie tam, gdzie powinien znajdować się zielony punkt kontrolny. Mówię "będzie", ponieważ oczywiście nie możesz tego zobaczyć zielony punkt kontrolny, gdy obiekt nie jest zaznaczone)

Jeśli chcesz, możesz utworzyć inny obiekt UML Lifeline i umieść go nakładających istniejącą linię życia, na przykład:.

extra lifeline example

Ten ISN Jest to jednak idealne, ponieważ nic nie jest związane z drugą linią życia. Obiekt komunikatu rekurencyjnego nie pozwala wybrać miejsca, w którym ma zostać dołączony grot strzałki, ponieważ jest on automatycznie dołączany do linii życia, z której pochodzi. A ponieważ druga linia życia nie jest do niczego przymocowana, jeśli poruszasz obiektami, pozostaniesz w tyle. Ale wygląda całkiem nieźle, jeśli tego właśnie szukasz. :)

+0

Wielkie dzięki. Interesujące jest to, że nierekurencyjne samopoznanie wydaje się być nieobecne. – JDelage

+0

Myślę, że masz tu zły pomysł "rekursywności". Zazwyczaj, gdy myślimy o rekursji, myślimy o "funkcji rekursywnej", ale tutaj zamiast "funkcji wywołującej samą siebie" mamy "obiekt sam nazywający się". W tym sensie każde auto-połączenie jest z definicji rekurencyjne. – feuGene

0

Samo połączenie (lub dowolne inne skojarzenie) w UML jest lepiej wyrażone przy użyciu standardowej notacji asocjacyjnej zamiast wiadomości wiadomości. W DIA wstaw notację asocjacyjną z przybornika po lewej stronie i dodaj ją do swojego płótna. Następnie, aby połączyć go z klasą rekursywnie (do siebie), dwukrotnie kliknij i wybierz "Autoroute" jako nie. Umożliwi ci to samodzielne ukształtowanie trasy i nie ograniczy cię do automatycznej linii prostej, która zostanie narysowana podczas łączenia klasy ze sobą.

Można by skończyć z czymś takim (w tym przykładzie jest to reprezentacja węzeł w połączonej listy): enter image description here

+0

Pytanie dotyczyło samodzielnego wywoływania w Diagramie sekwencji, a nie w Diagramie klasy. –