Zadanie 4 Diagram struktury klas

Tematem zadania jest modelowanie struktury obejmujące:

  • identyfikację klas (H)
  • identyfikację ich atrybutów (M)
  • identyfikację ich metod (L)
  • ustalenie związków pomiędzy klasami (H)

H (high), M (medium), L( low) - priorytety. Kompletna lista atrybutów oraz metody mogą zostać uściślone podczas następnych zajęć.

Realizując zadanie należy uwzględnić rozszerzone tematy podane na końcu tego opisu. Rozszerzenia mają na celu zwiększenie liczby klas.

Do przeczytania

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

Identyfikacja klas

  • Celem zadania jest identyfikacja klas występujących w modelu dziedziny problemu. Model nie będzie uwzględniał klas, które mogą zostać wprowadzone podczas projektowania (np. okno dialogowe, skrypt PHP, strona HTML, baza danych, lista, wektor, itd.).
  • W zasadzie dobór klas może odpowiadać encjom diagramu ERD, z jednym zastrzeżeniem – ERD słabo rozróżnia element zbioru i zbiór.
  • Dodatkową różnicą jest wprowadzenie klas abstrakcyjnych wykorzystywanych podczas określania związków generalizacji/dziedziczenia.

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

Identyfikacja metod

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:

  • Jeżeli obiekt lub aktor wysyła do innego obiektu jakieś dane lub sygnały, to zapewne odbiorca powinien zapewnić metodę, która pozwoli je odebrać
  • Jeżeli mamy magazyn danych i funkcje, które pozwalają odczytać, zmodyfikować, usunąć lub dodać dane, to magazyn jest kandydatem na atrybut, natomiast funkcje/procesy kandydatami na metody pewnego obiektu.
  • Obiekt nie może stworzyć lub usunąć sam siebie, natomiast może to zrobić kolekcja obiektów.
  • Jeżeli mamy scenariusz przypadku użycia, to każda akcja zapewne stanie się metodą (użytkownik wprowadzając dane przesyła je do jakiegoś obiektu i wywołuje metodę, system wysyłając dane skorzysta z metody jakiegoś obiektu)
  • Definiując metody należy starać się abstrahować od uwarunkowań technicznych. Może się zdarzyć, że 5 metod zidentyfikowanych w analizie dziedziny zaimplementujemy jako jedną sterowaną parametrem, który będzie przybierał 5 wartości – na przykład wykorzystując konstrukcje IF lub SWITCH-CASE.

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.

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.

Rozszerzone tematy

Przykładowe rozszerzenia tematów pozwalające na zidentyfikowanie większej liczby klas…

1. Zakupy w sklepie internetowym

Uwzględnij: autoryzację, tworzenie grup (kategorii towarów). Edycję danych. Wystawianie faktur do zamówienia.

23. Dyspozytor taksówek

Dodaj: listę postojów, informacje o tym, że taksówka czeka na postoju lub znajduje się w innej lokalizacji. Kurs klienta „z ulicy” i na podstawie zlecenia. Harmonogram dyżurów. Załóż, że kierowcy mogą dzielić taksówkę. Statystyki dyżurów i kursów.

7. Wypożyczalnia filmów DVD

Dodaj: serwis internetowy umożliwiający

rezerwację filmów wystawianie komentarzy podział filmów na kategorie, edycja kategorii (dla uprawnionego użytkownika, pracownika) historia wypożyczeń rabaty

8. Obsługa rachunku bankowego

Dodaj informację o tym, kto i kiedy wykonuje operacje. Dodaj autoryzację pracownika.

9. System rezerwacji i sprzedaży biletów kinowych

Dodaj serwis internetowy umożliwiający rezerwację. Częściowa lub pełna identyfikacja użytkownika. System przydzielający zarejestrowanym użytkownikom punkty za zakupione bilety. Wyszukiwanie filmów seansów. Klasyfikacja wg. kategorii. Streszczenia, recenzje widzów. Przypomnienia o rezerwacji przez e-mail lub SMS.

10. Biblioteka Dodaj kategorie książek, dodawanie opinii o książce w interncie, rezerwacje, powiadomienia o zbliżającym się terminie zwrotu.

io/zadanie_4.txt · Last modified: 2012/11/11 00:14 by pszwed
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0