2015-10-17 12 views
5

Zgodnie ze specyfikacją UML możemy oznaczać zależność między dwiema klasami za pomocą stereotypów <<Create>> lub <<Instantiate>>.Zależność "Twórz" vs "Twórz" w UML

Czy wiesz, jakie są różnice między tymi stereotypami?

Powstał przy UML specyfikacji 2,5 (rozdział 22.3 standardowe stereotypy.):

  1. Dla <<Create>>

    zależność wykorzystanie oznaczający, że separator klienta tworzy wystąpień klasyfikatora dostawcy

  2. Dla <<Instantiate>>

    Zależność między Wykorzystanie klasyfikatorów wskazujących, że operacje na kliencie tworzyć instancje dostawcy

+1

Nie wstawiłbym wszystkich definicji UML na saldo złota. Dla mnie obie definicje brzmią bardzo podobnie. Z mojego rozumowania wynika, że> przypomina (Boże) stworzenie, więc coś nowego. <> w przeciwieństwie do bardziej przypomina operację klonowania. YMMV –

Odpowiedz

1

zauważyłem, że < < Tworzenie >> stereotypu może być stosowany nie tylko do „Wykorzystanie "zależność ale także od " BehavioralFeature "(patrz sekcja 22.2 w specyfikacji UML).

W języku UML "BehavioralFeature" odpowiada konkretnym metodom w klasie lub interfejsie.

Stąd jeśli oznaczymy konkretnej metody w klasie z < < Create >> lub < < Destroy >> rozumiemy, że tworzy/niszczy instancji tej klasy.

Możemy wykonać równolegle pomiędzy oznakowaniem metodę z < < Create >> i znakowanie Wykorzystanie Zależność z < < Tworzenie >>.

Po zaznaczeniu zależności użycia od < < Utwórz >> następnie oznacza to, że określona metoda w klasie klienta tworzy wystąpienie klasy dostawcy. Stąd tworzymy wystąpienie Dostawcy w ciele naszej klasy klienta. Klient i dostawca są silnie sprzężeni tutaj.

Z drugiej strony, jeśli zaznaczymy zależność użytkowania za pomocą < < Natychmiastowa >> następnie Klasa klienta deleguje tworzenie Dostawcy na inne Obiekty. Dlatego tworzy pośrednio Dostawcę. W tym przypadku klient i dostawca są sprzężeni luźno. Na przykład, to się dzieje, jeśli tworzymy Dostawca poprzez jeden z kreacyjnych wzorców: Object Pool, Prototype, metoda fabryki itp

Uwaga:

Ogólnie rzecz biorąc, to nie jest bardzo jasne, że różnice w specyfikacji . Mam nadzieję, że w przyszłych wydaniach tego (ponad 2.5 wersji) mamy bardziej jasne definicje.

+0

Czy to jest twoja interpretacja tych rzeczy lub czy masz źródło, które potwierdza ten pogląd? –

+0

To jest moja własna analiza na podstawie specyfikacji UML – Vitaly

2

Michael Jesse Chonoles Tak, "utwórz" jest używany w diagramach sekwencji. To stereotyp na wiadomość. "Utwórz" to także stereotyp dotyczący funkcji behawioralnej w klasyfikatorze wskazującym, że jest to konstruktor wystąpień tego klasyfikatora (lub odpowiednik dla obiektów nieobiektowych).

Gdy "Utwórz" jest używane na zależności, nie wydaje się to dużo inne niż "Natychmiastowe". Osobiście używam zależności "Natychmiastowy". Kiedy mam na myśli prawdziwą instancję zorientowaną obiektowo, otrzymałem wywołanie konstruktora (w ten sposób przetłumaczyłem model na kod). Chciałbym użyć "Utwórz", gdy jest to inny rodzaj tworzenia, bardziej pośredni, konceptualny lub nieobiektywny.

Oto kilka przykładów. Chciałbym użyć "Utwórz", aby powiedzieć MSWord -> «Utwórz» dokument, modelarz «Utwórz» model. Chociaż zwykle nie będę tego szczegółowo modelował, użyłbym "Utwórz", aby wskazać komponent «Utwórz» nowy rekord bazy danych, menedżer bazy danych «Utwórz» nową bazę danych, programistę «Utwórz» nową aplikację. Lub stwórz nowy element w tablicy (spoza oo). Może się to zdarzyć bez bezpośredniego wywoływania tradycyjnego konstruktora obiektowego i nie można go bezpośrednio przekonwertować na kod.

Z drugiej strony, jeśli miałbym operację małżeństwa u osoby, prawdopodobnie "powstanie" obiektu klasy stowarzyszeniowej małżeństwa.

Ponieważ większość mojego modelowania jest pojęciowa, w praktyce używam "tworzenia". Chociaż, nawet wtedy nie pojawia się tak często.

+0

Zobacz także tutaj: https://www.linkedin.com/grp/post/143183-6061637312238927877 –