Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

OMT - Model obiektów, cz.2. OMT - model obiektów Agregacje - nieco dokładniej Klasy abstrakcyjne Delegacja Wielokrotne dziedziczenie Jak obejść brak wielodziedziczenia?

Podobne prezentacje


Prezentacja na temat: "OMT - Model obiektów, cz.2. OMT - model obiektów Agregacje - nieco dokładniej Klasy abstrakcyjne Delegacja Wielokrotne dziedziczenie Jak obejść brak wielodziedziczenia?"— Zapis prezentacji:

1 OMT - Model obiektów, cz.2

2 OMT - model obiektów Agregacje - nieco dokładniej Klasy abstrakcyjne Delegacja Wielokrotne dziedziczenie Jak obejść brak wielodziedziczenia? Jak obejść brak dziedziczenia? Klucze

3 Agregacje Agregacja jest specjalną formą związku, którego podstawową intencją jest odwzorowanie zależności część-całość. Agregacja jest specjalną formą związku, którego podstawową intencją jest odwzorowanie zależności część-całość. Kiedy warto używać agregacji? Decyzja jest często arbitralna. Czy właściwe jest użycie frazy jest częścią? Czy operacje na całości automatycznie są propagowane na jej części? Czy jakiś atrybut całości jest automatycznie propagowny do jej części? Czy istnieje wewnętrzna asymetria w asocjacji, kiedy jakaś klasa jest podporządkowana innej klasie? Firma Osoba Pracuje w OddziałWydział

4 Agregacja vs. generalizacja Wystąpienie agregacji wiąże dwa obiekty. Nie można mówić o wystąpieniu generalizacji; jest to związek między klasami. Lampa flurescencyjna Lampa żarówkowa OprawaKloszWyłącznikPrzewody OprawkaDławikZamocowanie świetlówki Starter Agregacje mogą być rekurencyjne; generalizacje nie mogą.

5 Propagacja operacji Przesunięcie agregatu (np. okienka na ekranie) implikuje przesunięcie wszystkich obiektów w tym okienku. Skopiowanie dokumentu oznacza skopiowanie wszystkich jego składowych. OsobaDokument kopiuj Paragraf kopiuj Znak kopiuj Posiada kopiuj Propagacja jest zaznaczona na diagramach OMT w postaci małej strzałki nad agregacją lub asocjacją, z zaznaczeniem operacji, która jest propagowana.

6 Delegacja Pojęcie ściśle związane z agregacją. Samochód start stop Silnik start stop Rozrusznik włącz wyłącz Zapłon włącz wyłącz Operacje start i stop samochodu są oddelegowane do operacji start i stop silnika, które z kolei są oddelegowane do operacji włącz i wyłącz rozrusznika i zapłonu. W wielu przypadkach agregacja i delegacja umożliwiają obejście braku dziedziczenia i wielodziedziczenia. (wyjaśnienie będzie później)

7 Klasy abstrakcyjne Klasa abstrakcyjna nie bezpośrednich wystąpień. Jest ona wspólną częścia definicji innych klas. Klasa konkretna może mieć bezpośrednie wystąpienia. Klasa konkretna nie musi być liściem w drzewie klas. MasarzPiekarzCukiernik... Klasa Pracownik nie jest klasą abstrakcyjną ponieważ może być pracownik bez zawodu. Wielokropek oznacza istnienie innych podklas, które nie są przedstawione na diagramie, np. z powodu braku miejsca lub dlatego, że są mniej istotne dla rozpatrywanego przypadku Pracownik

8 Abstrakcyjne operacje Klasa abstrakcyjna może mieć abstrakcyjne operacje. Są one wyspecyfikowane w takiej klasie, ale ich implementacja znajduje się w ramach każdej pod-klasy Pracownik już-zarobił-w-tym-roku oblicz wypłatę {abstract} Pracownik godzinowy stawka godzinowa stawka świąteczna oblicz wypłatę Pracownik etatowy zarobek tygodniowy oblicz wypłatę Pracownik na zlecenie zarobek miesięczny oblicz wypłatę Specyfikacja metody oblicz wypłatę znajduje się w ramach klasy abstrakcyjnej Pracownik. Każda klasa konkretna zawiera specyficzną implementację tej metody.

9 Rozszerzenia i ograniczenia w ramach podklasy Wystąpienie klasy jest jednocześnie wystąpieniem wszystkich jej nadklas. Podklasa nie może omijać lub dowolnie zmieniać atrybuty nadklasy. Podklasa może zmienić (przesłonić) metodę, ale bez zmiany jej zewnętrznej specyfikacji. Podlasa może dowolnie dodawać nowe atrybuty i metody (rozszerzać). Podklasa może ograniczać wartości atrybutów. Np. koło jest podklasą elipsy, gdzie obie średnice elipsy są sobie równe. Ograniczenia mogą spowodować, że część metod przestanie być poprawna. Np. zmiana jednej ze średnic elipsy nie jest dopuszczalna w podklasie koło, gdyż muszą tam być zmienione obie średnice.

10 Wielokrotne dziedziczenie (wielo-dziedziczenie) Dopuszczalne jest, aby klasa miała więcej niż jedną nad-klasę. W wielu przypadkach wielodziedziczenie jest naturalnym odwzorowanie sytuacji; niekiedy wprowadza jednak dodatkową komplikację. Pracownik godzinowy Pracownik etatowy Pracownik na zlecenie Pracownik nie emerytowany Pracownik emerytowany status płacowy stosunek do emerytury Pracownik godzinowy nie emerytowany Generalizacje mogą zależeć od aspektu

11 Transformacja diagramów klas Zamiana diagramu wejściowego na równoważny diagram wyjściowy. Co to znaczy równoważny ? matematyczne udowodnienie równoważności diagramó nie jest możliwe, z powodu ich nieformalnej semantyki; możliwe jest to wyłacznie na podstawie dogłębnego zrozumienia problemu. metody nieformalne porównują diagramy poprzez intuicyjną ocenę możliwości odwzorowania w nich pewnych elementarnych informacji. Niekiedy może być pomocny język zapytań typu SQL, gdyż możemy wtedy w sposób nieco bardziej formalny ocenić, czy dla obydwu porównywanych diagramów istnieje zapytanie realizujące ten sam cel wyszukiwania. – np. Podaj wszystkich studentów promowanych przez Kowalskiego Zamiana diagramu wejściowego na równoważny diagram wyjściowy. Co to znaczy równoważny ? matematyczne udowodnienie równoważności diagramó nie jest możliwe, z powodu ich nieformalnej semantyki; możliwe jest to wyłacznie na podstawie dogłębnego zrozumienia problemu. metody nieformalne porównują diagramy poprzez intuicyjną ocenę możliwości odwzorowania w nich pewnych elementarnych informacji. Niekiedy może być pomocny język zapytań typu SQL, gdyż możemy wtedy w sposób nieco bardziej formalny ocenić, czy dla obydwu porównywanych diagramów istnieje zapytanie realizujące ten sam cel wyszukiwania. – np. Podaj wszystkich studentów promowanych przez Kowalskiego Powody równoważnego przekształcania diagramów: Uproszczenie, zdekomponowanie Dopasowanie do bazy realizacyjnej SZBD Uwzględnienie ilościowych charakterystyk przetwarzania

12 Jak obejść brak wielo-dziedziczenia: delegacja z użyciem ról Pracownik godzinowy Pracownik etatowy Pracownik na zlecenie Pracownik nie emerytowany Pracownik emerytowany status płacowy stosunek do emerytury Płace pracownika Emerytura pracownika Objeścia braku wielo-dziedziczenia są konieczne, ale często psują strukturę logiczną modelu i komplikują jego pielęgnację.

13 Jak obejść brak wielo-dziedziczenia: użycie dziedziczenia i delegacji Pracownik godzinowy Pracownik etatowy Pracownik na zlecenie Pracownik nie emerytowany Pracownik emerytowany status płacowy stosunek do emerytury Emerytura pracownika Dziedziczenie Delegacja

14 Jak obejść brak wielo-dziedziczenia: zagnieżdżona generalizacja Pracownik status płacowy stosunek do emerytury Permutacja klas stosunek do emerytury stosunek do emerytury Pracownik godzinowy nie emerytowany Pracownik godzinowy emerytowany Pracownik etatowy nie emerytowany Pracownik etatowy emerytowany Pracownik na zlecenie nie emerytowany Pracownik na zlecenie emerytowany Pracownik godzinowy Pracownik etatowy Pracownik na zlecenie

15 Brak wielo-dziedziczenia - zalecenia Jeżeli klasa ma kilka super-klas, wszystkie jednakowo ważne, najlepiej użyć delegacji, która zachowuje symetrię modelu. Jeżeli jedna super-klasa wyraźnie dominuje, zaś inne są mniej ważne, tę jedną zaimplementować poprzez dziedziczenie, zaś pozostałe przez delegację. Jeżeli liczba kombinacji klas jest mała, można rozpatrywać zagnieżdżoną generalizację. Jeżeli jedna superklasa ma zdecydowanie więcej cech niż pozostałe lub może powodować wąskie gardło w wydajności, wyróżnić tę superklasę poprzez dziedziczenie. Przy zagnieżdżonej generalizacji, najważniejszy czynnik powinien być pierwszym kryterium podziału; pozostałe dalej, w hierarchii ważności. Unikać zagnieżdżonych generalizacji, jeżeli duża ilość kodu musi być powtórzona. Rozpatrzyć ważność utrzymania dokładnej tożsamości. Tylko zagnieżdżona generalizacja ją zapewnia.

16 Metody transformacji diagramu klas (1) ZAMIANA HIERARCHII KLAS (wynika z braku możliwości reprezentacji hierarchii klas w wielu systemach zarządzania bazą danych, np. relacyjnych) HIERARCIA KLAS ==> NADKLASA - zamiana hierarchii klas (nad- i pod- klasy) na pojedynczą klasę poprzez dodanie atrybutów i metod podklas do atrybutów i metod nadklasy uogólnienia oraz dodanie atrybutu - dyskryminatora przypadku HIERARCHIA KLAS ==> PODKLASA - usunięcie nadklasy i pozostawienie podklas z propagacją atrybutów i metod nadklasy i dublowaniem asocjacji nadklasy dla każdej podklasy HIERARCHIA KLAS ==> AGREGACJE - zamiana hierarchii klas na zestaw agregacji łączących nadklasę ze wszystkimi podklasami ZAMIANA HIERARCHII KLAS (wynika z braku możliwości reprezentacji hierarchii klas w wielu systemach zarządzania bazą danych, np. relacyjnych) HIERARCIA KLAS ==> NADKLASA - zamiana hierarchii klas (nad- i pod- klasy) na pojedynczą klasę poprzez dodanie atrybutów i metod podklas do atrybutów i metod nadklasy uogólnienia oraz dodanie atrybutu - dyskryminatora przypadku HIERARCHIA KLAS ==> PODKLASA - usunięcie nadklasy i pozostawienie podklas z propagacją atrybutów i metod nadklasy i dublowaniem asocjacji nadklasy dla każdej podklasy HIERARCHIA KLAS ==> AGREGACJE - zamiana hierarchii klas na zestaw agregacji łączących nadklasę ze wszystkimi podklasami

17 Metody transformacji diagramu klas (2) PODZIAŁ KLASY: przyczyną jest fakt, że pewne operacje mają częsty dostęp do tych samych wystąpień lub atrybutów łącznie, a tym samym warto te wystąpienia lub atrybuty grupować PODZIAŁ POZIOMY - grupowanie wystąpień PODZIAŁ PIONOWY - grupowanie atrybutów i metod ŁĄCZENIE KLAS: stosuje się gdy wiele różnych operacji odwołuje się zawsze do kilku klas łącznie => możliwa utrata spójności modelu WYBÓR KLUCZA PODZIAŁ KLASY: przyczyną jest fakt, że pewne operacje mają częsty dostęp do tych samych wystąpień lub atrybutów łącznie, a tym samym warto te wystąpienia lub atrybuty grupować PODZIAŁ POZIOMY - grupowanie wystąpień PODZIAŁ PIONOWY - grupowanie atrybutów i metod ŁĄCZENIE KLAS: stosuje się gdy wiele różnych operacji odwołuje się zawsze do kilku klas łącznie => możliwa utrata spójności modelu WYBÓR KLUCZA

18 Metoda: Hierarchia klas ==> nadklasa a5 Klasa 1 a1 a2 m1 m2 Klasa 11 a3 m3 Klasa 12 a4 m4 Klasa 2 Klasa 3 1+ As1 1+ As2 Klasa 1 a1 a2 a3 a4 a5 m1 m2 m3 m4 Klasa 2 Klasa 3 1+ As1 1+ As2

19 Metoda: Hierarchia klas ==> podklasy a5 Klasa 1 a1 a2 m1 m2 Klasa 11 a3 m3 Klasa 12 a4 m4 Klasa 2 Klasa 3 1+ As1 1+ As2 Klasa 11 a1 a2 a3 m1 m2 m3 Klasa 12 a1 a2 a4 m1 m2 m4 Klasa 2 Klasa 3 1+ As1 1+ As As2 2

20 Metoda: Hierarchia klas ==> agregacje Klasa 1 a1 a2 m1 m2 Klasa 11 a3 m3 Klasa 12 a4 m4 Klasa 2 1+ As1 Klasa 1 a1 a2 m1 m2 Klasa 11 a3 m3 Klasa 12 a4 m4 Klasa 2 1+ As1

21 Podział poziomy klasy Klasa 2 a1 a2 m1 m2 Klasa 1 Klasa 3 As1 As2 Klasa 21 a1 a2...? m1 m2...? Klasa 1 Klasa 3 As11 As21 Klasa 22 a1...? a2 m1...? m2 As12 As22 Niekiedy przy takim podziale w niektórych klasach można zredukować atrybuty i/lub metody.

22 Podział pionowy klasy Klasa 2 a1 a2 a3 a4 m1 m2 m3 m4 Klasa 1 Klasa 3 As1 As2 Klasa 2 a1 a2 m1 m2 Klasa 1 Klasa 3 As11 ? As21 ? Klasa 2 a3 a4 m3 m4 As12 ? As22 ?

23 Klucze kandydujące Pojęcie znane z modelu relacyjnego Dla obiektów. ID, lub jakaś kombinacja atrybutów Dla asocjacji: Kombinacja nazw klas obiektów. Firma Osoba posiada akcje {Klucz kandydujący: (Osoba, Firma)} Firma Osoba pracuje w {Klucz kandydujący: (Osoba)} Miasto Kraj ma stolicę {Klucze kandydujące: (Kraj) (Miasto)}

24 Wybór klucza Może być wiele kluczy kandydujących ale tylko jeden klucz główny Kryteria wyboru klucza głównego: LICZBA OPERACJI, korzystających z danej klasy, odwołujących się bezpośrednio poprzez dany klucz TYP KLUCZA * klucze proste przed złożonymi * klucze wewnętrzne przed zewnętrznymi * klucze krótsze przed dłuższymi Może być wiele kluczy kandydujących ale tylko jeden klucz główny Kryteria wyboru klucza głównego: LICZBA OPERACJI, korzystających z danej klasy, odwołujących się bezpośrednio poprzez dany klucz TYP KLUCZA * klucze proste przed złożonymi * klucze wewnętrzne przed zewnętrznymi * klucze krótsze przed dłuższymi Pracownik Nazwisko Data_ur Nr_PESEL Nr_prac Nr_na_wydziale Wydział Id_wydziału Nazwisko + Data_ur Nr_PESEL Nr_prac Nr_na_wydziale


Pobierz ppt "OMT - Model obiektów, cz.2. OMT - model obiektów Agregacje - nieco dokładniej Klasy abstrakcyjne Delegacja Wielokrotne dziedziczenie Jak obejść brak wielodziedziczenia?"

Podobne prezentacje


Reklamy Google