Diagramy klas
Halina Tańska
Unified Modeling Language
Diagramy struktury:
• diagram klas (class diagram)
• diagram obiektów (object diagram)
• diagram komponentów (component diagram)
• diagram pakietów (package diagram)
• diagram wdrożenia (deployment diagram)
• zbiorowy diagram
komponentów (composite structure diagram)
Diagramy dynamiki:
• diagram przypadków użycia (use case diagram)
• diagram czynności (activity diagram)
• diagram maszyny stanów (state machine diagram)
• diagram sekwencji (sequence diagram)
• diagram komunikacji
(communication diagram)
• diagram przeglądu
współdziałania (interaction overview diagram)
• diagram czasowy (timing diagram)
Diagram klas
• Świat, postrzegany z perspektywy obiektowej, składa się z wielu niezależnych obiektów, które działają według
pewnych reguł i współpracują ze sobą dla osiągnięcia założonego celu.
• Podstawowym sposobem budowania i porządkowania modelu świata jest klasyfikacja, czyli odnajdywanie klas (zbiorów) obiektów podobnych, zbudowanych zgodnie z tym samym wzorcem i podejmujących takie same
działania.
• Poznawanie świata przez klasyfikowanie postrzeganych obiektów jest fundamentalnym wzorcem pozyskiwania i porządkowania wiedzy przez człowieka.
Diagram klas
• Diagramy klas służą do obrazowania statycznych aspektów projektowanych systemów jako:
– Projekt struktury logicznej baz danych
– Projekt składników systemu stanowiący podstawę do stworzenia informatycznego systemu (kodu)
• Na podstawie diagramów klas bardzo prosto można generować kod (SQL, Java, C++ itd.)
• Diagramy klas są wykorzystywane przez
analityków na etapie opracowywania koncepcji systemu jak i przez projektantów na etapie
projektowania implementacji
Diagram klas
Kluczowymi elementami są:
• klasy (class)
• związki (association)
• interfejsy (interface)
Dodatkowo diagram może zwierać:
• notatki (note)
• ograniczenia (constraints)
• pakiety (packages)
Diagram klas
• Najczęściej spotykany w modelach obiektowych,
• Obrazuje statyczne aspekty systemu,
• Jeżeli diagram klas zawiera klasy aktywne, dotyczy tylko statycznych aspektów
perspektywy projektowej,
• Wykorzystywany jest przy budowaniu systemów wykonywalnych z użyciem inżynierii do przodu i inżynierii wstecz.
Diagram klas
Klasa jest opisem zbioru obiektów, które mają takie same:
• atrybuty
• operacje
• związki
• znaczenia
Klasy – wzorce obiektów
• Klasa
– Opis grupy obiektów o jednolitym zbiorze atrybutów i sposobie zachowania
– Zawiera opis tworzenia obiektów klasy
• Klasę można nazwać „fabryką obiektów”
• Każda klasa posiada „wzorzec” (plany) dla tworzenia obiektów tej klasy.
• Każdy nowo tworzony obiekt klasy posiada osobną tożsamość, a także może mieć różne wartości atrybutów.
1/4
Model świata – związki klas obiektów
• Obiekty w czasie swojego życia kontaktują się z innymi obiektami. Kontakty polegają na
wzajemnym korzystaniu z udostępnianych usług.
• W trakcie modelowania określamy związki między klasami obiektów.
• Podstawowy „model świata” w podejściu
obiektowym stanowi zatem zbiór klas obiektów wraz z odpowiednimi związkami między nimi.
2/4
• Dowolny obiekt jest instancją abstrakcyjnego pojęcia, jakim jest klasa (ang. class) obiektu.
• Podstawę identyfikacji klasy stanowią grupy obiektów charakteryzujące się:
– identyczną strukturą danych tj. takimi samymi atrybutami;
– identycznym zachowaniem tj. takimi samymi operacjami;
– identycznymi związkami;
– identycznym znaczeniem w określonym kontekście.
Model świata – związki klas obiektów3/4
Rodzaje diagramów klas
Diagramy klas, ze względu na znaczną liczbę elementów, jakie potencjalnie mogą na nich wystąpić, cechują się zróżnicowanym
poziomem szczegółowości.
Należy rozróżnić dwa poziomy tworzenia:
poziom konceptualny,
poziom implementacyjny.
Konceptualny diagram klas zawiera
wyłącznie podstawowe elementy, cechując się przystępnością nazewnictwa klas, atrybutów i operacji.
Implementacyjny diagram klas jest stopniowo wzbogacany o elementy opisu niezbędne dla prawidłowej specyfikacji modelu, takie jak typy danych, zobowiązania, widoczność,
statyczność, klasy asocjacyjne, kwalifikacje, uogólnienia, zależności czy też realizacje.
Diagram klas - definicja
• Diagram klas obrazuje pewien zbiór klas, interfejsów i kooperacji oraz związki między nimi.
• Jest to graf złożony 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.
• Najsilniej prezentuje strukturę systemu i jest podstawą dla jego konstrukcji.
• Diagram klas służy 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.
Etapy tworzenia diagramu klas
1) zidentyfikowanie i nazwanie klas;
2) opcjonalnie określenie zobowiązań klas;
3) połączenie poszczególnych klas z wykorzystaniem związków asocjacji;
4) zidentyfikowanie oraz nazwanie atrybutów i operacji;
5) wyspecyfikowanie asocjacji z użyciem wszystkich jej cech (nazwy, ról, nawigacji, liczebności, agregacji, kwalifikacji);
6) opracowanie innych rodzajów związków, tj. uogólnień, zależności i realizacji;
7) pełne, precyzyjne wyspecyfikowanie atrybutów i operacji;
8) opcjonalnie opracowanie diagramów obiektów.
dokonanie rejestracji zarejestrowanie
Właściciel własność wniesienie o
rejestrację
Rejestrator
wykonanie czynności urzędowej
Rejestracja
Pojazd
Klasy obiektów i związki klas obiektów - przykład
Metody obiektowe – jak z obiektów stworzyć system
• Podstawowymi koncepcjami podejścia obiektowego są klasa i związki klas.
• Klasa jest także podstawowym pojęciem używanym we wszystkich językach programowania obiektowego.
• Model klas stworzony na etapie analizy znajduje swoje odzwierciedlenie w kodzie.
• Poprawna konstrukcja tego modelu jest zatem kluczowym czynnikiem powodzenia projektów.
• Podstawą każdej metody modelowania obiektowego jest technika budowy diagramów klas.
• Obok niej istnieją inne techniki pozwalające przy pomocy modeli opisać różne aspekty tworzonego systemu.
Klasa obiektu Uczelnia w notacji UML
Nazwa
Atrybuty
Operacje
Klasa - nazwa
Nazwa klasy (class name)
musi wyróżniać klasę spośród innych
jeżeli nazwa poprzedzona jest nazwą pakietu to jest to nazwa ścieżkowa
jeżeli używamy tylko nazwę klasy obiektów to jest to nazwa prosta
1/5
Klasa - nazwa
Reprezentacja klas na diagramach
Możliwe kombinacje graficznej prezentacji klas:
sama nazwa klasy;
nazwa klasy z zestawem atrybutów;
nazwa klasy z zestawem operacji;
nazwa klasy z zestawem atrybutów i operacji.
2/5
W związku z różnorodnością możliwych sposobów specyfikowania klas możliwe jest zastosowanie:
sama nazwa klasy umieszczona w jednosekcyjnym bloku oznacza, że sekcje atrybutów i operacji zostały
wyspecyfikowane, lecz nie w sposób jawny zamieszczone na diagramach klas;
alternatywnie, klasę przedstawia się jako blok złożony z trzech sekcji z nazwą w pierwszej sekcji i
niewyspecyfikowanymi atrybutami i operacjami;
jeśli liczba atrybutów lub operacji jest większa, to ich wyliczanie w odpowiednich sekcjach można przerwać
wielokropkiem, co należy interpretować, jako przypisanie klasie jeszcze innych atrybutów i operacji –
niewymienionych bezpośrednio w specyfikacji.
Klasa - nazwa 3/5
Student
Oblicz średnia(): real Nr indeksu: integer Nazwisko: string Oceny: string
Student
Oblicz średnia() Nr indeksu
Nazwisko Oceny
Student Nr indeksu Nazwisko Oceny
Student
Klasa obiektu Student w notacji UML Różne poziomy szczegółowości
Student
Oblicz średnia() 4/5
Nazwa klasy - podsumowanie
• Głównym zadaniem nazwy klasy jest opisanie obiektów, które ona grupuje.
• Przyjmuje się, że nazwa klasy powinna określać pojedynczy obiekt tej klasy, w związku z tym nazwa klasy jest
rzeczownikiem w liczbie pojedynczej.
• Przykładowo: Osoba, Rachunek, Książka, Pojazd, Wypożyczenie to nazwy klas.
5/5
Diagram klas
Klasa jest opisem zbioru obiektów, które mają takie same:
• atrybuty
• operacje
• związki
• znaczenia
Klasa – atrybuty
Atrybut klasy (attribute) to nazwana właściwość klasy.
Określa zbiór wartości, jakie można przypisać do poszczególnych egzemplarzy tej klasy.
Atrybuty
Klasa – atrybuty
Dokładniejsze określenie atrybutu:
• dodanie typu
• dodanie wartości początkowej
[ widoczność ] nazwa [ liczebność ] [ : typ ] [ = wartość początkowa ] [ {określenie właściwości} ]
Diagram klas
Klasa jest opisem zbioru obiektów, które mają takie same:
• atrybuty
• operacje
• związki
• znaczenia
Klasa – operacje
Operacja klasy (operation) to implementacja usługi klasy.
Wykonania usługi można zażądać od każdej instancji klasy.
Operacje
Klasa – operacje
Dokładniejsze określenie operacji:
• dodanie typu wartości zwracanej przez operację
• podanie parametrów, ich typów i wartości początkowych
[ widoczność ] nazwa [ (lista parametrów) ] [ : typ wyniku ] [ {określenie właściwości} ]
Klasa – operacje
• lista parametrów: definiuje listę parametrów formalnych metody;
• składnia pojedynczego parametru jest następująca:
rodzaj nazwa_parametru : typ = wartość_początkowa
gdzie rodzaj określa sposób, w jaki metoda korzysta z danego argumentu:
in: metoda może czytać wartość parametru, ale nie może jej zmieniać
out: metoda może zmieniać wartość parametru, ale nie może jej czytać;
inout: metoda może zarówno czytać, jak i zmieniać wartość parametru.
Klasa – zobowiązania
Odpowiedzialność (responsibility) jest kontraktem lub zobowiązaniem klasy.
Modelując klasy często zapisuje się jedynie
zobowiązania klasy jakie musi ona wypełniać.
W procesie dokładniejszego specyfikowania systemu zobowiązania tłumaczy się na zbiory atrybutów i operacji.
Klasa – zobowiązania
class Logical View
Kurs
Wykład
Student
Pracow nik Osoba
Profesor +poprzedni
0..1
+następny
*
1..*
+zapisany na 1..*
*
+prowadzący 1
Przykład Kursy – poziom konceptualny
Diagram klas
Klasa jest opisem zbioru obiektów, które mają takie same:
• atrybuty
• operacje
• związki
• znaczenia
widoczność
Klasa – widoczność
Widoczność atrybutów i operacji określa kto może wywołać operacją, lub kto ma dostęp do kreślonego atrybutu.
Typy widoczności:
• Public
• Protected
• Private
• Package
Widoczność składowych klasy
publiczny + Obiekty wszystkich klas mają dostęp do atrybutu lub operacji
prywatny - Dostęp jedynie w obrębie danej klasy
chroniony # Dostęp jedynie dla klas dziedziczących z danej klasy
pakietowy ~ Dostęp tylko dla składowych pakietu, do którego klasa należy
Nazwa klasy + atrybut1:
- atrybut2:
# atrybut3:
~ atrybut4:
+ operacja1()
# operacja2() - operacja3()
~ operacja4()
Klasa – widoczność
Widoczność Public +
Każdy ma dostęp do elementów klasy
(atrybutów i operacji) oznaczonych jako public.
Klasa – widoczność
Widoczność Protected #
Atrybut lub operacja jest widoczna dla potomków klasy.
Klasa – widoczność
Widoczność Private -
Atrybut lub operacja jest widoczna tylko dla innych elementów tej klasy.
Klasa – widoczność
Widoczność Package ~
Elementy klasy widoczne są jedynie dla klas zawierających się w tym samym pakiecie.
Klasa
Dodatkowe właściwości klasy:
• abstrakcyjna klasa (abstract class) (nazwa klasy napisana kursywą) – klasa nie może mieć bezpośredniego egzemplarza
• elementy statyczne (static elements) – atrybuty lub operacje mogą być statyczne (nazwa
podkreślona) – dostępne są również bez konkretnego egzemplarza klasy
Diagram klas
Kluczowymi elementami są:
• klasy (class)
• związki (association)
• interfejsy (interface)
Dodatkowo diagram może zwierać:
• notatki (note)
• ograniczenia (constraints)
• pakiety (packages)
Interfejs (Interface)
Interfejs jest to zestaw operacji, które wyznaczają usługi oferowane przez klasę lub komponent
Interfejsy służą do prezentowania komunikacji pomiędzy komponentami
Interfejs wyznacza granicę między specyfikacją tego, co dana abstrakcja ma robić, a implementacją tego, jak to robi
Dobrze zbudowany interfejs charakteryzuje się tym, że wyraźnie oddzielone są
wewnętrzne aspekty abstrakcji od zewnętrznych
1/10
Interfejsy
Każda klasa może być wykorzystywana na różne sposoby i może realizować różne interfejsy
(różne usługi).
Grupowanie usług klasy realizuje się za pomocą portów.
Porty łączą implementację klasy ze środowiskiem, w którym istnieje.
Komunikacja klasy odbywa się poprzez porty.
2/10
Interfejsy
W UML 2.0 wprowadzono rozróżnienie pomiędzy interfejsami:
interfejs dostarczany (provided interface)
interfejs wymagany (required interface)
3/10
Interfejs dostarczany
Interfejs dostarczany są to usługi, które klasa implementuje.
Klasa umożliwia innym elementom systemu korzystanie z obsługiwanych przez daną klasę usług.
Dwie postacie interfejsu dostarczanego:
4/10
Interfejs dostarczany
Nazwa interfejsu:
• prosta
np.: IPisownia
• ścieżkowa
np.: UsługiSieciowe::IRouter
5/10
Interfejs dostarczany
Interfejs jest definicją usług oferowanych przez klasę lub komponent:
6/10
Interfejs wymagany
Interfejs wymagany są to usługi, które inne klasy muszą dostarczyć w celu zapewnienia odpowiedniego funkcjonowania klasy w
środowisku.
7/10
Interfejs wymagany - przykład
Klasa wymaga tych interfejsów do poprawnej pracy.
Komunikator internetowy nie udostępnia pełnej funkcjonalności użytkownikowi bez połączenia z Internetem.
8/10
Interfejs
Interfejs wymagany i dostarczany - przykłady
protokółEgzaminacyjny IOceny
OCENA
9/10
Interfejs (Interface) - podsumowanie
Interfejs jest to zestaw operacji, które wyznaczają usługi oferowane przez klasę lub komponent
Interfejsy służą do prezentowania komunikacji pomiędzy komponentami
Interfejs wyznacza granicę między specyfikacją tego, co dana abstrakcja ma robić, a implementacją tego, jak to robi
Dobrze zbudowany interfejs charakteryzuje się tym, że wyraźnie oddzielone są
wewnętrzne aspekty abstrakcji od zewnętrznych
10/10
Diagram klas
Kluczowymi elementami są:
• klasy (class)
• związki (association)
• interfejsy (interface)
Dodatkowo diagram może zwierać:
• notatki (note)
• ograniczenia (constraints)
• pakiety (packages)
Związki
Tylko niewielka liczba klas występuje samotnie.
Większość klas wiąże się z innymi klasami następującymi związkami:
• zależność
• uogólnienie
• powiązanie
Związki - zależność
Zależność (dependency) to związek pomiędzy dwoma elementami modelowania – związek użycia.
Zmiany dokonane w jednym elemencie mogą mieć wpływ na inny element.
Z zależności należy korzystać kiedy chce się podkreślić, że jeden element używa drugiego.
Klasa docelowa Klasa źródłowa
Laboratorium StanowiskoKomputerowe
<<use>>
Typowe zastosowanie zależności typu <<use>>
do prawidłowego działania klasy Laboratorium jest potrzebne użycie klasy StanowiskoKomputerowe
Związki – zależność - przykład
Wybrane typy związku zależności
Słowo kluczowe Znaczenie
<<call>> Źródło wywołuje cel
<<create>> Źródło tworzy obiekt docelowy
<<deriver>> Źródło można wyznaczyć na podstawie celu
<<import>> Zawartość publiczna celu zostaje dołączona do obszaru nazw źródła
<<instance>> Źródło tworzy egzemplarz klasy
<<permit>> Cel pozwala źródłu na dostęp do swoich cech prywatnych
<<realize>> Źródło jest implementacją specyfikacji lub interfejsem definiowanym przez cel
<<refine>> Źródło jest na doskonalszym poziomie abstrakcji niż cel
<<substitute>> Źródło jest substytutem celu
<<trace>> Cel jest historycznie przodkiem źródła
<<use>> Źródło wymaga celu do swojego funkcjonowania
Wybrane typy związku zależności
Słowo kluczowe Znaczenie
<<call>> Źródło wywołuje cel
<<create>> Źródło tworzy obiekt docelowy
<<deriver>> Źródło można wyznaczyć na podstawie celu
<<import>> Zawartość publiczna celu zostaje dołączona do obszaru nazw źródła
<<instance>> Źródło tworzy egzemplarz klasy
<<permit>> Cel pozwala źródłu na dostęp do swoich cech prywatnych
<<realize>> Źródło jest implementacją specyfikacji lub interfejsem definiowanym przez cel
<<refine>> Źródło jest na doskonalszym poziomie abstrakcji niż cel
<<substitute>> Źródło jest substytutem celu
<<trace>> Cel jest historycznie przodkiem źródła
<<use>> Źródło wymaga celu do swojego funkcjonowania
Związki
Tylko niewielka liczba klas występuje samotnie.
Większość klas wiąże się z innymi klasami następującymi związkami:
• zależność
• uogólnienie
• powiązanie
<<use>>
Związki - uogólnienie
Uogólnienie to związek między elementem ogólnym a elementem szczególnym.
Potomek może wystąpić wszędzie tam gdzie jest spodziewany przodek, ale nie na odwrót.
Potomek dziedziczy wszystkie właściwości przodka (atrybuty i operacje).
Związki - uogólnienie
Dziekan
Wykładowca
class Domain Obj ects
Wymóg - Nośnik:
+ sprawdź_poprawność () : void + publikuj() : void
System - Platforma:
+ sprawdź_poprawność () : void + wdrażaj() : void
Produkty_pracy - Opis:
- Procent_ukończenia:
+ sprawdź_poprawność () : void
Związki – uogólnienie - generalizacja
Związki
Tylko niewielka liczba klas występuje samotnie.
Większość klas wiąże się z innymi klasami następującymi związkami:
• zależność
• uogólnienie
• powiązanie
<<use>>
Związki – powiązanie (asocjacja)
Powiązanie – obiekty jednego elementu są połączone z obiektami innego.
Powiązanie między dwoma klasami oznacza, że można przejść z obiektu jednej klasy do obiektu drugiej.
Związki – powiązanie (asocjacja)
Powiązanie może mieć:
• nazwę
• role (np.: pracownik, pracodawca)
• kierunek (również dwustronny)
• liczebność (multiplicity)
Asocjacja – związek strukturalny
Asocjacja opisuje związek strukturalny między elementami (klasami).
Wskazuje, że obiekty jednego elementu są połączone z obiektami drugiego.
Wyróżnia się dwa rodzaje asocjacji:
• binarne
• n – arne Class1 Class2
Class3
Class1 Class2
Asocjacje – cechy
• nazwa
• rola
• nawigacja
Kierownik
projektu zarządza Projekt
Kierownik
projektu Projekt
szef
zarządza
zadanie
Kierownik
projektu Projekt
szef
zarządza
zadanie
Asocjacje – cechy
• liczebność - podając liczebność na pewnym końcu powiązania (przy pewnej klasie) wskazujemy ile obiektów tej klasy musi być połączonych z każdym obiektem klasy znajdującej się na przeciwnym końcu powiązania.
1 dokładnie jeden n dokładnie n (n>1)
1..* jeden lub wiele 1..n od 1 do n
0..1 zero lub jeden 0..n od 0 do n
* wiele n..m od n do m (n,m>1)
0..* zero lub wiele n,m..o liczebność złożona n..* więcej niż n
Kierownik
projektu Projekt
szef
1
zarządza zadanie
1..*
Asocjacje – agregacja całość-część
• Agregacja – opisuje związek całość-część pomiędzy klasami.
• Wyróżnia się dwa rodzaje agregacji:
agregacja całkowita (kompozycja) – obiekty nie mogą samodzielnie funkcjonować, usunięcie agregatu
powoduje likwidację segmentów,
agregacja częściowa – usunięcie agregatu nie powoduje usunięcia jego części, obiekty współdzielone mogą
funkcjonować samodzielnie
Związki – agregacja – przykład 1
Kompozycja, zwana również agregacją całkowitą,
wprowadza dodatkowo zależność czasu życia klas oraz wyłączną własność.
Części o nieustalonej liczebności mogą powstawać po utworzeniu całości, ale potem żyją i umierają razem z nią.
Związki – agregacja – przykłady 2-3
Faktura Pozycja
1..*
1
Plansza OX Pole
9 1
Związki – agregacja – przykłady 4-5
Zamówienie Pozycja
1..*
1
Pracownik Ubezpieczenie
9
1 0..1
Powiązane elementy nie są sobie równorzędne
Związki – agregacja – przykład 1
Dodatkową funkcjonalnością powiązań jest agregacja częściowa (aggregation).
Zwykle powiązanie sprawia, że związane elementy są sobie równorzędne.
W celu zaprezentowania związku „część-całość” należy użyć agregacji.
1 *
Związki – agregacja – przykład 2-3
Produkt Składowa
1 1 1 1..*
Zestaw komputerowy Klawiatura Klawisz
*
1 Pracuje w
Agregacja jest specjalną formą asocjacji, której podstawową intencją jest odwzorowanie związków część-całość
1. Czy właściwe jest użycie frazy “jest częścią”?
2. Czy operacje na całości automatycznie są propagowane na jej części?
3. Czy jakiś atrybut całości jest automatycznie propagowany do jej części?
4. Czy istnieje wewnętrzna asymetria w asocjacji, kiedy jakaś klasa jest podporządkowana innej klasie?
1 * 1 1..*
Firma Oddział Wydział
Osoba
Asocjacja zwrotna i wielokrotna
• asocjacja wielokrotna – połączenie klas kilkoma asocjacjami w zależności od pełnionych ról
• asocjacja zwrotna – powiązanie danej klasy z samą sobą
Programista Moduł
implementuje >
testuje >
Pracownik podwładny *
0..1 kierownik
Związek Kwalifikacja
Zapisując powiązanie możemy wskazać w jaki sposób mając dany obiekt na jednym końcu powiązania można zidentyfikować obiekt(-y) z drugiego końca.
Pracownik SpisPracowników IdPracownika
Klasy aktywne
Do reprezentacji procesów lub wątków (które są źródłem przepływu sterowania) używa się klas aktywnych.
Reprezentacja klasy aktywnej od klasy statycznej różni się pogrubioną ramką klasy.
Wniosek
Typ wniosku Nr księgi wieczystej Opłata sądowa
Ilość dokumentów Data złożenia Godzina złożenia Treść wniosku
Stwórz wniosek() Rejestruj wniosek() Wyszukaj wniosek() Przeglądaj wniosek()
Klasa Wniosek - przykład
Klasa abstrakcyjna Osoba
Osoba
Imię
Nazwisko
Data urodzenia Adres
Pracownik Stażysta Emeryt
/wiek Dodaj
Usuń (o:Osoba)
Modyfikuj (o:Osoba)
Wiek = Data bieżąca – Data urodzenia
Rodzaje diagramów klas – powtórka
Diagramy klas, ze względu na znaczną liczbę elementów, jakie potencjalnie mogą na nich wystąpić, cechują się zróżnicowanym
poziomem szczegółowości. Należy rozróżnić dwa poziomy tworzenia:
poziom konceptualny,
poziom implementacyjny.
Konceptualny diagram klas zawiera
wyłącznie podstawowe elementy, cechując się przystępnością nazewnictwa klas, atrybutów i operacji.
Implementacyjny diagram klas jest stopniowo wzbogacany o elementy opisu niezbędne dla prawidłowej specyfikacji modelu, takie jak typy danych, zobowiązania, widoczność,
statyczność, klasy asocjacyjne, kwalifikacje, uogólnienia, zależności czy też realizacje.
Diagram klas – definicja – powtórka
• Diagram klas obrazuje pewien zbiór klas, interfejsów i kooperacji oraz związki między nimi. Jest to graf złożony 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. Najsilniej prezentuje strukturę systemu, stanowiąc podstawę dla jego
konstrukcji.
• Diagram klas służy 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.
Etapy tworzenia diagramu klas – powtórka
1) zidentyfikowanie i nazwanie klas;
2) opcjonalnie określenie zobowiązań klas;
3) połączenie poszczególnych klas z wykorzystaniem związków asocjacji;
4) zidentyfikowanie oraz nazwanie atrybutów i operacji;
5) wyspecyfikowanie asocjacji z użyciem wszystkich jej cech (nazwy, ról, nawigacji, liczebności, agregacji, kwalifikacji);
6) opracowanie innych rodzajów związków, tj. uogólnień, zależności i realizacji;
7) pełne, precyzyjne wyspecyfikowanie atrybutów i operacji;
8) opcjonalnie opracowanie diagramów obiektów.
Przykłady
Diagramy klas
class Domain Obj ects
Menedżer - Imię:
- Nr_telefonu:
+ rozpocznij_projekt() : void + zakończ_projekt() : void
Zespół - Opis:
Proj ekt - Nazwa:
- Data_rozpoczęcia:
- Data_zakończenia:
kieruje
wykonuje
zarządza
Na diagramie przedstawione są następujące informacje:
- Menedżer przewodziMenedżer przewodzi zespołowizespołowi, który wykonujewykonuje projektprojekt
- Każdy menedżermenedżer ma imięimię i numer telefonunumer telefonu, i może zainicjować lub zakończyć (przerwać) projektprojekt
- Każdy projektprojekt ma nazwęnazwę, datę rozpoczęciadatę rozpoczęcia i datę zakończeniadatę zakończenia - Każdy zespółzespół ma opisopis, i tylko on nas interesuje
atrybuty
operacje
Atrybuty asocjacji – klasa asocjacyjna
Osoba
nazwisko pesel adres
Firma
nazwa adres
Zatrudnienie
zarobek stanowisko
zatrudnia
0..1 1..*
0..1 szef
Ocena wydajności
ocena
Dla asocjacji można zdefiniować opisujące ją atrybuty, tzw. atrybuty asocjacji.
W języku UML atrybuty asocjacji są umieszczone w specjalnej klasie zwanej klasą asocjacji, która jest połączona z asocjacją za pomocą przerywanej linii.
Przykładem klasy asocjacji jest klasa Zatrudnienie na rys, która przechowuje informacje o stanowisku zajmowanym przez osobę zatrudnioną w firmie oraz o pobieranym przez nią wynagrodzeniu.
Dziedziczenie asocjacji
• Asocjacje, podobnie jak np. atrybuty i metody, są dziedziczone przez podklasy.
• Na diagramie (rys.a) dwie asocjacje o nazwach asoc1 i asoc2 łączą klasę K z klasami K2 i K3, będącymi podklasami klasy K1.
• Aby, w oparciu o mechanizm dziedziczenia, te dwie asocjacje mogły być zastąpione przez jedną asocjację prowadzącą od K do K1 (rys.b), asocjacje z diagramu a muszą spełniać następujące warunki:
K1
K2 K
1. Muszą posiadać taką samą semantykę.
2. Muszą posiadać taką samą strukturę, tzn. muszą mieć takie same atrybuty lub taką samą klasę asocjacji
K3
asoc1 asoc2
K1
K2 K3 K
asoc
Rys.a Rys.b
Dziedziczenie asocjacji Referat
tytuł autorzy [1..*]
Sesja
nazwa data
Termin
godzina
wygłaszany 0..1 1..*
0..1 Referat zaproszony
Referat zwykły
ocena
Termin
godzina
wygłaszany
1
Asocjacja wygłaszany łączy klasę Sesja z podklasami
Dziedziczenie asocjacji Referat
tytuł autorzy [1..*]
Sesja
nazwa data
Termin
godzina
wygłaszany 1..* 0..1
Referat zaproszony
Referat zwykły
ocena
Rys. Asocjacja wygłaszany łączy klasę Sesja z nadklasą
Dziedziczenie asocjacji Referat
tytuł autorzy [1..*]
Sesja
nazwa data
Termin
godzina
wygłaszany 1..* 0..1
Referat zaproszony
Referat zwykły
ocena
Rys. Zdefiniowano brakujące ograniczenia
{-podczas sesji jest wygłaszany co najmniej jeden referat zwykły i co najmniej jeden zaproszony -referat zwykły może nie zostać wygłoszony - każdy referat zaproszony musi być wygłoszony}
class Logical View
Pracow nik
Nabyw ca
Produkt
Zamów ienie
Pozycj a na zamów ieniu 1
jest przypisane
0..*
1..*
współpracuje
0..*
0..*
interesuje się
1..*
1
składa
0..*
1
1..*
1
jest wyspecyfikowany
1..*
składa się
Konceptualny diagram klas – zamówienie produktów
class Logical View
Pracow nik
Nabyw ca - imie: char - nazwisko: char - adres: char
+ dodaj() : void + usun() : void
Produkt + create() : void
Zamów ienie
+ aktualizuj() : void
+ oblicz_wartosc(char) : void
Pozycj a na zamów ieniu + dodaj() : void 1
jest wyspecyfikowany
1..*
1
1..*
1
składa
0..*
0..*
interesuje się
1..*
1..*
współpracuje
0..*
1
jest przypisane
0..*
Diagram klas – zamówienie produktów
Przykład – sprzedaż wysyłkowa
• Wszystkie transakcje realizowane w przedsiębiorstwie sprzedaży wysyłkowej zaczynają się od złożenia przez klienta zamówienia na potrzebne mu towary.
• W systemie istnieje więc klasa Klient, zawierająca
wszystkich nabywców, oraz klasa Zamówienie, z których każde określa kupowane towary.
• Każdy obiekt należący do klasy Klient ma takie same
atrybuty, np. nazwisko i adres, i każdy może wykonywać te same operacje, np. złożyć zamówienie.
• Podobnie, każdy obiekt należący do klasy Zamówienie ma takie same atrybuty, np. data złożenia, adres dostawy oraz status, i każdy może wykonać te same operacje, np.
wydrukować swą treść oraz obliczyć wymaganą zaliczkę, przedpłatę, całkowitą wartość i podatek.
class Logical View
Pozycj a - ilość: int - cena: double + obliczWartość() : void + drukuj() : void + obliczZaliczkę() : void
Zamów ienie - data: data
- adresOdbiorcy: char - status: char + drukuj() : void + obliczWartość() : void + drukujFakturę() : void + wyślij() : void + zamknij() : void
Klient - nazwa: char - adres: char + zamów() : void
Tow ar - nazwa: char - cena: int - producent: char - stopaVAT: double + drukujOpis() : void + czyZaliczka() : void
Płatność - data: data - kwota: int + zaksięguj() : void
Przelew - idPrzelewu: int - nrKonta: int
WpłataGotów kow a - nazwaKuriera: char
Opona - rozmiar: int
Fotelik - wagaDziecka: int - opis: char
Pokrow iec - kolor: char 0..*
wskazuje 1
1..* 1
składa 0..*
* dotyczy
1..*
Diagram klas systemu sprzedaży wysyłkowej
Modelem obrazującym strukturę i wzajemne powiązania obiektów występujących w systemie jest diagram klas.
Diagramy klas - Ćwiczenie
Zbuduj diagram klas w oparciu o diagram przypadków użycia.
uc Biblioteka
Personel biblioteczny
w ypożycz książkę
spraw dź czy można w ypożyczyć danemu
czytelnikow i
spraw dź dostępność książki
rej estracj a w ypożyczenia
«include»
«extend»
«extend»
Unified Modeling Language
Diagramy struktury:
• diagram klas (class diagram)
• diagram obiektów (object diagram)
• diagram komponentów (component diagram)
• diagram pakietów (package diagram)
• diagram wdrożenia (deployment diagram)
• zbiorowy diagram
komponentów (composite structure diagram)
Diagramy dynamiki:
• diagram przypadków użycia (use case diagram)
• diagram czynności (activity diagram)
• diagram maszyny stanów (state machine diagram)
• diagram sekwencji (sequence diagram)
• diagram komunikacji
(communication diagram)
• diagram przeglądu
współdziałania (interaction overview diagram)
• diagram czasowy (timing diagram)