print
A A A

Identyfikacja klas

W przedstawianej na wykładzie koncepcji analizy rozpoczynającej od podziału na podsystemy (moduły, komponenty) i określenia odpowiedzialności (usług) związanych z poszczególnymi podsystemami, rozsądnym jest identyfikowanie klas poprzez podział odpowiedzialności (usług, zobowiązań) przydzielanych poszczególnym klasom. Taka idea identyfikowania i podziału odpowiedzialności może być zastosowana do określenia całej hierarchii klas.

Inną koncepcją jest wyszukiwanie klas poprzez analizę opisu dziedziny zastosowań i funkcji realizowanych przez system. Przy wyszukiwaniu klas przydatna okazuje się analiza diagramów: komponentów, czynności, stanów.

Wykrywanie klas na podstawie opisu

Klient idzie do Działu Zamówień i składa zamówienie na towar. Dział Zamówień sprawdza czy towar jest w magazynie. Jeśli tak, to przesyła zamówienie do Działu Spedycji i Działu Księgowości. Dział Księgowości przygotowuje fakturę i przeprowadza transakcję otrzymując zapłatę za pośrednictwem banku. Dział Spedycji pobiera towar z magazynu (jeśli stan zapasów jest zbyt mały zamawia dodatkową partię z hurtowni) i realizuje wysyłkę do klienta.

Spośród wielu technik analizy prowadzących do identyfikacji klas na uwagę zasługują m.in.:

  • Analiza zmienności i wariantów – jeżeli przy realizacji danej funkcji pojawiają się warianty (instrukcje warunkowe) lub jeśli przewidujemy, że pewien fragment kodu może ulec modyfikacji (np. przez wprowadzenie nowych rodzajów obiektów) należy zadać sobie pytanie czy nie byłoby możliwe odseparowanie realizowanej funkcji od wariantów i zmienności, tzn. ukrycie (obudowanie) odkrytej zmienności za interfejsem klasy, tak aby funkcja zawsze była taka sama, natomiast zmieniał się tylko typ obiektów realizujących interfejs
  • Delegowanie odpowiedzialności – projektując realizację interfejsu należy rozważyć, czy nie istnieje inny typ obiektu (klasa), który lepiej zrealizuje daną funkcję interfejsu i oddelegować wykonanie tej funkcji do nowej klasy

Być może najważniejszym elementem, który należy uwzględnić przy poszukiwaniu optymalnej dla danego systemu hierarchii klas są istniejące już systemy realizujące podobne funkcje do systemu projektowanego oraz wnioski płynące z analizy ich funkcjonowania. Poszczególne dziedziny zastosowań wypracowują własne typowe zestawy klas. Przykładami dziedzin, dla których istnieją sprawdzone propozycje klas są np.:

  • okienkowe interfejsy użytkownika
  • systemy wspomagające podstawowe funkcje przedsiębiorstwa: księgowość, kadry, płace itp.
  • systemy edycji i przetwarzania dokumentów

Typowe wskazówki pomocne w identyfikacji klas przy analizie opisu dziedziny zastosowań – w postaci rodzajów bytów będących kandydatami na modelowanie w postaci obiektów:

  • przedmioty materialne i ich grupy (urządzenia, wyposażenie)‏
  • role pełnione przez osoby (pracownik, student, kierownik)‏‏
  • zdarzenia (zakup, dostawa, wypadek)‏‏
  • interakcje między obiektami (spotkanie, pożyczka, zapłata)‏‏
  • procedury (zatwierdzanie, weryfikacja, pobieranie, naprawa)‏‏
  • lokalizacje (pracownia, lotnisko)‏‏
  • instytucje i organizacje (dział, wydział, bank)‏‏
  • dokumenty (faktura, zamówienie, lista obecności)‏‏
  • konkretne byty niematerialne z dziedziny zastosowań (np. w matematyce – figura, macierz, równanie)‏‏

«Klasy i obiekty     Dziedziczenie»