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)