Table of Contents

Zadanie 1 Diagram struktury klas dziedziny

Tematem zadania jest modelowanie struktury klas dziedziny obejmujące:

Wybieramy jeden z tematów do zamodelowania. W nawiasach podano przykładowe klasy…

Do przeczytania

  1. Stanisław Wrycza, Bartosz Marcinkowski, Krzysztof Wyrzykowski: UML 2.0 w modelowaniu systemów informatycznych, Helion

Identyfikacja klas

Identyfikacja atrybutów

Wprowadzone atrybuty mają opisywać istotne z punktu widzenia zadań systemu cechy obiektów. Typowy przykład: skórzana tapicerka samochodu jest nieistotna dla systemu rejestracji pojazdów, natomiast może być istotna w systemie obsługującym komis samochodowy.

:!: Uwaga. Nie należy dodawać atrybutów odpowiedzialnych za realizację asocjacji (klucze obce w ERD). Zamiast nich należy wprowadzić role

Związki

UML rozróżnia trzy grupy związków

  1. zależność (zazwyczaj zależność kodu)
  2. dziedziczenie
  3. powiązania ( w tym asocjacja , agregacja i kompozycja)

W przypadku analizy dziedziny związek (1) raczej nie jest modelowany. Należy skupić się na związkach (2) i (3).

Dla przypomnienia: dobrym kryterium ustalania poszczególnych związków są frazy języka naturalnego:

dziedziczeniejestStudent jest Osobą
asocjacjaodnosi się do, dotyczy, ma informacje o, używa, korzysta zRecenzja odnosi się do Filmu, Kierowca używa Samochodu, Ocena z Przedmiotu= Ocena dotyczy Przedmiotu
agregacjamaPokój ma Ściany
kompozycjaskłada sięMieszkanie składa się z Pokoi, Kuchni, Łazienki, WC

Definiując powiązania należy koniecznie ustalić ich krotność. Np.: pokój ma 3,* ścian, mieszkanie składa się z 1,* pokoi.

Identyfikacja metod (w tym zadaniu opcjonalnie)

W podejściu czysto obiektowym system jest siecią obiektów, które wysyłają do siebie komunikaty. Te komunikaty odpowiadają sygnaturom metod.

Sygnatura metody jest specyfikacją usługi, którą obiekt powinien zapewnić korzystając z informacji o swoim stanie (wartościach atrybutów i obiektach powiązanych) oraz obiektach zewnętrznych przekazanych jako parametry.

Identyfikując metody możemy posługiwać się rozmaitymi rutynowymi przepisami:

Przykład: jeżeli piszemy system obsługi dziekanatu złą metodą jest przetwórzKwerendę() – w domyśle metoda bazy danych – natomiast dobrą: dodajStudenta(), usunStudenta(), zarejestrujStudenta() – w domyśle klasy GrupaStudentów Metoda przetwórzKwerendę() byłaby właściwa, gdybyśmy implementowali silnik bazy danych, a nie konkretny system wykorzystujący istniejące oprogramowanie do obsługi baz danych.