Spotykam czasem programistów, którzy nie znają notacji UML-owej. Poniżej opisuje cześć nomenklatury stosowanej w języku UML. Skupię się głownie na diagramie klas. Czyli tym co dla Nas najważniejsze.
Szczegóły co to jest UML, jaka jest aktualna wersja i jakie są inne rodzaje diagramów, zamieszczone są na wikipedi. Polecam poczytać i przygotować grunt pod naukę.
Diagramy klas stosujemy gdy chcemy pokazać jakie zależności występują pomiędzy obiektami lub jakie obiekty występują w aplikacji. Stosujemy je głownie aby zaplanować architekturę aplikacji. Choć z doświadczenia wiem, że często stosuje się je do zaplanowania architektury pojedynczych rozwiązań.
Zaczynamy!
- Pakiety
Czyli po prostu podzespoły czyli po ludzku dll-ki.
Dll-ka jest prostokątem gdzie jej nazwa jest wyjustowana do lewej. Wszystkie klasy należące do podzespołu są rysowane w środku. Dotyczy to też namespace-ów.
- Klasa
Klasa jest prostokątem, gdzie nazwa klasy jest umieszczana na środku. W UML-u nie ma obowiązku wpisywać do klasy wszystkich metod, pól i właściwości. Wpisujemy te, które są istotne dla pokazania danej architektury.
- Metody
Metody oznacza się wg wzoru:
[widoczność] nazwa_metody [(parametry)] [: typ wartości zwracanej] ustawienia}]
Dla widoczności mamy do wyboru:
„+” – element publiczny,
„-” – element prywatny,
„#” – element chroniony.
Parametry oznacza się wg wzoru:
nazwa [: typa parametru]
Krótkie omówienie:
Moja klasa posiada 2 metody publiczne i 1 metodę prywatną.
Pierwsza metoda zwraca void i nie ma argumentów.
Druga metoda zwraca string i nie ma argumentów.
Trzecia metoda zwraca void i ma jeden argument typu string.
Jak widać, rysowanie klas i metod w nich zawartych jest proste.
- Relacje
Powyżej przykład dziedziczenia. Strzałka pełna nie wypełniona pokazuje kierunek dziedziczenia. Czyli po ludzku, TwojaKlasa dziedziczy MojąKlasę.
Powyżej przykład innej relacji. Strzałka jest otwarta linia jest ciągła. Oznacza to, że w klasie JejKlasa jest referencja do klasy MojaKlasa. Czyli JejKlasa posiada zmienną, która przechowuje referencje do obiektu MojaKlasa
Kolejny przykład przedstawia relację gdzie JejKlasa nie przechowuje referencji do MojejKlasy. Może to się zdarzyć gdyby klasa MojaKlasa była statyczna. Używając w klasie JejKlasa jakiś metod statycznych z MojejKlasy możemy śmiało zaznaczyć, że nie ma zmiennych przechowujących referencje do klasy MojaKlasa poprzez przerywaną linie i otwartą strzałkę.
so far, so good
- Interfejsy
Interfejsy rysujemy tak jak klasę ale dodajemy nad nazwą napis <interfejs>.
Metody rysujemy z zachowaniem tych samych zasad co w klasach.
- Implementacja interfejsu
Najważniejsza relacja jeśli chodzi o interfejsy to implementacja interfejsu.
Powyżej przykład jak MojaKlasa implementuje interfejs IJegoIntefejs
Powyższe diagramy są absolutnym minimum jeśli chodzi o notację UML. Dzięki zapamiętaniu tych zasad możemy już rysować architekturę aplikacji lub pojedynczych rozwiązań. Implementować wzorce projektowe. Do czego gorąco zachęcam.