Celem tego rozdziału jest zaprezentowanie podstawowej techniki projektowania, najczęściej stosowanej w modelach projektowych.

Diagram klas – definicja i zastosowanie

Diagram klas obrazuje pewien zbiór klas, interfejsów i kooperacji oraz związki między nimi. Jest on grafem złożonym z wierzchołków (klas, interfejsów, kooperacji) i łuków (reprezentowanych przez relacje). Diagram klas stanowi opis statyki systemu, który uwypukla związki między klasami, pomijając pozostałe charakterystyki. Najsilniej prezentuje on więc strukturę systemu, stanowiąc podstawę dla jego konstrukcji. W modelowaniu złożonych systemów nie mamy obowiązku przedstawiania ich struktury na jednym diagramie. Powinniśmy pamiętać o tym, że złożenie wszystkich diagramów, a właściwie ich elementów
i relacji, stanowi kompletny model. Możemy zatem przyjąć, że podzbiory zbioru klas użyte na diagramach klas są wybierane celowo i stanowią wynik decyzji zarówno analitycznych, jak i projektowych. Tak na przykład, diagramy klas stanowiące wynik decyzji analitycznych tworzą tzw. widoki klas biorących udział w realizacji danego przypadku użycia (ang. view of participating class – VOPC) i powiązania między nimi.

Zasadniczo jednak diagramy klas służą do zobrazowania statycznych aspektów perspektywy projektowej, w której bierze się pod uwagę wymagania funkcjonalne systemu – usługi, jakie system powinien udostępniać swoim użytkownikom.

Diagram klas – notacja i semantyka

Klasa

najczesciej_stosowana_notacja_UML_2011_html_7d52edab

Rysunek 34. Klasa – notacja

Klasa stanowi opis wybranego podzbioru obiektów, w którym każdy z obiektów posiada takie same atrybuty, operacje, metody, związki i znaczenie.
Z określenia tego wynika założenie dotyczące inwariantności (niezmienności) cech i zachowań obiektów, którym przypisano wspólny klasyfikator w postaci nazwy klasy.

Ponieważ klasa stanowi wzorzec dla tworzonych obiektów, nie jest celowe, aby każdy z nich przechowywał kopię tego samego opisu operacji; wszystkie utworzone obiekty powinny zatem odwoływać się do wspólnej definicji operacji zawartych w klasie. Możemy więc założyć, że klasa nie stanowi jedynie prostego opisu zbioru obiektów, ale zawiera jeden egzemplarz definicji operacji, które działają na wielu egzemplarzach atrybutów, unikatowych dla każdego obiektu.

Atrybut to nazwana właściwość klasyfikatora, określająca zestaw wartości, które mogą przyjmować jego instancje.

Atrybuty klas charakteryzują pojedyncze obiekty lub grupy obiektów, tworząc dla każdego z nich niezależną ich instancję. Jeżeli atrybut klasy może istnieć niezależnie od obiektu, to często lepszym rozwiązaniem jest zbudowanie z niego nowej klasy, np. atrybut Adres dla klasy Klient.

Operacja to funkcja dostarczana przez obiekt, która manifestuje się przez odpowiednie jego zachowanie. Operacja ma sygnaturę, która określa jej dopuszczalne parametry i sposób wywołania. Operacje klasy działają na pojedynczych obiektach lub ich zbiorach. W odróżnieniu od atrybutów, zwykle tworzona jest jedna instancja operacji klasy (przechowywana w klasie), wspólna dla wszystkich obiektów tej klasy. W niektórych sytuacjach operację lepiej jest przedstawić jako klasę (np. operacja wypożyczSamochód jako działanie może być operacją klasy lub może być klasą wypożyczSamochód z własnymi atrybutami: dataWypożyczenia, dataZwrotu, etc.).

Klasa może używać interfejsów do definiowania zestawu operacji oferowanych jej środowisku.

najczesciej_stosowana_notacja_UML_2011_html_3906f465 najczesciej_stosowana_notacja_UML_2011_html_m1036800d

Rysunek 35. Elementy składowe klasy

Metoda to implementacja operacji. Określa algorytm lub procedurę, która dostarcza wynik operacji.

 

Związek asocjacji (powiązania)

najczesciej_stosowana_notacja_UML_2011_html_m2e7d3cd9

Rysunek 38. Związek asocjacji – notacja

Związek asocjacji to semantyczna relacja (związek) pomiędzy dwoma bądź większą liczbą klas, która ustanawia powiązania (wiązania) pomiędzy instancjami klasyfikatorów. W szczególności asocjacja może zachodzić pomiędzy dwoma lub większą liczbą klas. Często do powiązania dodawane są nazwy ról i liczebności.

image

Rysunek 39. Przykład użycia asocjacji wraz z rolą

Na rysunku 39 zamieszczono przykład zastosowania asocjacji wraz z rolą. Rola to swego rodzaju „oblicze”, które klasa przy jednym końcu powiązania prezentuje klasie przy drugim końcu.

Związek agregacji

najczesciej_stosowana_notacja_UML_2011_html_m9cd5d51

Rysunek 40. Związek agregacji – notacja

Związek agregacji to rodzaj asocjacji pomiędzy klasyfikatorami, która określa relację „całość-część” pomiędzy agregatem (całością) a jego częściami; egzemplarz należący do klasyfikatora reprezentującego „całość” zawiera – jako swoje komponenty – elementy należące do klasyfikatora reprezentującego „część”. W przypadku klas, wartościami atrybutów obiektu zagregowanego mogą być obiekty należące do klas reprezentujących „części”.

najczesciej_stosowana_notacja_UML_2011_html_2c55333d

Rysunek 41. Przykładowe zastosowanie agregacji

Na rysunku 41 pokazano przykładową agregację, która oznacza,
że ubezpieczenie jest częścią wypożyczenia samochodu.

Silna agregacja (kompozycja)

najczesciej_stosowana_notacja_UML_2011_html_m6b11a4e6

Rysunek 42. Silna agregacja – notacja

Związek silnej agregacji (kompozycja, agregacja całkowita) to rodzaj agregacji z przynależnością elementów składowych do elementu macierzystego oraz z powiązanym okresem życia elementów składowych z ich elementami macierzystymi. Elementy składowe mogą być kreowane po utworzeniu elementu macierzystego. Raz utworzone istnieją i są kasowane wraz ze swoim elementem macierzystym. Mogą też być kasowane przed momentem kasowania elementu macierzystego. Kompozycja może być rekursywna.

Pozostałe diagramy UML:

Zostaw odpowiedź

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć tych HTML tagów i atrybutów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Close