8331764261

8331764261



Uogólnienie


W perspektywie IP najczęstszą interpretacją uogólnienia jest dziedziczenie — Klient instytucjonalny jest klasą pochodną klasy Klient. W najważniejszych językach obiektowych klasa pochodna dziedziczy wszystkie własności klasy podstawowej i może przedefiniować dowolną metodę tej klasy.

Inną techniką realizacji uogólnienia jest np. wykorzystanie interfejsów, które pozwalają utworzyć relację uogólnienia/uszczególowienia pomiędzy typami (dziedziczenie interfejsu) lub klasą i interfejsem (implementacja interfejsu).


19


Uogólnienie jest przedmiotem różnych interpretacji na różnych poziomach modelowania. W modelu pojęciowym można powiedzieć, że Klient instytucjonalny jest typem pochodnym Klienta, jeżeli wszystkie instancje Klienta instytucjonalnego są z definicji, również instancjami Klienta. Klient instytucjonalny jest wówczas specyficznym typem Klienta. Jest ważne, że wszystko, co możemy powiedzieć o Kliencie — asocjacje, atrybuty, operacje — jest również prawdziwe w stosunku do Klienta instytucjonalnego.

Jeszcze inny sposób myślenia jest oparty na zasadzie podstawiania. Powinna być możliwa zamiana klienta na klienta instytucjonalnego w każdym fragmencie kodu, który wymaga klienta, i wszystko powinno dalej działać bez problemu. W istocie znaczy to tylko tyle, że jeśli koduje się dla klienta, to można potem dowolnie stosować jakikolwiek jego typ pochodny, klient instytucjonalny może reagować na niektóre polecenia inaczej niż inny klient (w wyniku zastosowania polimorfizmu), ale obiekt wywołujący nie powinien się kłopotać tą różnicą. Chociaż dziedziczenie jest mechanizmem o bardzo dużych możliwościach, to dodaje ono dużo dodatkowego obciążenia, które nie zawsze jest konieczne do uzyskania podstawiania. Dobrym przykładem jest sytuacja, która miała miejsce na początku istnienia Javy, kiedy to wielu użytkownikom nie podobała się implementacja wbudowanej klasy Vector i oczekiwali, że zostanie ona zastąpiona czymś nieco mniej skomplikowanym. Jedynym sposobem, na który mogli utworzyć klasę zastępczą dla wektora było utworzenie klasy pochodnej, a to oznaczało dziedziczenie wielu niechcianych danych i metod.

Do uzyskania klasy zastępczej można użyć innych mechanizmów, które nie pociągają za sobą dużego obciążenia (Więcej informacji w [5], patrz wykład 1, slajd 4). Wiele osób lubi stosować rozróżnienie między tworzeniem podtypu, czyli dziedziczeniem interfejsu, a tworzeniem podklasy, czyli dziedziczeniem implementacji. Klasa jest podtypem, jeśli może zastąpić swój typ nadrzędny, niezależnie od tego, czy stosuje dziedziczenie, czy nie. Tworzenie podklasy jest synonimem zwykłego dziedziczenia.

19



Wyszukiwarka

Podobne podstrony:
Interpolacja odcinkowa jest stosowana najczęściej, szczególnie w przypadku ptzebiegów impulsowych.
Uogólnienie t(n) i o(n) jest zapewnione przez crk(n) = ^2 d1-- suma k-tych potęg dzielnika liczby n
File0001 Należy pamiętać, że MUZYKOTERAPIA: jest dziedziną nauki, ponieważ swoje podstawy opiera na
1.2 Kryptoanaliza czyli po co komu tutaj liczby losowe Kryptoanaliza jest dziedziną wprost przeciwną
Zdj?cie0303 © Psychologia społeczna jest dziedziną antyczną. Lecz jest także współczesna — ultrawspó
Zdj?cie1089 [Zagrożenia wypływające z 1 na notechnologii Nanotechnologia jest dziedziną wiedzy stosu
skanuj0040 Ad b. W tym przypadku interpretacja wypowiedzi jest szcz
Slajd2 (72) vowe TEKTONIKA     * • jest dziedziną geologii zajmującą się ruchami tf
Image8549a Zwrócone są wszystkie dane z datagramu UDP Tylko nagłówek IP oraz 8 bajtów danych jest zw
Etyka jest dziedziną podlegającą stałemu rozwojowi. Dokumenty dotyczące etyki powinny być stale

więcej podobnych podstron