Modelowanie klas i obiektów Jarosław Kuchta
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 Modelowanie klas i obiektów 2
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 klasyobiektu, określają operacje (procedury, funkcje), jakie mogą być wykonywane przez obiekt Modelowanie klas i obiektów 3
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 Modelowanie klas i obiektów 4
Definiowanie klas wyodrębnienie bytów z dziedziny problemu identyfikacja klas zdefiniowanie atrybutów i operacji klas określenie struktury klas (relacji) reorganizacja klas Modelowanie klas i obiektów 5
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 Modelowanie klas i obiektów 6
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. Modelowanie klas i obiektów 7
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 Modelowanie klas i obiektów 8
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 Modelowanie klas i obiektów 9
Byty istotne i nieistotne w dziedzinie problemu klient zamówienie produkt, towar sprzedawca cennik podsystem magazynowy Internet poczta Modelowanie klas i obiektów 10
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 Modelowanie klas i obiektów 11
Notacja karty CRC specyfikacje klas diagramy klas Modelowanie klas i obiektów 12
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 Modelowanie klas i obiektów 13
Specyfikacje klas atrybuty nazwa atrybutu typ atrybutu widoczność (prywatna, chroniona, publiczna) operacje nazwa operacji lista parametrów typ wyniku (opcjonalnie) widoczność relacje Modelowanie klas i obiektów 14
Diagram klas ramka klasy nazwa klasy atrybuty nagłówek operacje przedziały 0..1 1..* relacja dziedziczenia relacja agregacji (słabej) relacja agregacji (silnej) asocjacja Modelowanie klas i obiektów 15
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ę) Modelowanie klas i obiektów 16
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 Modelowanie klas i obiektów 17
Atrybuty pochodne (derived) /wiek = rok_obecny rok(data_urodzenia) +/wiek Modelowanie klas i obiektów 18
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 Modelowanie klas i obiektów 19
Typy atrybutów Typy ogólne number integer real Typy szczególne decimal longint double Typy definiowane Modelowanie klas i obiektów 20
Przykład Osoba +Nazwisko: string +Imię: string +Adres: address +tel[*]: phonenum +Firma: string Klient Sprzedawca +Data urodzenia: date +Miejsce urodzenia: string +Urząd skarbowy: string Modelowanie klas i obiektów 21
Stereotypy operacji konstruktor (constructor) tworzy nową instancję destruktor (destructor) niszczy instancję klasy zapytanie (query) podaje stan obiektu, stan pozostaje niezmieniony aktualizacja stan obiektu (update) atrybut lub zmienia zespół atrybutów stan obiektu Modelowanie klas i obiektów 22
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 Modelowanie klas i obiektów 23
Asocjacje krotność krotność Zamówienie +Numer: string +Data: string +Id klienta: ID 0..* kierunek asocjacji 3składa 1 Klient nazwa asocjacji Modelowanie klas i obiektów 24
Asocjacje wielostronne Zamówienie +Numer: string +Data: string +Id klienta: ID transakcja Klient Sprzedawca Modelowanie klas i obiektów 25
Role w asocjacji Pracownik przełożony podwładny 1 zatrudnienie 0..* Pracownik Modelowanie klas i obiektów 26
Klasa asocjacji Pracownik przełożony podwładny 1 0..* Pracownik Zatrudnienie +Data zatrudnienia Modelowanie klas i obiektów 27
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 Modelowanie klas i obiektów 28
Stosowanie wzorców Księgowość (acounting) Aktor-rola (actor-role) Zespół-część (assembly-part) Kontener-zawartość (container-content) Kontrakt Dokument Zatrudnienie... Modelowanie klas i obiektów 29
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 Modelowanie klas i obiektów 30