Modelowanie klas i obiektów Jarosław Kuchta Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Podstawowe pojęcia (1) Byt, encja (entity) – coś co istnieje, posiada własne cechy i wyodrębnioną tożsamość (identity); bytem może być rzecz, osoba, organizacja, pojęcie, idea Obiekt – abstrakcja bytu – byt zdefiniowany przez zespół istotnych cech Klasa – abstrakcja obiektu – zespół cech istotnych dla identyfikacji i charakterystyki bytu Instancja – obiekt utworzony zgodnie z definicją klasy Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Podstawowe pojęcia (2) właściwości, atrybuty – cechy informacyjne klasy-obiektu, przechowują informacje (dane) właściwe dla każdego obiektu operacje, metody – cechy funkcjonalne klasy-obiektu, określają operacje (procedury, funkcje), jakie mogą być wykonywane przez obiekt Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Podstawowe pojęcia (3) powiązanie (link) – semantyczny związek między dwoma obiektami relacja – abstrakcja powiązania; relacja występuje między klasami, powiązanie między obiektami; powiązanie jest instancją relacji. asocjacja – relacja oznaczająca, że zmiana stanu jednego obiektu ma znaczenie dla drugiego obiektu Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Definiowanie klas wyodrębnienie bytów z dziedziny problemu identyfikacja klas zdefiniowanie atrybutów i operacji klas określenie struktury klas (relacji) reorganizacja klas Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Wyodrębnienie bytów potencjalne byty – rzeczowniki w opisie dziedziny problemu nie wszystkie rzeczowniki określają byty byt musi mieć tożsamość wyodrębnia się tylko byty istotne w dziedzinie problemu trzeba rozwiązać problem synonimów i niejednoznaczności Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Wyodrębnianie bytów - przykład Klient składa zamówienie przez Internet, telefonicznie lub pocztą. Przy składaniu zamówienia klient dowiaduje się o cenie produktu i spodziewanym terminie realizacji. Przy składaniu zamówienia telefonicznie sprzedawca podaje te informacje klientowi korzystając z cennika i podsystemu magazynowego, skąd pobiera aktualny stan każdego towaru. Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Rzeczowniki (wystąpienia pojedyncze) klient zamówienie Internet poczta składanie zamówienia cena produkt termin realizacja sprzedawca informacje cennik podsystem magazynowy stan towaru towar Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Byty i nie-byty klient zamówienie Internet poczta produkt, towar sprzedawca cennik podsystem magazynowy składanie zamówienia cena termin realizacji informacje stan towaru realizacja Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Byty istotne i nieistotne w dziedzinie problemu klient zamówienie produkt, towar sprzedawca cennik podsystem magazynowy Internet poczta Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Identyfikacja klas odróżnić abstrakcję od instancji osoba a nie Kowalski pojazd a nie Audi nazwa – rzeczownik w liczbie pojedynczej klient a nie klienci nazwa zrozumiała Wydanie towaru a nie WT Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Notacja karty CRC specyfikacje klas diagramy klas Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Karty Class-Responsibility-Collaboration stosowane w starszych metodach obiektowych odpowiedzialności (responsibities) – określają co dana klasa musi wiedzieć (knowing responsibilities) i co musi wykonywać (doing responsibilities, capabilities) kolaboranci (collaborators) – klasy współdziałające z daną klasą w wypełnieniu jej odpowiedzialności Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Specyfikacje klas atrybuty nazwa atrybutu typ atrybutu widoczność (prywatna, chroniona, publiczna) operacje nazwa operacji lista parametrów typ wyniku (opcjonalnie) widoczność relacje Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Diagram klas ramka klasy nagłówek nazwa klasy atrybuty operacje przedziały relacja dziedziczenia relacja agregacji (słabej) relacja agregacji (silnej) 0..1 1..* asocjacja Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Dziedziczenie (generalizacja-specjalizacja) Każda klasa może mieć przodka. Przy dziedziczeniu wielokrotnym klasa może mieć kilku przodków. Klasa dziedziczy atrybuty i operacje wszystkich swoich przodków. klasa ma wszystkie atrybuty swoich przodków klasa może definiować nowe atrybuty klasa realizuje te same operacje co jej przodkowie klasa może definiować nowe operacje klasa może zmieniać sposób realizacji operacji (implementację) Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Widoczność cech prywatna (private) – cecha jest widoczna tylko w danej klasie chroniona (protected) – cecha jest widoczna tylko w danej klasie i w klasach potomnych publiczna (public) – cecha jest widoczna dla wszystkich klas -nazwa atrybutu – atrybut prywatny #nazwa atrybutu – atrybut chroniony +nazwa atrybutu – atrybut publiczny Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Atrybuty pochodne (derived) /wiek = rok_obecny – rok(data_urodzenia) +/wiek Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Atrybuty wielokrotne nazwa atrybutu [krotność] n – dokładnie n wartości 0..1 – brak wartości lub jedna wartość (atrybut opcjonalny) 0..n – brak wartości lub co najwyżej n wartości n..m – co najmniej n i co najwyżej m wartości 0..* – brak wartości lub dowolnie wiele wartości n..* – co najmniej n wartości * – dowolnie wiele wartości Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Typy atrybutów Typy ogólne number integer real Typy szczególne decimal longint double Typy definiowane Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Przykład Osoba +Nazwisko: string +Imię: string +Adres: address +tel[*]: phonenum Klient +Firma: string Sprzedawca +Data urodzenia: date +Miejsce urodzenia: string +Urząd skarbowy: string Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Stereotypy operacji konstruktor (constructor) – tworzy nową instancję destruktor (destructor) – niszczy instancję klasy zapytanie (query) – podaje stan obiektu, stan pozostaje niezmieniony aktualizacja (update) – zmienia stan obiektu stan obiektu – atrybut lub zespół atrybutów Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Relacja agregacji Zamówienie +Numer: string +Data: string +Id klienta: ID Pozycja zamówienia +Lp: integer +Id towaru: ID +Ilość: number +Jm: string +Cena: real +/wartość = Ilość * Cena Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Asocjacje krotność krotność Zamówienie +Numer: string +Data: string +Id klienta: ID Klient 0..* 1 3składa nazwa asocjacji kierunek asocjacji Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Asocjacje wielostronne Zamówienie +Numer: string +Data: string +Id klienta: ID transakcja Klient Sprzedawca Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Role w asocjacji Pracownik Pracownik przełożony podwładny 1 zatrudnienie 0..* Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Klasa asocjacji Pracownik Pracownik przełożony podwładny 1 0..* Zatrudnienie +Data zatrudnienia Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Reorganizacja klas Definiuj klasy wprost wynikające z opisu dziedziny problemu. Znajduj wspólne cechy różnych klas. Twórz klasy uogólniające. Przenieś cechy wspólne do klasy uogólnionej Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Stosowanie wzorców Księgowość (acounting) Aktor-rola (actor-role) Zespół-część (assembly-part) Kontener-zawartość (container-content) Kontrakt Dokument Zatrudnienie ... Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
Modelowanie klas i obiektów Literatura Booch G, Rumbaugh J, Jacobson I: UML. Przewodnik użytkownika, WNT, Warszawa 2002 Dennis A., Haley Wixom B., Tegarden D.: System Analysis & Design. An Object-Oriented Approach with UML, John Wiley & Sons, Inc., USA 2001 Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów