modelowanie klas i obiektów
DESCRIPTION
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 - PowerPoint PPT PresentationTRANSCRIPT
Modelowanie Modelowanie klas i obiektówklas i obiektów
Jarosław KuchtaJarosław Kuchta
Dokumentacja i Jakość Dokumentacja i Jakość OprogramowaniaOprogramowania
Dokumentacja i Jakość Oprogramowania
2Modelowanie klas i obiektów
Podstawowe pojęcia Podstawowe pojęcia (1)(1)
BytByt, encja (, encja (entityentity) – coś co istnieje, posiada ) – coś co istnieje, posiada własne cechy i wyodrębnioną tożsamość własne cechy i wyodrębnioną tożsamość ((identityidentity); bytem może być rzecz, osoba, ); bytem może być rzecz, osoba, organizacja, pojęcie, ideaorganizacja, pojęcie, idea
ObiektObiekt – abstrakcja bytu – byt zdefiniowany – abstrakcja bytu – byt zdefiniowany przez zespół istotnych cechprzez zespół istotnych cech
KlasaKlasa – abstrakcja obiektu – zespół cech – abstrakcja obiektu – zespół cech istotnych dla identyfikacji i charakterystyki istotnych dla identyfikacji i charakterystyki bytubytu
InstancjaInstancja – obiekt utworzony zgodnie z – obiekt utworzony zgodnie z definicją klasydefinicją klasy
Dokumentacja i Jakość Oprogramowania
3Modelowanie klas i obiektów
Podstawowe pojęcia Podstawowe pojęcia (2)(2)
właściwości, atrybutywłaściwości, atrybuty – cechy – cechy informacyjne klasy-obiektu, informacyjne klasy-obiektu, przechowują informacje (dane) przechowują informacje (dane) właściwe dla każdego obiektuwłaściwe dla każdego obiektu
operacje, metodyoperacje, metody – cechy – cechy funkcjonalne klasy-obiektu, określają funkcjonalne klasy-obiektu, określają operacje (procedury, funkcje), jakie operacje (procedury, funkcje), jakie mogą być wykonywane przez obiektmogą być wykonywane przez obiekt
Dokumentacja i Jakość Oprogramowania
4Modelowanie klas i obiektów
Podstawowe pojęcia Podstawowe pojęcia (3)(3)
powiązaniepowiązanie ( (linklink) – semantyczny ) – semantyczny związek między dwoma obiektamizwiązek między dwoma obiektami
relacjarelacja – abstrakcja powiązania; – abstrakcja powiązania; relacja występuje między klasami, relacja występuje między klasami, powiązanie między obiektami; powiązanie między obiektami; powiązanie jest instancją relacji.powiązanie jest instancją relacji.
asocjacjaasocjacja – relacja oznaczająca, że – relacja oznaczająca, że zmiana stanu jednego obiektu ma zmiana stanu jednego obiektu ma znaczenie dla drugiego obiektuznaczenie dla drugiego obiektu
Dokumentacja i Jakość Oprogramowania
5Modelowanie klas i obiektów
Definiowanie klasDefiniowanie klas
wyodrębnienie bytów z dziedziny wyodrębnienie bytów z dziedziny problemuproblemu
identyfikacja klasidentyfikacja klas zdefiniowanie atrybutów i operacji zdefiniowanie atrybutów i operacji
klasklas określenie struktury klas (relacji)określenie struktury klas (relacji) reorganizacja klasreorganizacja klas
Dokumentacja i Jakość Oprogramowania
6Modelowanie klas i obiektów
Wyodrębnienie bytówWyodrębnienie bytów
potencjalne byty – rzeczowniki w potencjalne byty – rzeczowniki w opisie dziedziny problemuopisie dziedziny problemu
nie wszystkie rzeczowniki określają nie wszystkie rzeczowniki określają bytybyty
byt musi mieć tożsamośćbyt musi mieć tożsamość wyodrębnia się tylko byty istotne w wyodrębnia się tylko byty istotne w
dziedzinie problemudziedzinie problemu trzeba rozwiązać problem synonimów trzeba rozwiązać problem synonimów
i niejednoznacznościi niejednoznaczności
Dokumentacja i Jakość Oprogramowania
7Modelowanie klas i obiektów
Wyodrębnianie bytów Wyodrębnianie bytów - przykład- przykład
Klient składa zamówienie przez Internet, Klient składa zamówienie przez Internet, telefonicznie lub pocztą. Przy składaniu telefonicznie lub pocztą. Przy składaniu zamówienia klient dowiaduje się o cenie zamówienia klient dowiaduje się o cenie produktu i spodziewanym terminie produktu i spodziewanym terminie realizacji. Przy składaniu zamówienia realizacji. Przy składaniu zamówienia telefonicznie sprzedawca podaje te telefonicznie sprzedawca podaje te informacje klientowi korzystając z informacje klientowi korzystając z cennika i podsystemu magazynowego, cennika i podsystemu magazynowego, skąd pobiera aktualny stan każdego skąd pobiera aktualny stan każdego towaru. towaru.
Dokumentacja i Jakość Oprogramowania
8Modelowanie klas i obiektów
Rzeczowniki Rzeczowniki (wystąpienia (wystąpienia pojedyncze)pojedyncze) klient klient
zamówienie zamówienie InternetInternet pocztapoczta składanie składanie
zamówieniazamówienia cenacena produkt produkt termin termin realizacjarealizacja
sprzedawca sprzedawca informacje informacje cennikcennik podsystem podsystem
magazynowymagazynowy stan towarustan towaru towartowar
Dokumentacja i Jakość Oprogramowania
9Modelowanie klas i obiektów
Byty i nie-bytyByty i nie-byty
klientklient zamówienie zamówienie InternetInternet pocztapoczta produkt, towarprodukt, towar sprzedawca sprzedawca cennikcennik podsystem podsystem
magazynowymagazynowy
składanie składanie zamówieniazamówienia
cenacena termin realizacjitermin realizacji informacjeinformacje stan towarustan towaru realizacjarealizacja
Dokumentacja i Jakość Oprogramowania
10Modelowanie klas i obiektów
Byty istotne i nieistotne Byty istotne i nieistotne w dziedzinie problemuw dziedzinie problemu
klientklient zamówienie zamówienie produkt, towarprodukt, towar sprzedawca sprzedawca cennikcennik podsystem podsystem
magazynowymagazynowy
InternetInternet pocztapoczta
Dokumentacja i Jakość Oprogramowania
11Modelowanie klas i obiektów
Identyfikacja klasIdentyfikacja klas
odróżnić abstrakcję od instancjiodróżnić abstrakcję od instancji osoba a nie Kowalskiosoba a nie Kowalski pojazd a nie Audipojazd a nie Audi
nazwa – rzeczownik w liczbie nazwa – rzeczownik w liczbie pojedynczejpojedynczej klient a nie klienciklient a nie klienci
nazwa zrozumiałanazwa zrozumiała Wydanie towaru a nie WTWydanie towaru a nie WT
Dokumentacja i Jakość Oprogramowania
12Modelowanie klas i obiektów
NotacjaNotacja
karty CRCkarty CRC specyfikacje klasspecyfikacje klas diagramy klasdiagramy klas
Dokumentacja i Jakość Oprogramowania
13Modelowanie klas i obiektów
Karty Class-Karty Class-Responsibility-Responsibility-CollaborationCollaboration
stosowane w starszych metodach stosowane w starszych metodach obiektowychobiektowych
odpowiedzialności (odpowiedzialności (responsibitiesresponsibities) – ) – określają co dana klasa musi wiedzieć określają co dana klasa musi wiedzieć ((knowing responsibilitiesknowing responsibilities) i co musi ) i co musi wykonywać (wykonywać (doing responsibilities, doing responsibilities, capabilitiescapabilities))
kolaboranci (kolaboranci (collaboratorscollaborators) – klasy ) – klasy współdziałające z daną klasą w współdziałające z daną klasą w wypełnieniu jej odpowiedzialnościwypełnieniu jej odpowiedzialności
Dokumentacja i Jakość Oprogramowania
14Modelowanie klas i obiektów
Specyfikacje klasSpecyfikacje klas
atrybutyatrybuty nazwa atrybutunazwa atrybutu typ atrybututyp atrybutu widoczność (prywatna, chroniona, publiczna)widoczność (prywatna, chroniona, publiczna)
operacjeoperacje nazwa operacjinazwa operacji lista parametrówlista parametrów typ wyniku (opcjonalnie)typ wyniku (opcjonalnie) widocznośćwidoczność
relacjerelacje
Dokumentacja i Jakość Oprogramowania
15Modelowanie klas i obiektów
Diagram klasDiagram klas
nazwa klasy
atrybuty
operacje
ramka klasy
nagłówek
przedziały
relacja dziedziczeniarelacja agregacji (słabej)
relacja agregacji (silnej)asocjacja0..1 1..*
Dokumentacja i Jakość Oprogramowania
16Modelowanie klas i obiektów
Dziedziczenie Dziedziczenie (generalizacja-(generalizacja-specjalizacja)specjalizacja) Każda klasa może mieć przodka.Każda klasa może mieć przodka.
Przy dziedziczeniu wielokrotnym klasa Przy dziedziczeniu wielokrotnym klasa może mieć kilku przodków.może mieć kilku przodków.
Klasa dziedziczy atrybuty i operacje Klasa dziedziczy atrybuty i operacje wszystkich swoich przodków.wszystkich swoich przodków. klasa ma wszystkie atrybuty swoich przodkówklasa ma wszystkie atrybuty swoich przodków klasa może definiować nowe atrybutyklasa może definiować nowe atrybuty klasa realizuje te same operacje co jej klasa realizuje te same operacje co jej
przodkowieprzodkowie klasa może definiować nowe operacjeklasa może definiować nowe operacje klasa może zmieniać sposób realizacji operacji klasa może zmieniać sposób realizacji operacji
(implementację)(implementację)
Dokumentacja i Jakość Oprogramowania
17Modelowanie klas i obiektów
Widoczność cechWidoczność cech prywatna (prywatna (privateprivate) – cecha jest widoczna ) – cecha jest widoczna
tylko w danej klasietylko w danej klasie chroniona (chroniona (protectedprotected) – cecha jest ) – cecha jest
widoczna tylko w danej klasie i w klasach widoczna tylko w danej klasie i w klasach potomnychpotomnych
publiczna (publiczna (publicpublic) – cecha jest widoczna ) – cecha jest widoczna dla wszystkich klasdla wszystkich klas
-nazwa atrybutu – atrybut prywatny
#nazwa atrybutu – atrybut chroniony
+nazwa atrybutu – atrybut publiczny
Dokumentacja i Jakość Oprogramowania
18Modelowanie klas i obiektów
Atrybuty pochodne Atrybuty pochodne ((derivedderived))
/wiek = rok_obecny – /wiek = rok_obecny – rok(data_urodzenia)rok(data_urodzenia)
+/wiek+/wiek
Dokumentacja i Jakość Oprogramowania
19Modelowanie klas i obiektów
Atrybuty wielokrotneAtrybuty wielokrotne
nazwa atrybutu [krotność]nazwa atrybutu [krotność] n – dokładnie n – dokładnie nn wartości wartości 0..1 – brak wartości lub jedna wartość 0..1 – brak wartości lub jedna wartość
(atrybut opcjonalny)(atrybut opcjonalny) 0..n – brak wartości lub co najwyżej 0..n – brak wartości lub co najwyżej nn wartości wartości n..m – co najmniej n..m – co najmniej n n i co najwyżej i co najwyżej m m wartościwartości 0..* – brak wartości lub dowolnie wiele 0..* – brak wartości lub dowolnie wiele
wartościwartości n..* – co najmniej n..* – co najmniej nn wartości wartości * – dowolnie wiele wartości* – dowolnie wiele wartości
Dokumentacja i Jakość Oprogramowania
20Modelowanie klas i obiektów
Typy atrybutówTypy atrybutów
Typy ogólneTypy ogólne numbernumber integerinteger realreal
Typy szczególneTypy szczególne decimaldecimal longintlongint doubledouble
Typy definiowaneTypy definiowane
Dokumentacja i Jakość Oprogramowania
21Modelowanie klas i obiektów
PrzykładPrzykł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
22Modelowanie klas i obiektów
Stereotypy operacjiStereotypy operacji konstruktor (konstruktor (constructorconstructor) – tworzy nową ) – tworzy nową
instancjęinstancję destruktor (destruktor (destructordestructor) – niszczy instancję ) – niszczy instancję
klasyklasy zapytanie (zapytanie (queryquery) – podaje stan obiektu, stan ) – podaje stan obiektu, stan
pozostaje niezmienionypozostaje niezmieniony aktualizacja (aktualizacja (updateupdate) – zmienia stan obiektu) – zmienia stan obiektu
stan obiektu – atrybut lub zespół atrybutów
Dokumentacja i Jakość Oprogramowania
23Modelowanie klas i obiektów
Relacja agregacjiRelacja 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
24Modelowanie klas i obiektów
AsocjacjeAsocjacje
Zamówienie
+Numer: string+Data: string+Id klienta: ID
Klient10..*
składa
krotnośćkrotność
nazwa asocjacji
kierunek asocjacji
Dokumentacja i Jakość Oprogramowania
25Modelowanie klas i obiektów
Asocjacje Asocjacje wielostronnewielostronne
Zamówienie
+Numer: string+Data: string+Id klienta: ID
Klient
Sprzedawca
transakcja
Dokumentacja i Jakość Oprogramowania
26Modelowanie klas i obiektów
Role w asocjacjiRole w asocjacji
Pracownikprzełożony podwładny
Pracownik
1 0..*zatrudnienie
Dokumentacja i Jakość Oprogramowania
27Modelowanie klas i obiektów
Klasa asocjacjiKlasa asocjacji
Pracownikprzełożony podwładny
Pracownik
1 0..*
Zatrudnienie
+Data zatrudnienia
Dokumentacja i Jakość Oprogramowania
28Modelowanie klas i obiektów
Reorganizacja klasReorganizacja klas
Definiuj klasy wprost wynikające z Definiuj klasy wprost wynikające z opisu dziedziny problemu.opisu dziedziny problemu.
Znajduj wspólne cechy różnych klas.Znajduj wspólne cechy różnych klas. Twórz klasy uogólniające.Twórz klasy uogólniające. Przenieś cechy wspólne do klasy Przenieś cechy wspólne do klasy
uogólnionejuogólnionej
Dokumentacja i Jakość Oprogramowania
29Modelowanie klas i obiektów
Stosowanie wzorcówStosowanie wzorców
Księgowość (acounting)Księgowość (acounting) Aktor-rola (actor-role)Aktor-rola (actor-role) Zespół-część (assembly-part)Zespół-część (assembly-part) Kontener-zawartość (container-content)Kontener-zawartość (container-content) KontraktKontrakt DokumentDokument ZatrudnienieZatrudnienie ......
Dokumentacja i Jakość Oprogramowania
30Modelowanie klas i obiektów
LiteraturaLiteratura
Booch G, Rumbaugh J, Jacobson I: Booch G, Rumbaugh J, Jacobson I: UML. Przewodnik użytkownikaUML. Przewodnik użytkownika, , WNT, Warszawa 2002WNT, Warszawa 2002
Dennis A., Haley Wixom B., Dennis A., Haley Wixom B., Tegarden D.: Tegarden D.: System Analysis & System Analysis & Design. An Object-Oriented Design. An Object-Oriented Approach with UMLApproach with UML, John Wiley & , John Wiley & Sons, Inc., USA 2001Sons, Inc., USA 2001