Thread View: pl.comp.objects
1 messages
1 total messages
Started by Jan.P... Jan Ploski
Sun, 07 Jul 1996 00:00
(none)
Author: Jan.P... Jan Ploski
Date: Sun, 07 Jul 1996 00:00
Date: Sun, 07 Jul 1996 00:00
88 lines
2850 bytes
2850 bytes
Oto jeszcze kilka uwag dotyczacych dziedziczenia wirtualnego. Ponizej
przedstawiam kilka mniej lub bardziej abstrakcyjnych przykladow
zastosowania tego mechanizmu.
Najpierw definiujemy sobie klase Litera:
Litera
Pozniej mamy klasy Iksow, Igrekow i Zetow, ktore sa literami. Normalna
sprawa, wyprowadzamy je z klasy Litera:
Iks : Litera
Igrek : Litera
Zet : Litera
A teraz - uwaga - chcemy miec zielonego Iksa. Od razu przychodzi nam
do glowy proste rozwiazanie:
zielony Iks : Iks
I to jest wlasnie miejsce do zatrzymania sie i przemyslenia hierarchii
klas, czyli postawienia sobie pytania:
czego bedzie dokladnie dotyczyl atrybut "zielony"?
Jezeli tylko Iksow, to hierarchia jest w porzadku. Jezeli takze innych
Liter, to nalezy zastosowac dziedziczenie wirtualne, czyli:
Litera
Iks : virtual Litera
Igrek : virtual Litera
Zet : virtual Litera
zielony : virtual Litera
czerwony : virtual Litera
zloty : virtual Litera
zloty Iks : zloty, Iks
zielony Iks : zielony, Iks
zloty Igrek : zloty, Igrek
i tak dalej.
Jesli chodzi o sekretarki, rozwiazanie podane przez Kube jest rownie naturalne:
Employee
Secretary : virtual Employee
Permanent : virtual Employee
Temporary : virtual Employee
Permanent Secretary : Permanent, Secretary
Temporary Secretary : Temporary, Secretary
Poniewaz nie trudno przewidziec, ze atrybut "Permanent" nie bedzie dotyczyl
tylko sekretarek, tylko w ogole pracownikow, stosujemy w tej sytuacji
dziedziczenie wirtualne. Chetnie zapoznalbym sie z bardziej szczegolowym
opisem problemu, jaki miala znajoma Kuby Chabika z powyzsza hierarchia klas.
Powrocmy jeszcze do koni (ostatni raz):
Zwierze
Kon : virtual Zwierze
Wyscigowe : virtual Zwierze
Miesne : virtual Zwierze
Kon Wyscigowy : Wyscigowe, Zwierze
Kon Miesny : Miesne, Zwierze
Niezupelnie sie zgadzam z opinia Kuby, ze myslenie o tym, co bedzie
z dana klasa robione nizej w hierarchii, jest "nie do przyjecia".
Proponuje, aby kwestie dziedziczenia wirtualnego sprowadzac do dosc
mechanicznego postepowania:
1) Juz przy definiowaniu klasy-przedmiotu - myslec o ATRYBUTACH, ktore
moga byc do niej dodane.
2) Przy definiowaniu atrybutow - myslec o KLASACH-PRZEDMIOTACH, ktorych
owe atrybuty moga dotyczyc.
JPL
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads