300 likes | 448 Views
Jarosław Kuchta Dokumentacja i Jakość Oprogramowania. 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
E N D
Jarosław Kuchta Dokumentacja i Jakość Oprogramowania 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 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 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 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 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 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. Modelowanie klas i obiektów
klient zamówienie Internet poczta składanie zamówienia cena produkt termin realizacja sprzedawca informacje cennik podsystem magazynowy stan towaru towar Rzeczowniki (wystąpienia pojedyncze) Modelowanie klas i obiektów
klient zamówienie Internet poczta produkt, towar sprzedawca cennik podsystem magazynowy składanie zamówienia cena termin realizacji informacje stan towaru realizacja Byty i nie-byty Modelowanie klas i obiektów
klient zamówienie produkt, towar sprzedawca cennik podsystem magazynowy Internet poczta Byty istotne i nieistotne w dziedzinie problemu 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 Modelowanie klas i obiektów
Notacja • karty CRC • specyfikacje klas • diagramy klas 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 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 Modelowanie klas i obiektów
nazwa klasy atrybuty operacje Diagram klas ramka klasy nagłówek przedziały relacja dziedziczenia relacja agregacji (słabej) relacja agregacji (silnej) asocjacja 0..1 1..* 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ę) 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 Modelowanie klas i obiektów
Atrybuty pochodne (derived) • /wiek = rok_obecny – rok(data_urodzenia) • +/wiek 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 Modelowanie klas i obiektów
Typy atrybutów • Typy ogólne • number • integer • real • Typy szczególne • decimal • longint • double • Typy definiowane Modelowanie klas i obiektów
Osoba Klient Sprzedawca +Nazwisko: string+Imię: string+Adres: address+tel[*]: phonenum +Firma: string +Data urodzenia: date+Miejsce urodzenia: string+Urząd skarbowy: string Przykład 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 Modelowanie klas i obiektów
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 Relacja agregacji Modelowanie klas i obiektów
Zamówienie +Numer: string+Data: string+Id klienta: ID Klient Asocjacje krotność krotność 0..* 1 3składa nazwa asocjacji kierunek asocjacji Modelowanie klas i obiektów
Zamówienie +Numer: string+Data: string+Id klienta: ID Klient Sprzedawca Asocjacje wielostronne transakcja Modelowanie klas i obiektów
Pracownik Pracownik Role w asocjacji przełożony podwładny 1 zatrudnienie 0..* Modelowanie klas i obiektów
Pracownik Pracownik Klasa asocjacji przełożony podwładny 1 0..* Zatrudnienie +Data zatrudnienia 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 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 • ... 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 Modelowanie klas i obiektów