Celem wpisu jest prezentacja diagramu klas, który rysujemy, aby przedstawić statyczną strukturę systemu, ukazując klasy, ich atrybuty, metody oraz relacje między nimi, co stanowi podstawę do zrozumienia i implementacji oprogramowania.
Diagram klas – definicja i zastosowanie
Diagram klas obrazuje zbiór klas, interfejsów oraz związki między nimi. Diagram klas przedstawia statyczną strukturę systemu, podkreślając związki między klasami. W modelowaniu złożonych systemów można tworzyć wiele diagramów klas, skupiających się na różnych aspektach systemu. Kompleksowy model systemu powstaje przez złożenie wszystkich diagramów.
Diagram klas – notacja i semantyka
Klasa
Klasa to opis zbioru obiektów o takich samych atrybutach i operacjach. Kluczowe aspekty klasy:
- Atrybuty: Nazwane właściwości klasy, określające zestaw możliwych wartości dla instancji.
- Operacje: Funkcje dostarczane przez obiekt, manifestujące się przez jego zachowanie.
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. Warto zauważyć, że:
- Klasa stanowi wzorzec dla tworzonych obiektów.
- Obiekty odwołują się do wspólnej definicji operacji zawartych w klasie.
- Atrybuty charakteryzują pojedyncze obiekty lub ich grupy.
- Operacje działają na pojedynczych obiektach lub ich zbiorach.
- W niektórych przypadkach atrybuty lub operacje mogą być lepiej reprezentowane jako osobne klasy.
Diagramy klas stanowią fundamentalne narzędzie w modelowaniu obiektowym i UML, służąc do przedstawiania statycznej struktury systemu. Ich głównym zadaniem jest reprezentacja klas wraz z ich atrybutami i metodami oraz ilustracja różnorodnych relacji między klasami, takich jak asocjacje, agregacje, kompozycje i dziedziczenie. Dzięki temu diagramy klas umożliwiają skuteczną wizualizację struktury systemu, co znacząco ułatwia zrozumienie jego ogólnego działania.
Diagram klas powiązania
Obecnie diagram klas przeważnie są wykorzystywane do budowania diagramów mających na celu opisanie struktury przetwarzanych danych.
Powyższy diagram przedstawia fragment diagramu klas UML, pokazujący relacje między czterema klasami: A, B, C i D. Oto opis diagramu wraz z definicjami poszczególnych typów relacji:
- Asocjacja (między Klasą D i Klasą A):
- Oznaczenie: prosta linia
- Krotność: 1 (Klasa D) do 0..* (Klasa A)
- Definicja: Asocjacja to ogólny związek między klasami, oznaczający, że obiekty tych klas są w jakiś sposób powiązane ze sobą. W tym przypadku jeden obiekt Klasy D może być powiązany z wieloma obiektami Klasy A (lub z żadnym).
- Silna agregacja – kompozycja (między Klasą A i Klasą B):
- Oznaczenie: linia z wypełnionym rombem przy klasie zawierającej
- Definicja: Kompozycja to specjalny rodzaj agregacji, gdzie część (Klasa B) nie może istnieć bez całości (Klasa A). Obiekty klasy składowej są tworzone i niszczone wraz z obiektem klasy zawierającej.
- Agregacja (między Klasą A i Klasą C):
- Oznaczenie: linia z pustym rombem przy klasie zawierającej
- Definicja: Agregacja to relacja typu „całość-część”, gdzie część (Klasa C) może istnieć niezależnie od całości (Klasa A). Wskazuje, że obiekt jednej klasy zawiera obiekty innej klasy, ale nie są one ściśle zależne od siebie.
Dodatkowo, warto wspomnieć o innych typach relacji UML, które nie występują na tym diagramie:
- Dziedziczenie (generalizacja):
- Oznaczenie: strzałka z pustym grotem wskazująca na klasę nadrzędną
- Definicja: Relacja między klasą ogólną (nadrzędną) a klasą bardziej szczegółową (podrzędną). Klasa podrzędna dziedziczy atrybuty i metody klasy nadrzędnej.
- Realizacja (implementacja):
- Oznaczenie: przerywana linia ze strzałką wskazującą na interfejs
- Definicja: Wskazuje, że klasa implementuje określony interfejs, zobowiązując się do dostarczenia wszystkich metod zdefiniowanych w tym interfejsie.
- Zależność:
- Oznaczenie: przerywana linia ze strzałką
- Definicja: Luźna relacja między klasami, gdzie zmiana w jednej klasie może wpłynąć na drugą, ale nie ma między nimi bezpośredniego powiązania strukturalnego.
Diagram klas przykład
Powyższy diagram przedstawia fragment systemu rezerwacji dla wypożyczalni samochodów. Oto szczegółowy opis diagramu:
- Klasa Klient:
- Atrybuty: imie (String), nazwisko (String), numerPrawaJazdy (String)
- Relacja: agregacja z klasą Adres (biały romb)
- Relacja: asocjacja z klasą Rezerwacja (linia prosta), krotność 1 do 0..* (jeden klient może mieć wiele rezerwacji lub żadnej)
- Klasa Adres:
- Atrybuty: miasto (String), ulica (String)
- Jest agregowana przez klasę Klient
- Klasa Rezerwacja:
- Atrybuty: dataRozpoczecia (Date), dataZakonczenia (Date), status (StatusRezerwacji)
- Relacja: kompozycja z klasą Ubezpieczenie (czarny romb), krotność 1 do 1 (każda rezerwacja ma dokładnie jedno ubezpieczenie)
- Relacja: asocjacja z enumeracją StatusRezerwacji, krotność 1 do 1
- Klasa Ubezpieczenie:
- Atrybuty: koszt (Double), typ (String)
- Jest częścią kompozycji z klasą Rezerwacja
- Enumeracja StatusRezerwacji:
- Wartości: OCZEKUJĄCA, POTWIERDZONA, ANULOWANA, ZAKOŃCZONA
Relacje na diagramie:
- Agregacja między Klient a Adres: sugeruje, że klient ma adres, ale adres może istnieć niezależnie od klienta.
- Asocjacja między Klient a Rezerwacja: pokazuje, że klient może dokonywać rezerwacji.
- Kompozycja między Rezerwacja a Ubezpieczenie: wskazuje, że ubezpieczenie jest integralną częścią rezerwacji i nie może istnieć bez niej.
- Asocjacja między Rezerwacja a StatusRezerwacji: określa, że każda rezerwacja ma przypisany status.
Diagram ten przedstawia kluczowe elementy systemu rezerwacji, pokazując jak klient, jego adres, rezerwacja i ubezpieczenie są ze sobą powiązane, oraz jak status rezerwacji jest reprezentowany w systemie.
Podsumowanie
Diagramy klas jako ważna część dokumentacji technicznej, przyczyniają się do lepszego zarządzania i utrzymania systemu w długiej perspektywie. W procesie projektowania oprogramowania diagramy klas odgrywają niezbędną rolę, pomagając w organizacji i zrozumieniu złożonych systemów poprzez przejrzyste przedstawienie ich struktury i wzajemnych powiązań między opisywanymi elementami.
Pozostałe diagramy UML: