1 Modelowanie klas i obiektówJarosław Kuchta Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
2 Modelowanie klas i obiektówPodstawowe 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
3 Modelowanie klas i obiektówPodstawowe 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
4 Modelowanie klas i obiektówPodstawowe 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
5 Modelowanie klas i obiektówDefiniowanie 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
6 Modelowanie klas i obiektówWyodrę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
7 Wyodrębnianie bytów - przykładKlient 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
8 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
9 Modelowanie klas i obiektówByty 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
10 Byty istotne i nieistotne w dziedzinie problemuklient zamówienie produkt, towar sprzedawca cennik podsystem magazynowy Internet poczta Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
11 Modelowanie klas i obiektówIdentyfikacja 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
12 Modelowanie klas i obiektówNotacja karty CRC specyfikacje klas diagramy klas Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
13 Karty Class-Responsibility-Collaborationstosowane 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
14 Modelowanie klas i obiektówSpecyfikacje 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
15 Modelowanie klas i obiektówDiagram 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
16 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
17 Modelowanie klas i obiektówWidoczność 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
18 Atrybuty pochodne (derived)/wiek = rok_obecny – rok(data_urodzenia) +/wiek Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
19 Modelowanie klas i obiektówAtrybuty 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
20 Modelowanie klas i obiektówTypy 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
21 Modelowanie klas i obiektówPrzykł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
22 Modelowanie klas i obiektówStereotypy 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
23 Modelowanie klas i obiektówRelacja 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
24 Modelowanie klas i obiektówAsocjacje 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
25 Asocjacje wielostronneZamówienie +Numer: string +Data: string +Id klienta: ID transakcja Klient Sprzedawca Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
26 Modelowanie klas i obiektówRole w asocjacji Pracownik Pracownik przełożony podwładny 1 zatrudnienie 0..* Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
27 Modelowanie klas i obiektówKlasa asocjacji Pracownik Pracownik przełożony podwładny 1 0..* Zatrudnienie +Data zatrudnienia Dokumentacja i Jakość Oprogramowania Modelowanie klas i obiektów
28 Modelowanie klas i obiektówReorganizacja 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
29 Modelowanie klas i obiektówStosowanie 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
30 Modelowanie klas i obiektówLiteratura 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