Wstęp, języki, obiektowość

Transkrypt

Wstęp, języki, obiektowość
WYKŁAD 2
Wst p, j zyki, obiektowo
Poj cie klasy (obiektów)
W dalszym ci gu wykładu b dziemy u ywali
słowa obiekt wył cznie w rozumieniu
definicji 2, czyli jako instancja klasy.
Nale y teraz wyja ni poj cie klasy.
Poj cie klasy (obiektów)
W trakcie działania programu mo emy wymaga operowania
na wielu podobnych obiektach, tzn. przechowuj cych dane
tego samego typu i umo liwiaj cych wykonywanie na nich
tej samej funkcjonalno ci (przykład działania na listach
studentów). Jednocze nie mo emy wymaga działania
równie na innych podobnych do siebie obiektach
(przykład działania na listach pracowników). Nasuwa sie
wi c potrzeba wprowadzenia definicji dla ka dego rodzaju
obiektów. Definicja taka to wła nie klasa. Mo na wi c
powiedzie , e klasa definiuje dane i zachowania grupy
podobnych do siebie obiektów.
Poj cie obiektu jako instancji klasy
Po wprowadzeniu poj cia klasy jako wspólnej definicji wielu
obiektów o podobnych danych i zachowaniach
charakteryzuj cych te obiekty mo emy mówi o ka dym z
tych obiektów jako o instancji klasy.
Nasuwa si tu podobie stwo do teorii mnogo ci:
klasa = zbiór
obiekt = element zbioru
Nale y jednak zauwa y , e dana klasa mo e definiowa
kilka identycznych pod wzgl dem danych i zachowania
obiektów. Dlatego analogia ta nie jest pełna.
Relacje pomi dzy klasami a relacje
pomi dzy obiektami
Ze wzgl du na do du ilo j zyków
programowania wspieraj cych paradygmat
obiektowo ci warto wypracowa j zyk a
tym samym sposób my lenia uniwersalny
dla wszystkich j zyków z tej kategorii.
Du ym wsparciem dla takiego podej cia
jest j zyk modelowania UML, o którym
powiemy pó niej.
Relacje pomi dzy klasami a relacje
pomi dzy obiektami
Relacje pomi dzy klasami:
1. Relacja zale no ci (dependency relationship)
2. Relacje asocjacyjne
a) asocjacja
b) agregacja
c) zawieranie
3. Relacja generalizacji (w j zykach programowania
zwana dziedziczeniem)
Rys. Diagramy UML
• notacja
• wyja nienie ró nic
• mapowanie na kod
Relacje pomi dzy klasami a relacje
pomi dzy obiektami
Relacje pomi dzy obiektami.
Relacje te s znacznie prostsze ni relacje
pomi dzy klasami tych obiektów. Jest
bowiem tylko jedna relacja zwana linkiem.
Link jest to instancja asocjacji.
Rys. Diagramy UML
• notacja
Zarz dzanie czasem ycia obiektu
Znane s dwa podej cia do zarz dzania
czasem ycia obiektów.
1. Z garbage collectorem
2. Bez garbage collectora
Zarz dzanie czasem ycia obiektu
Pierwsze z tych podej jest dost pne jedynie w przypadku uruchamiania
programów na maszynach wirtualnych, które przechwytuj kontrol
nad niszczeniem obiektów. Analizuj one czy poszczególne obiekty s
nadal potrzebne i w zale no ci od ilo ci wolnej i potrzebne pami ci
dokonuj one niszczenia obiektów. Mo na równie wymusi
niszczenie obiektu w kodzie programu, jednak oznacza to odej cie od
tej koncepcji. Wad tego podej cia jest niemo no stosowania
programów tego typu w twardych systemach czasu rzeczywistego ze
wzgl du na nieprzewidywalno zachowa systemu. Zelet jest
znaczne zwi kszenie odporno ci na bł dy zarz dzania pami ci .
Drugie podej cie wymaga jawnego niszczenia obiektów.
Szablony - parametryzacja typem
Nie jest to podej cie czysto obiektowe, ale
przydatne w praktyce.
Nazwy s ró ne:
• typy rodzajowe [Ada,Eiffel]
• szablony [C++]
Kontenery jako mechanizm grupowania i
zarz dzania obiektami
Zarz dzanie obsług bł dów
Na u ytek programowania obiektowego
opracowano koncepcj obsługi bł dów przy
u yciu wyj tków.
Wyj tki
Wyj tki s to obiekty tworzone w trakcie
działania programu, które po zgłoszeniu w
momencie zaistnienia sytuacji nietypowej
s wstecznie propagowane poprzez stos
wywoła metod. W praktyce stos obsługi
wyj tków mo e by oddzielony od stosu
wywoła metod.
Wyj tki
Zalety wyj tków:
• nieci gło propagacji
• łatwo wprowadzania zmian je li dobry
styl
• obsługiwanie samych siebie
• rozpoznawanie elementów hierarchii (metaklasyfikacja bł dów)
Sposób u ycia (C++, Java podobnie):
try{
throw Exception();
}
catch(Exception ex){
}
catch(…)
• blok try słu y do okre lenia obszaru w kodzie, w
którym chcemy wyłapa ewentualny wyj tek
• instrukcja throw zgłasza wyj tek tworz c jego
obiekt o takim typie, jaki chcemy eby
odpowiadał zaistniałej sytuacji, natychmiastowe
opuszczenie bloku try
• blok catch wprowadzamy dla klasy (nadklasy)
tego wyj tku, który chcemy tu obsłu y ; je li nie
wyłapiemy go tutaj, to mo emy to zrobi gdzie
dalej (ni ej na stosie wywoła metod)