Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY Dedičnosť v jazyku C# Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond
OOP rekapitulácia Trieda je základná jednotka objektového programovania popisuje všeobecný (abstraktný) koncept jeho vlastnosti dáta jeho schopnosti metódy predpisuje typ Objekt je konrétnou instanciou triedy je analógia premennej
Trieda a objekt príklad Auto mojafabia; Typ (trieda) Premenná (objekt) mojafabia objekt je typu [120, 45] 80 (koní) skutočné dáta uložené v pamäti
OOP načo? OOP sa snaží priblížiť k reálnemu svetu umožňuje programátorovi navrhovať riešenia prirodzene tým, že reprezentuje prvky programu podobne, ako programátor uvažuje nad problémom na dosiahnutie tohto cieľa používa viacero konceptov, okrem tried a objektov dedičnost (o nej bude zvyšok prezentácie) polymorfizmus a iné
Dedičnosť umožnuje nám vytvárať triedy použitím už existujúcich tried dovoluje nám rozširovať existujúce triedy o nové dáta alebo metódy oddeľuje všeobecnejšie triedy od konkrétnejších
Príklad
Kód class Clovek public string Meno; public string Priezvisko; public bool Pohlavie; public DateTime DatumNarodenia; public int VyratajVek() // vypocet veku class Ucitel : Clovek public bool JeTriedny; public string Trieda; protected Predmet[] couci; class Student : Clovek public string Trieda; public int VyratajPlat() return couci.length * 150;
Nové kľúčové slovo - protected je alternatívou k public a private označuje, že prístup k danej dátovej položke bude mať len on sám a jeho potomkovia prísnejší než public ale jemnejší ako private
Kód Ucitel u = new Ucitel(); u.meno = "Jaroslav"; u.jetriedny = true; u.trieda = "3.C"; Console.WriteLine( "Vek: " + u.vyratajvek() ); Console.WriteLine( "Plat: " + u.vyratajplat() );
Dedičnosť načo? študenti a učitelia zdieľaju isté vlastnosti a schopnosti obaja sú totiž ľudia načo by ich programátor písal dvakrát? triedy učiteľ aj študent sú špecializácia triedy človek takisto je tu vidieť snahu OOP priblížiť sa k realite človek je abstraktným zovšeobecnením učiteľa aj študenta
ZnovuPoužiteľnost kľúčová myšlienka OOP kód sa zvykol často opakovať programátori písali podobné kusy kódu ktoré sa dali zovšeobecniť dedičnosť umožňuje spoločné správanie (napr. výpočet veku) odseparovať do jednej triedy používať tieto metódy už budú vďaka dedičnosti všetky triedy, ktoré od nej dedia
ZnovuPoužiteľnost (2) separovanie kódu ma však aj iné výhody akákoľvek zmena, ktorá sa týka viacerých tried sa dá urobiť v ich nadtriede (predkovi) to vedie k jednoduchšej úprave existujúceho kódu zaručuje vysokú flexibilitu znižuje riziko chýb a zľahčuje ich opravu
Príklad škola chce urobiť pre študentov aj učiteľov identifikačné karty každý žiak aj učiteľ dostane pridelené identifikačné čislo, ktoré bude mať na karte riešenie ID stačí pridať do triedy človek! takisto aj akékoľvek metódy ktoré by s týmto požiadavkom boli spojené (napr. zašifrovanie ID)
class Clovek // (zvysne vlastnosti a metody) public int ID; public long ZasifrujID( long verejnykluc ) // algoritmus zasifrovania
Overriding občas bude nová trieda potrebovať zmeniť správanie ktoré zdedila od svojho predka slúži na to tzv. overriding (nahradenie) príklad: externý učiteľ dostáva za hodinu viac než interný
class ExternyUcitel : Ucitel public ExternyUcitel() JeTriedny = false; public new int VyratajPlat() return couci.length * 200; nové kľúčové slovo new slúži na označenie metódy, ktorá prepisuje zdedenú
class Riaditel : Ucitel public new int VyratajPlat() return base.vyratajplat() + 2000; nové kľúčové slovo base odvoláva sa na metódu predka v tomto prípade starú metódu výpočtu platu
Záverečná hierarchia
Rady a upozornenia dedičnosť je silný a užitočný nástroj treba si dať ale pozor na jej použitie aplikovať len tam, kde sa to skutočne hodí (aj logicky) nepoužívať ju všade, kde by sa duplikoval kód (tj. nezneužívať dedičnosť) pozor na príliš zložité vzťahy a zbytočne hlboké stromy dedičnosti nezneužívať overriding pomocou new
Polymorfizmus jeden z najsilnejších nástrojov a základných stavebných kameňov OOP úzko súvisi s dedičnosťou a rozhraniami povieme si o ňom neskôr
Použité zdroje a literatúra Bates, B., & Sierra, K. (2003). Head First Java. O'Reilly Media. Davis, S. R., & Sphar, C. (2005). C# 2005 For Dummies. For Dummies. Object-oriented programming. (2010, February 3). Retrieved from Wikipedia, the free encyclopedia: http://en.wikipedia.org/wiki/object-oriented_programming Obrázky z aplikácie Microsoft Visual Studio
Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY Tato prezentace byla vytvořena v rámci projektu OBZORY Autor: Šimon Soták Předmět: Seminář z programování C# Datum: 3. 2. 2010 Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond