w ,

Diagram klas

Diagram klas przedstawia klasy oraz relacje między nimi.

Aby dobrze zrozumieć zasadę działania musimy sobie przypomnieć/przyswoić podstawowe pojęcia:

  • Klasa – jest to definicja według której będzie definiowany obiekt. Określa jego typy, zachowanie oraz działanie. Klasa posiada atrybuty oraz operacje. Przykładem może być klasa człowiek, którego atrybutami są: imię, nazwisko, wiek. A operacjami np. „przedstaw się”.
  • Obiekt – konkretny egzemplarz klasy ze specyficznie określonymi atrybutami. Dla powyższego przykładu klasy człowiek, możemy utworzyć obiekt Jan Kowalski w wieku 30 lat. Możemy wywołać na nim operacje „przedstaw się”. Jednak wiadomo, że będzie ona wyglądała inaczej niż w przypadku innego obiektu np. Maria Nowak.
  • Relacja – oddziaływanie/wpływ na siebie, jakie mają dwa lub więcej obiektów. Np. klasa samochód oraz klasa koło. Prosty związek: klasa samochód zawiera klasę koła.

Diagram klas, jak widać to na obrazku obok, jest podzielony na trzy sekcje:

  • Nazywa klasy
  • Atrybuty
  • Operacje

Nazwa klasy

  • Zazwyczaj (zalecany) rzeczownik.
  • Jeśli klasa jest abstrakcyjna, jej nazwę wpisujemy czcionka pochyloną.
  • Każdą inną dodatkową informacje o klasie wpisujemy w klamerkach w prawym dolnym rogu pierwszej sekcji.

Atrybuty

Atrybuty umieszczone w środkowej sekcji mają budowę:
[specyfikator dostępu] [nazwa] [typ] [krotność] [wartość początkowa] [opis cech]

Specyfikatory dostępu:

+ publiczny
– prywatny
~ pakietowy
# chroniony

Nazwa:

Określa to jak klasa ma odwoływać się do atrybutu. Są to rzeczowniki, a więc powinny zaczynać się z małej litery. Nazwa może zawierać krotność. Jeśli krotność jest mnoga, to można zapisać w postaci mnogiej np. „osoby” jako nazwę tablicy przechowującą obiekty typu człowiek.

Typ:

Określa ograniczenie rodzaju obiektu. Np. typ prosty int lub obiekt człowiek.

Krotność (nieobowiązkowe):

1 – w danym atrybucie może być przechowywany tylko jeden obiekt. Np. człowiek ma jedno serce.
0..1 – co najwyżej jeden (0 lub 1). Np. człowiek może mieć co najwyżej jednego partnera.
* – Dowolna liczba.
3…7 – dolne i górne ograniczenie prezentuje zakres ilości elementów, jakie mogą występować.

*Pominięcie krotności w opisie atrybutu oznacza, że atrybut występuje tylko raz.

Wartość początkowa (nieobowiązkowe):

Jeśli atrybut ma zostać zainicjowany jakąś wartością, to w tym miejscu podaje się jej wartość.
Brak takiej informacji na diagramie oznacza, ze obiekt ma przyjąć wartość domyślną – zgodną z językiem oprogramowania.

Opis cech (nieobowiązkowe):

Maksymalnie jedno, dwa wyrazy sugerujące szczególe cechy dla atrybutów np. readonly, const, unique, bag itp.


Operacje

Atrybuty umieszczone w ostatniej, trzeciej sekcji posiadają budowę:
[specyfikator dostępu] [nazwa] [lista parametrów] [opis cech]

Specyfikatory dostępu:

+ publiczny
– prywatny
~ pakietowy
# chroniony

Nazwa

napis zaczynający się od małych liter – powinien to być czasownik.

Lista parametrów

Lista parametrów oddzielonych przecinkami
Składnia listy paramentów
[kierunek] [nazwa]: [typ] = [wartość domyślna]

Kierunek in (wejściowy), out (wyjściowy), ref (referencyjny). Domyślnie in.
Nazwa, typ i wartość domyślna – dokładnie tak samo jak w atrybutach

Opis cech (nieobowiązkowe):

Można opisać dodatkową adnotację cechy dla operacji. Np. operacja Kwerendy (Query) – nie zmieniają stanu obiektu. Jeśli po liście parametrów podamy „{query}” to znaczy, że nie zmienia ona stanu obiektu. Wszystkie pozostałe to modyfikatory. Domyślenie nie padając żadnego oznacza, że dana operacja jest modyfikatorem i zmienia stan obiektu.


Na koniec chciałem dodać, że operacje, które nie zmieniają stanu obiektu (np. konwertery) powinny być statyczne i finalne ze względów wydajnościowych. Należy się również zastanowić, czy nie należy operacji statycznych wydzielić do innej klasy.
Na diagramie UML nie warto jest dodawać geterów i seterów. Są one oczywiste z punktu widzenia programisty, a na diagramie zaciemniają tylko obraz.

Napisane przez Przemysław Bykowski

Aktywny programista i energiczny trener. Specjalizuje się w Spring Boot i uczę go w ramach AkademiaSpring.pl. Po godzinach udzielam się na YouTubach. Więcej o mnie.

Dodaj komentarz

Adnotacje w języku Java

Koncepcja SOA