objektovo-orientovan é programovanie
Post on 06-Jan-2016
52 Views
Preview:
DESCRIPTION
TRANSCRIPT
Objektovo-orientovanObjektovo-orientované é programovanieprogramovanie
Osnova prednáškyOsnova prednášky
Základné princípy objektovo orientovaného Základné princípy objektovo orientovaného programovaniaprogramovania
OOP a štruktúra objektovo orientovaného OOP a štruktúra objektovo orientovaného programuprogramu
ZapúzdrenieZapúzdrenie
PolymorfizmusPolymorfizmus
DedičnosťDedičnosť Najpoužívanejšie objektovo orientované Najpoužívanejšie objektovo orientované
programovacie jazykyprogramovacie jazyky
Objektovo orientované Objektovo orientované programovanieprogramovanie
Je to efektívny spôsob organizácie programu Základný princíp: program pozostáva z množiny : program pozostáva z množiny
objektov, ktoré sú schopné uchovávať a spracovávať objektov, ktoré sú schopné uchovávať a spracovávať dáta a komunikovať s ostatnými objektamidáta a komunikovať s ostatnými objektami
História: OOP vzniklo v období, keď bežné programy : OOP vzniklo v období, keď bežné programy začali presahovať určitú dĺžku a štrukturálne začali presahovať určitú dĺžku a štrukturálne programy sa stali neprehľadnými. Bežne sa začalo programy sa stali neprehľadnými. Bežne sa začalo využívať začiatkom 90. rokovvyužívať začiatkom 90. rokov
Hlavná výhoda: dobre navrhnutá objektová štruktúra : dobre navrhnutá objektová štruktúra programu umožňuje oveľa lepšiu orientáciu v kódeprogramu umožňuje oveľa lepšiu orientáciu v kóde
Princíp OOPPrincíp OOP
Filozofia OOP je postavená na usporiadaní Filozofia OOP je postavená na usporiadaní reálneho svetareálneho sveta
Základné pojmy OOP: Základné pojmy OOP: trieda a a objekt Tri základné princípy:Tri základné princípy:
Zapúzdrenie (encapsulation) (encapsulation)Mnohotvárnosť (polymorphism) (polymorphism)Dedičnosť (inheritance) (inheritance)
TriedaTrieda
Je to štrukturovaný dátový typ charakterizovaný vlastnosťami (dáta, atribúty) (dáta, atribúty) a schopnosťami (metódy)(metódy)
Príklad: trieda ČlovekPríklad: trieda Človek
Vlastnosti: meno, vek, výška, váha, farba vlasov...Vlastnosti: meno, vek, výška, váha, farba vlasov... Schopnosti: predstaviť sa, povedať svoj vek, miery Schopnosti: predstaviť sa, povedať svoj vek, miery
atď., opýtať sa iného človeka na jeho meno, vek...atď., opýtať sa iného človeka na jeho meno, vek...
ObjektObjekt
Konkrétny prvok triedy, s jednoznačne danými vlastnosťami
Janko KováčJanko Kováč Majka NovákováMajka Nováková
45 rokov45 rokov 35 rokov35 rokov
svetlohnedé vlasy, 180 cmsvetlohnedé vlasy, 180 cm hnedé vlasy, 165 cmhnedé vlasy, 165 cm
Objektovo orientovaný Objektovo orientovaný program program
1. Definícia triedy
Trieda Trieda ČlovekČlovek{{
znakový reťazec meno celé číslo vek znakový reťazec farba_vlasov celé číslo výška Zapíš_si_svoje_údaje Predstav_sa Povedz_svoj_vek Povedz_svoju_výšku
}}
Dáta - vlastnosti
Metódy - schopnosti
Objektovo orientovaný Objektovo orientovaný programprogram
2. Definícia metód
Človek::Človek::Zapíš_si_svoje_údaje
{{meno = ... = ...vek = ... = ...farba_vlasov = ... = ...výška = ... = ...
}}
Objektovo orientovaný Objektovo orientovaný programprogram
Človek::Človek::Predstav_sa{{
Povedz Povedz ““Ahoj, ja somAhoj, ja som”” meno}}
Človek::Človek::Povedz_svoj_vek{{
Povedz “MPovedz “Mámám” ” vek “rokov” “rokov”}}
Človek:Človek:Povedz_svoju_výšku{{
Povedz “MPovedz “Mámám” ” výška “centimetrov”“centimetrov”}}
Objektovo orientovanObjektovo orientovaný ý programprogram
3. Vytvorenie a použitie objektov
Človek Človek Janko, , Majka
Janko..Zapíš_si_svoje_údajeMajka..Zapíš_si_svoje_údajeJanko..Predstav_saJanko..Povedz_svoj_vekJanko..Povedz_svoju_výškuMajka..Predstav_saMajka..Povedz_svoj_vekMajka..Povedz_svoju_výšku
Objektovo orientovaný Objektovo orientovaný program program
4. Výstup
Ahoj, ja som Janko KováčAhoj, ja som Janko Kováč Ahoj, ja som Majka Ahoj, ja som Majka NovákováNováková
Mám 45 rokovMám 45 rokov Mám 35 rokovMám 35 rokov
Mám 180 centimetrovMám 180 centimetrov Mám 165 centimetrovMám 165 centimetrov
ZapúzdrenieZapúzdrenie
Mechanizmus, ktorý zväzuje dohromady dáta a kódMechanizmus, ktorý zväzuje dohromady dáta a kód V úplne objektovo orientovanom programe
patria všetky dáta a funkcie nejakej triede (okrem hlavného programu)(okrem hlavného programu)
Zapúzdrenie umožňuje lepšiu prehľadnosť Zapúzdrenie umožňuje lepšiu prehľadnosť programu a najmä môže chrániť dáta pred programu a najmä môže chrániť dáta pred nežiadúcimi zásahmi zvonkunežiadúcimi zásahmi zvonku
Vo vnútri triedy môžu byť všetky dáta alebo metódy Vo vnútri triedy môžu byť všetky dáta alebo metódy definované akodefinované akosúkromné - prístupné len pre triedu samotnú - prístupné len pre triedu samotnúverejné – prístupné aj pre ostatné triedy – prístupné aj pre ostatné triedy
ZapúzdrenieZapúzdrenie
Trieda Trieda ČlovekČlovek
{{verejné:znakový reťazec meno Predstav_sa
}}
Človek Človek Majka
Majka.Predstav_sa.Predstav_saPovedz “Ahoj, ja som” Majka..menomeno
ZapúzdrenieZapúzdrenieTrieda Trieda ČlovekČlovek
{{súkromné:znakový reťazec meno verejné:Predstav_sa
}}
Človek Človek Majka
Majka.Predstav_sa.Predstav_saPovedz “Ahoj, ja som” Majka..menomeno
Technika Data hidingTechnika Data hiding
Je to najbezpečnejší a najbežnejší spôsob návrhu Je to najbezpečnejší a najbežnejší spôsob návrhu triedtried
Základný princíp:Základný princíp:všetky dáta sú súkromnétrieda má vytvorený interface, teda metódy, , teda metódy, ktoré umožňujú zmenu a sprostredkovanie dát, ak ktoré umožňujú zmenu a sprostredkovanie dát, ak je to potrebnéje to potrebné
Takto sa zabezpečí, že pri použití triedy sú Takto sa zabezpečí, že pri použití triedy sú prístupné a meniteľné len tie dáta, ktorým to dovolí prístupné a meniteľné len tie dáta, ktorým to dovolí interface, čo je dôležité napr. pri programovaní interface, čo je dôležité napr. pri programovaní knižníc, ktoré budú používať iní programátori a pod.knižníc, ktoré budú používať iní programátori a pod.
Technika Data hidingTechnika Data hiding Korektne navrhnutá trieda ČlovekKorektne navrhnutá trieda Človek
Trieda Trieda ČlovekČlovek{{
súkromné:znakový reťazec meno celé číslo vekznakový reťazec farba_vlasovcelé číslo výškaverejné:Zapíš_si_svoje_údajePredstav_saPovedz_svoj_vekPovedz_svoju_výšku
}}
Konštruktor a deštruktorKonštruktor a deštruktor
Sú to funkcie, ktoré sa automaticky spustia pri Sú to funkcie, ktoré sa automaticky spustia pri vytvorení (konštruktor) a pri zániku (deštruktor) vytvorení (konštruktor) a pri zániku (deštruktor) objektu danej triedyobjektu danej triedy
Konštruktor sa používa najmä na počiatočné sa používa najmä na počiatočné nastavenie hodnoty dát daného objektu a na nastavenie hodnoty dát daného objektu a na alokáciu potrebnej pamätealokáciu potrebnej pamäte
Deštruktor sa používa na sa používa na “up“upratanieratanie”, teda ”, teda hlavne hlavne na dealokna dealokáciu vyhradenej pamäteáciu vyhradenej pamäte
Konštruktor a deštruktorKonštruktor a deštruktor Modifikovaná trieda ČlovekModifikovaná trieda Človek
Trieda Trieda ČlovekČlovek{{
súkromné:znakový reťazec meno pole celých čísel miery (smerník na celé číslo)
verejné:Konštruktor DeštruktorPredstav_saPovedz_svoj_vekPovedz_svoju_výšku
}}
Konštruktor a deštruktorKonštruktor a deštruktor
Človek::Človek::Konštruktor{{
Alokuj pamäťové miesto na Alokuj pamäťové miesto na mierymiery[1]= … (vek)[1]= … (vek)miery[2]= … (v[2]= … (výška)ýška)miery[3]= … ([3]= … (váhaváha))......
}}
Človek::Človek::Deštruktor{{
Dealokuj miesto vyhradené pre Dealokuj miesto vyhradené pre miery}}
PolymorfizmusPolymorfizmus
Ide o mnohotvárnosť, resp. viacúčelové využitie metód
Metóda s jedným názvom môže byť použitá pre Metóda s jedným názvom môže byť použitá pre rôzne typy dát alebo rôzny počet vstupov, čo rôzne typy dát alebo rôzny počet vstupov, čo uľahčuje orientáciu v programeuľahčuje orientáciu v programe
PolymorfizmusPolymorfizmus
Definujeme triedu Kalkulačka, ktorá bude počítať absolútne Definujeme triedu Kalkulačka, ktorá bude počítať absolútne hodnotyhodnoty
1. Trieda 1. Trieda KalkulačkaKalkulačka 2. Trieda 2. Trieda KalkulačkaKalkulačka
{{ {{
verejné: verejné:
celcelé číslo é číslo iabs(celé číslo)(celé číslo) celé číslo celé číslo abs(celé číslo)(celé číslo)
reálne číslo reálne číslo fabs(reálne číslo)(reálne číslo) reálne číslo reálne číslo abs(reálne číslo)(reálne číslo)
súkromné: súkromné:
celé číslo celé číslo výsledok_i celé číslo výsledok_i
celé číslo celé číslo výsledok_f reálne číslo výsledok_f
}} }}
DedičnosťDedičnosť
KaKaždá trieda môže mať svoje ždá trieda môže mať svoje ““dieťadieťa””, teda triedu, , teda triedu, ktorá je od nej odvodená, preberá všetky jej dáta ktorá je od nej odvodená, preberá všetky jej dáta a metódy (okrem konštruktora a deštruktora)a metódy (okrem konštruktora a deštruktora)
Odvodená trieda môže byť potomkom Odvodená trieda môže byť potomkom ľubovoľného počtu tried a každá trieda môže mať ľubovoľného počtu tried a každá trieda môže mať ľubovoľný počet potomkovľubovoľný počet potomkov
Pre rodičovskú triedu je možné sprístupniť svojim Pre rodičovskú triedu je možné sprístupniť svojim potomkom svoje súkromné dáta, takéto dáta sa potomkom svoje súkromné dáta, takéto dáta sa nazývajú nazývajú chránené a okrem samotnej triedy a jej a okrem samotnej triedy a jej podtried nie sú inak zvonku prístupnépodtried nie sú inak zvonku prístupné
DedičnosťDedičnosť
Trieda Trieda TovarTovar::
vvýrobcaýrobca
cenacena
Trieda Trieda PotravinaPotravina::
vvýrobcaýrobca
cenacena
dátum spotrebydátum spotreby
Trieda Trieda ObuvObuv::
vvýrobcaýrobca
cenacena
veľkosťveľkosť
Trieda Trieda ZeleninaZelenina::
vvýrobcaýrobca
cenacena
dátum spotrebydátum spotreby
trieda akostitrieda akosti
DedičnosťDedičnosť
Trieda Trieda Rodič:Rodič:verejné:Predstav_saPovedz_adresuchránené:menoadresasúkromné:PIN
Trieda Trieda Dieťa:Dieťa:Predstav_saPovedz_adresuPovedz_zákonného_zástupcumenoadresazákonný_zástupcaPIN – neprístupné!
DedičnosťDedičnosť
Trieda Trieda TovarTovar::
cenacena
dodávateľdodávateľ
Trieda Trieda RastlinaRastlina::
názov_rastlinynázov_rastliny
Trieda Trieda DarDar::
od_kohood_koho
pre_kohopre_koho
Trieda Trieda KyticaKytica::
cenacena
dodávateľdodávateľ
názov_rastlinynázov_rastliny
od_kohood_koho
pre_kohopre_koho
adresa_doručeniaadresa_doručenia
Virtuálne metódyVirtuálne metódy
Ak je metóda rodičovskej triedy virtuálna, Ak je metóda rodičovskej triedy virtuálna, znamená to, že potomok, ktorý ju zdedí, si ju znamená to, že potomok, ktorý ju zdedí, si ju môže zmeniť podľa svojich potriebmôže zmeniť podľa svojich potrieb
Metóda Metóda Predstav_sa::
Volám sa Peter SlovákVolám sa Peter Slovák
Bývam v BratislaveBývam v Bratislave
Metóda Metóda Predstav_sa::
Volám sa Miro SlovákVolám sa Miro Slovák
Bývam v BratislaveBývam v Bratislave
Môj otec je Peter SlovákMôj otec je Peter Slovák
Metóda Metóda Predstav_sa::
Ahoj, som Miro SlovákAhoj, som Miro Slovák
Môj otec je Peter SlovákMôj otec je Peter Slovák
Spriatelené triedySpriatelené triedy Každá trieda môže iným triedam umožniť prístup Každá trieda môže iným triedam umožniť prístup
k svojim súkromným dátam, ak ich označí ako k svojim súkromným dátam, ak ich označí ako spriatelenéspriatelené
Trieda Trieda Rodič:Rodič:
spriatelená trieda spriatelená trieda DieťaDieťaverejné:Predstav_sachránené:menosúkromné:PIN
Trieda Trieda Dieťa:Dieťa:Predstav_saPovedz_zákonného_zástupcumenozákonný_zástupcaPIN
ZhrnutieZhrnutie
Objektovo orientované programovanie je spôsob efektívnej organizácie programu, pri ktorom je program súborom navzájom spolupracujúcich objektov
V úplne objektovo orientovanom programe sú všetky dáta a funkcie (okrem hlavného programu a globálnych premenných) súčasťou nejakej triedy
Základné princípy objektovo orientovaného programovania sú:ZapúzdreniePolymorfizmusDedičnosť
Objektovo orientované Objektovo orientované jazykyjazyky
Simula(1967) – prvý OO jazyk, používaný na simulácie pri konštrukcii (1967) – prvý OO jazyk, používaný na simulácie pri konštrukcii integrovaných obvodov, na počítačovú grafiku, vzdelávanie a pod.integrovaných obvodov, na počítačovú grafiku, vzdelávanie a pod.
C++(1983) – jeden z najrozšírenejších komerčne používaných jazykov, (1983) – jeden z najrozšírenejších komerčne používaných jazykov, s množstvom aplikácií, umožňuje OO aj procedurálne programovanies množstvom aplikácií, umožňuje OO aj procedurálne programovanie
Common Lisp – jazyk umožňujúci veľmi všeobecné operácie, s veľkým – jazyk umožňujúci veľmi všeobecné operácie, s veľkým množstvom dátových typov, využíva sa na programovanie množstvom dátových typov, využíva sa na programovanie internetových aplikácií, dizajnérskych softvérov, hier atď.internetových aplikácií, dizajnérskych softvérov, hier atď.
Java(1995) – jazyk vyvinutý tak, aby umožňoval spúšťanie programov (1995) – jazyk vyvinutý tak, aby umožňoval spúšťanie programov na rôznych platformách a zo vzdialených zdrojov, so zabudovanou na rôznych platformách a zo vzdialených zdrojov, so zabudovanou podporou sietepodporou siete
JavaScript(1995) – skriptovací jazyk (inštrukcie sa vykonávajú priamo z (1995) – skriptovací jazyk (inštrukcie sa vykonávajú priamo z kódu, bez kompilácie) vyvinutý na tvorbu internetových aplikáciíkódu, bez kompilácie) vyvinutý na tvorbu internetových aplikácií
Perl(1987) – dynamický jazyk pôvodne vyvinutý pre spracovanie (1987) – dynamický jazyk pôvodne vyvinutý pre spracovanie textov, dnes má využitie pri programovaní internetových aplikácií, pri textov, dnes má využitie pri programovaní internetových aplikácií, pri správe systémov a pod., je efektívny pri manipulácii s reťazcami a správe systémov a pod., je efektívny pri manipulácii s reťazcami a správe pamätespráve pamäte
Objektovo orientované Objektovo orientované jazykyjazyky
PHP(1994) – reflektívny programovací jazyk (program môže meniť (1994) – reflektívny programovací jazyk (program môže meniť svoju štruktúru počas behu), používaný najmä pri vývoji web svoju štruktúru počas behu), používaný najmä pri vývoji web stránokstránok
Python(1980) – jazyk podporujúci rôzne programátorské techniky, (1980) – jazyk podporujúci rôzne programátorské techniky, s dôrazom na ľahko čitateľný kód, mnohé softvéry ho používajú s dôrazom na ľahko čitateľný kód, mnohé softvéry ho používajú ako svoj skriptovací jazykako svoj skriptovací jazyk
Smalltalk(1970) – OO reflektívny jazyk, vyvinutý pôvodne na (1970) – OO reflektívny jazyk, vyvinutý pôvodne na vzdelávacie účely, ale neskôr našiel aj bohaté komerčné vzdelávacie účely, ale neskôr našiel aj bohaté komerčné uplatnenieuplatnenie
Visual Basic – jazyk riadený udalosťami (beh programu závisí od – jazyk riadený udalosťami (beh programu závisí od interakcie s užívateľom), má veľmi veľké využitie v oblasti interakcie s užívateľom), má veľmi veľké využitie v oblasti business aplikáciíbusiness aplikácií
TCL – skriptovací jazyk s jednoduchou syntaxou, vyvinutý so – skriptovací jazyk s jednoduchou syntaxou, vyvinutý so zámerom stať sa súčasťou rôznych aplikáciízámerom stať sa súčasťou rôznych aplikácií
top related