OMT - Model obiektów, cz.1
Obiekt, klasa obiektów Pojęcie, abstrakcja lub rzecz istniejąca w świecie rzeczywistym, posiadająca dobrze określone granice i relewantna dla problemu SI, sprzyjająca zrozumieniu modelowanego świata rzeczywistego i implementowalna komputerowo. Obiekt posiada tożsamość i stan. Obiekty mogą być identyczne, posiadać ten sam stan, ale być innymi obiektami. Tożsamość oznacza, że obiekty są wyróżnialne w rzeczywistości poprzez ich istnienie, a nie poprzez jakikolwiek ich własności. Obiekt Klasa (obiektów) Grupa obiektów posiadających podobne własności (atrybuty), podobne zachowanie (operacje), podobne związki z innymi obiektami, podobną semantykę. (Osoba) Jan Nowak (Osoba) Ewa Stycz (Osoba) Osoba Klasa Obiekty (wystąpienia)
Atrybuty Atrybut jest (nazwaną) wartością przechowywaną przez obiekty w ramach klasy. nazwisko wiek atrybuty obiektu Osoba Atrybut jest wartością, nie jest obiektem. Nie posiada tożsamości. (Osoba) Jan Nowak 53 (Osoba) Ewa Stycz 24 Osoba nazwisko: string wiek: integer Klasa z atrybutami Obiekty (wystąpienia) z wartościami Atrybut unikalnie identyfikujący obiekt (klucz) nie jest wymagany. System obiektowy automatycznie generuje wewnętrzny unikalny identyfikator obiektu. Nie mają one znaczenia dla dziedziny problemu. Osoba nr_osoby: nr nazwisko: string wiek: integer
Operacje i metody Operacja jest funkcją lub transformacją, która może być zastosowana do obiektu (lub przez obiekt). Jest ona własnością klasy obiektów. zatrudnij zwolnij wypłać_dewidendę operacje na obiektach klasy Firma Wszystkie obiekty w ramach klasy podlegają tym samym operacjom. Ta sama operacja może być zastosowana do obiektów wielu różnych klas => polimorfizm. Metoda jest implementacją operacji dla jednej klasy. Plik ASCII Różne operacje drukowania Plik postscript drukuj Plik graficzny
Argumenty operacji Operacja/metoda może mieć argumenty (oprócz obiektu, który jest argumentem implicite). Sygnatura operacji: liczba i typ argumentów + typ wyniku operacji. Wszystkie metody implementujące daną operację muszą mieć tę samą sygnaturę. Osoba nazwisko wiek zmień_pracę zmień_adres Plik nazwa_pliku długość_w_bajtach ostatnia_zmiana drukuj Obiekt geometryczny kolor pozycja przesuń( delta: Wektor ) wewnątrz( p: Punkt ): Boolean obróć( kąt ) operacje Jeżeli argumenty nie są specyfikowane, to może ich być dowolnie dużo. zwolnij() - zero argumentów Nie zaleca się pomijania specyfikacji wyniku operacji Cecha jest pojęciem ogólniejszym zarówno dla atrybutu jak i dla operacji.
Powiązania i związki Powiązanie Fizyczny lub pojęciowy związek pomiędzy wystąpieniami obiektów Grupa powiązań posiadających wspólną strukturę i semantykę. Powiązanie jest wystąpieniem związku. związek (Osoba) Kasia (Osoba) Ewa (Osoba) Jasio Osoba pracuje_w pracuje_w pracuje_w pracuje_w (Firma) Krawiecka (Firma) Szewska Firma Klasy i związek Obiekty i powiązania Powiązania i związek nie mają kierunku (ale ich nazwy mogą ten kierunek określać). związek mogą mieć więcej argumentów niż dwa (ale nie jest to zalecane). związek a może być nie nazwana, jeżeli jej znaczenie wynika z klas, które łączy.
Liczność związku (1) cardinality Cecha o dyżym znaczeniu informacyjnym w analizie i modelowaniu. Jezeli związek wiąże klasy A i B, to istotne jest: jaka jest minimalna liczba wystąpień obiektów B widziana z jednego obiektu A, jaka jest maksymalna liczba wystąpień obiektów B widziana z jednego obiektu A, jaka jest minimalna liczba wystąpień obiektów A widziana z jednego obiektu B, jaka jest maksymalna liczba wystąpień obiektów A widziana z jednego obiektu B. Zwykle, minimalna liczbaje jest 0 lub 1, maksymalna zaś 1 lub n (dowolnie dużo). A A A A A A A A A A Rózne metodyki mają rózne notacje dla oznaczenia liczności związek i. B B B B B B A B: min = 0, max = 1 A B: min = 1, max = n B A: min = 1, max = n B A: min = 1, max = n
Liczność związku (2) Liczność związku określa jak wiele wystąpień jednej klasy może być związana z jednym wystąpieniem drugiej klasy. Generalnie, może to być dowolny podzbiór liczb całkowitych nieujemnych. OMT wprowadza następujące oznaczenia liczności: 1 2+ 3-5 2,4,18 1 2,3,4,... 3,4,5 2,4,18 Wielokrotność jest oznaczana specjalnymi końcówkami linii związek i Państwo Stolica 1 0+ 0,1 dokładnie 1 zero, jeden lub więcej zero lub jeden Firma Pracownik Osoba Adres
Atrybuty powiązań Atrybuty mogą być przypisane nie tylko do obiektów ale również do powiązań. Pracuje_w Osoba nazwisko pesel adres Firma nazwa adres Plik szef zarobek stanowisko Dostępny przez prawo dostępu Kieruje czytanie czytanie-pisanie pracownik Użytkownik ocena wydajności
Zalecany przypadek atrybutów powiązań Forma zalecana (bardziej elastyczna) Zalecenie: Starać się przypisać do klasy tylko te atrybuty, które są dla tej klasy stabilne. W przeciwnym przypadku diagram staje się mniej elastyczny. Pracuje_w Osoba nazwisko pesel adres Firma nazwa adres zarobek stanowisko Pracuje_w Forma nie zalecana (nie elastyczna; np. po zmianie powiąza- nia na wiele-do-wielu) Osoba nazwisko pesel adres zarobek stanowisko Firma nazwa adres
Modelowanie związku jako klasy Ma autoryzację na Użytkownik Stacja robocza Autoryzacja priorytet przywileje start sesji główny katalog użytk. Katalog (Wydaje się, że taka potrzeba występuje rzadko)
Role związku, uporządkowanie związku Role mogą dodatkowo specyfikować końce związku. pracownik pracodawca Osoba Firma Pracuje-w Role są konieczne, jeżeli związek łączy obiekty tej samej klasy. właściciel zawierający Użytkownik Katalog uprawniony zawartość Uporządkowanie związek i: {uporządkowane} Okno Ekran Widoczne na
Związki ternarne, n-arne ternary association, n-ary association Projekt Język Osoba (Projekt) System księgowy (Osoba) Jan Program CAD (Język) Cobol C Dość często związek wyższego rzędu wymagają zastosowania nazw ról. Oznaczenia dla liczności związku wyższego rzędu są pewnym problemem: należy traktować rombik tak jak klasę.
Związek kwalifikowany związek kwalifikowany wiąże dwie klasy i kwalifikator, który jest specjalnym atrybutem redukującym efektywnie liczność związku. Kwalifikowane mogą być związki 1:n i m:n. Kwalifikator jest stawiany od strony “wiele” Katalog Plik nazwa pliku Plik może należeć do jednego katalogu. Wewnątrz tego katalogu nazwa pliku jest unikalna. Stąd, Katalog + nazwa pliku Plik związek 1:1
Agregacje (1) Specjalna forma związku, określająca związek “część-całość”. Obiekty będące komponentami czegoś są zwi ązane z obiektem będącym całością. Np. jakaś część zawiera składowe części. A jest częścią B, B jest częścią C Relacja agregacji jest tranzytywna i antysymetryczna: A jest częścią C A jest częścią B nieprawda, że B jest częścią A Pewne własności całości są propagowane do jej składowych: Samochód znajduje się w miejscu X Silnik tego samochodu znajduje się w miejscu X Dokument Paragraf Zdanie
Agregacje (2) aggregation Jak odróżnić agregację od związku? Tytuł Autor Dane identyfikacyjne Artykuł Pozycja Faktura Akceptacja Streszczenie Rozdział Suma Literatura Kryterium istnienia: pod-obiekt nie może istnieć bez ojcowskiego obiektu. Kryterium wstawiania: pod-obiekt nie może być samotnie wprowadzony do bazy danych Kryterium usuwania (słaby obiekt): usunięcie obiektu implikuje usunięcie pod-obiektu Kryterium fizycznej części: jakiś obiekt jest fizyczną częścią innego obiektu
Generalizacje/specjalizacje generalization/specialization Są to abstrakcje polegające na budowie pojęć bardziej ogólnych (bardziej szczegółowych), jeżeli mamy pojęcia bardziej szczegółowe (bardziej ogólne) Firma nazwa adres ...Rodzaj towaru? ...Rodzaj usługi? Sklep nazwa adres Rodzaj towaru Firma usługowa nazwa adres Rodzaj usługi Firma nazwa adres Generalizacja Specjalizacja Sklep Rodzaj towaru Firma usługowa Rodzaj usługi
Generalizacja i dziedziczenie Generalizacja jest związkiem pomiędzy klasą i jedną lub więcej jej specjalizacji. Klasy bardziej wyspecjalizowane dziedziczą wszystkie własności klasy bardziej ogólnej. Dziedziczenie jest tranzytywne. Wyposażenie nazwa wytwórca waga koszt dyskryminator typ wyposażenia Pompa cisnienie ssania cisnienie tłoczenia przepływ Wymiennik ciepła powierzchnia wymiany średnica rury ... Zbiornik objętość ciśnienie pod-klasy nie są rozłączne typ zbiornika typ pompy
Użycie generalizacji, przesłanianie Generalizacja jest użyteczna zarówno do modelowania, jak i do implementacji. Generalizacja wspomaga modelowanie poprzez wprowadzenie struktury klas i określenie ich podobieństwa i różnic. Dziedziczenie operacji jest pomocne w implementacji jako środek do tworzenia kodu wielokrotnego użycia. Dziedziczenie jest własnościa obiektowych języków programowania. Klasa może przesłonić jakąś cechę odziedziczoną z klasy bardziej generalnej. Powody, np: wyspecyfikowanie specyficznego zachowania się podklasy dookreślenie zachowania się lepszy czas wykonania Sygnatura operacji nie powinna być przesłaniana
Przykład diagramu związku klas Okno tekstowe ciąg znakowy wstaw usuń Linia x1 y1 x2 y2 rysuj Okno przesuwalne przesunięcie-x przesunięcie-y przesuń Okno x1 y1 x2 y2 wyświetl zdejmij na czubek na spód Figura zamknięta kolor wypełnienia deseń wypełnienia Okno graficzne cx1 cy1 cx2 cy2 dodaj-element usuń-element Przesuwalna grafika okno elementy Figura kolor szer-linii Przycisk napis zwolniony Elipsa x y a b rysuj Poligon rysuj Panel Pozycja wyboru nazwa pozycji bież wybór wierzchołki {uporządkowany} Pozycja panelu x y etykieta {podzbiór} wybory Pozycja tekstowa max długość obecny napis Punkt x y rejestruj zdarzenie Element wyboru napis wartość Zdarzenie akcja zdarzenie na klawiaturze