8b2493992c877032e5c2731109ecdb46.ppt
- Количество слайдов: 26
Dobré ráno s jazykom Java 2 ÚINF/PAZ 1 c Róbert Novotný 5. 10. 2006 Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
OOP • Kedysi: procedurálne programovanie – procedúry, funkcie, moduly (unity) – Pascal, C, PHP. . . • Dnes: objektovo orientované programovanie – triedy, inštancie, metódy, interfejsy, dedičnosť • , , a mnoho iných odborných termitov" – Java, C#, Delphi, Python. . . Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
Historicko-filozofický pohľad na objekty, diel Spomni Pascal • pamätáme si record-y (záznamy) z Pascalu • štruktúrovaný type Bod = record x: real; y: real; end; var b 1, b 2: Bod; I will not buy this record, it is scratched • Bod je užívateľom definovaný typ • premenné b 1 a b 2 sú typu Bod. Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
Záznamy, triedy, objekty • triedy sú objekty na steroidoch. , , Kedysi som bol záznamom. Teraz som šampiónom svetovej triedy. " type Bod = record x: real; y: real; end; Dobré ráno s jazykom Java / PAZ 1 c public class Bod { float x; float y; } 5. 10. 2006
Záznamy, triedy, objekty bod. pas var b 1: Bod; b 2: Bod; . . b 1. x : = 25; b 1. y : = 30; Bod. Tester. java public class Bod. Tester { public static void main(String[] args) { Bod b 1 = new Bod(); Bod b 2 = new Bod(); b 1. x = 25. 0 f; b 2. y = 30. 0 f; } } • Viac zo záznamov už nevyžmýkate. • Pre triedy je však toto najjednoduchší prípad použitia. Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
Filozofický pohľad na objekty • prirodzený pohľad • objekty sú všade naokolo rád stínam binárne stromy (a iné objekty) – študent(i), prednášajúci, tabuľa, – počítač, vypínač, strom, – chlap, hrdina, dub, stroj. . . Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
Filozofický pohľad na objekty • zamyslime sa nad objektom: – o čom má objekt vedomosti (stav) – aké činnosti dokáže vykonávať • príklad: vypínač – stav: je zapnutý/vypnutý – činnosti: dokáže sa (= dokážeme ho) zapnúť a vypnúť Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
Filozofický pohľad na objekty • príklad: empétrojka – stav: • • em pé három má názov má interpreta má dĺžku veľkosť dátového toku (128 kbps, 190 kbps. . . ) – schopnosť: • dokáže sa prehrať • dokáže sa preniesť do MP 3 walkmana™ Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
Triedy, objekty a inštancie • trieda: predstavuje koncept, resp. pojem Komissar • príklad: pes Rum? Java? • čo majú spoločné všetky psy • aký je koncept , , psovitosti". Dohodnime sa: – 4 nohy, chvost, chlpy – breše Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
Triedy, objekty a inštancie • trieda: všeobecný abstraktný pojem – Pes: 4 nohy, chvost, chlpy, breše • objekt: konkrétny hmatateľný objekt spĺňajúci podmienky danej triedy: – Rex, Ariel Hviezdička, Lajka • trieda je predlohou pre inštancie pojmy objekt a inštancia sa zamieňajú Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
Triedy vs objekty • trieda vs. objekt • definícia vs. príklad – def: bodom nazývame usporiadanú dvojicu (x, y). . . – príklad: A = (2, 3) • abstraktný pojem vs. konkrétna vec • slovo v slovníku vs obrázok • tlačivo vs. dáta v ňom Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
Triedy • jemne upravíme našu definíciu psa – psa: • 4 nohy – nie až taká dôležitá vlastnosť – černobyľský pes? • chvost, chlpy. . . – rovnako neveľmi dôležité – možno farba • • • rasa – porovnaj dve inštancie vek. . . iné podľa dohody breše – dôležitá: dva psy môžu brechať inak. . . iné podľa dohody Dobré ráno s jazykom Java / PAZ 1 c stav schopnosti 5. 10. 2006
Triedy type Pes = class rasa: string, vek: int; end; public class Pes { String rasa; float vek; } • stavové premenné • každý pes má rasu • každý pes má vek • Spomni Pascal • definujeme vlastný dátový typ Pes • stav (o čom má objekt vedomosti) je reprezentovaný v stavových premenných (alias inštančné premenné, alias fields) • o tom, ako sa zapíše to, čo objekt dokáže, viac neskôr Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
Pôrod psa (vytváranie inštancie) Pes. java public class Pes { String rasa; int vek; } Pes. Tester. java nový súbor! už máme dva. . . public class Pes. Tester { public static void main(String[] args) { Pes dunčo; dunčo = new Pes(); } } Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
Pôrod psa (vytváranie inštancie) • Pes dunčo; – trieda je užívateľom definovaný dátový typ • dunčo = new Pes(); vlastný dátový typ – inicializácia premennej – new Pes() = vytvor novú inštanciu (objekt) typu Pes – priraď ju do premennej dunčo typu Pes. Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
Pôrod psa (vytváranie inštancie) Spomni minulé ráno: deklaráciu (Pes dunčo; ) a inicializáciu (dunčo = new Pes(); ) vieme zapísať jedným riadkom. Pes. Tester. java public class Pes. Tester { public static void main(String[] args) { Pes dunčo = new Pes(); } } Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
Štelujeme psa Pes. Tester. java public class Pes. Tester { public static void main(String[] args) { Pes dunčo = new Pes(); dunčo. rasa = "slovenský čuvač"; dunčo. vek = 8; System. out. println(dunčo. rasa); System. out. println(dunčo. vek); } } Dobré ráno s jazykom Java / PAZ 1 c slovenský čuvač 8 5. 10. 2006
Svorka psov pozorný čitateľ si domyslí class a main(. . . ) Pes dunčo = new Pes(); dunčo. rasa = "slovenský čuvač"; dunčo. vek = 8; Pes rambo = new Pes(); rambo. rasa = "ťažko povedať"; rambo. vek = 3; System. out. println(dunčo. rasa); System. out. println(dunčo. vek); System. out. println(rambo. rasa); System. out. println(rambo. vek); Dobré ráno s jazykom Java / PAZ 1 c slovenský čuvač 8 ťažko povedať 3 5. 10. 2006
Psy štekajúce, psy brechajúce • objekt má stav a schopnosti – výška a váha tvoria stav • schopnosti sú záležitosti, ktoré sa dajú v ľudskej reči vyjadriť slovesom – štekaj! stoj! (udaj! kusaj!) • štekanie zapíšeme ako procedúru / funkciu zviazanú s danou triedou – spomni Pascal: veľmi voľná analógia s unitom • takáto procedúra / funkcia sa nazýva metóda. Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
Štekajúci pes. pas type Pes = class rasa: string; vek: integer; Pes. java public class Pes { String rasa; int vek; procedure stekaj; end; procedure Pes. stekaj; begin writeln('Haf!'); end; void stekaj() { System. out. println("Haf!"); } } • V Pascale veľa klepkania: metóda rozdelená na hlavičku (v definícii triedy) a , , telíčko" (pod triedou) • V Jave všetko pekne pohromade Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
Analyzujeme štekanie void stekaj() { System. out. println("Haf!"); } návratový typ názov metódy dlhokánsky zoznam parametrov • v Jave neexistuje delenie na procedúry a funkcie. Všetko je , , funkcia". , , Procedúry" vracajú typ void. , , And the earth was without form and void. " • dve zátvorky () znamenajú metódu bez parametrov. • Nemožno ich vynechať! Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
Štekáme psom Pes. java public class Pes { String rasa; int vek; void stekaj() { System. out. println("Haf!"); } } Pes. Tester. java // domyslíme si public class a main(. . . ) Pes dunčo = new Pes(); dunčo. štekaj(); Dobré ráno s jazykom Java / PAZ 1 c Haf! 5. 10. 2006
Využívame (psychické) stavy psa • metódach môžeme veselo využívať stavové premenné. • môžeme sa na ne dívať ako na , , globálne" premenné známe z unitov v Pascale Pes. java public class Pes { String rasa; int vek; void stekaj() { if (vek < 1) { System. out. println("Píp!"); } else { System. out. println("Haf!"); } } } Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
Využívame (psychické) stavy psa • metódach môžeme veselo využívať stavové premenné. • môžeme sa na ne dívať ako na , , globálne" premenné známe z unitov v Pascale Pes. java public class Pes { String rasa; int vek; . . . void pridaj. Rok() { vek = vek + 1; } } Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
Štekanie s hodnotou • príklad metódy vracajúcej hodnotu function Pes. stekaj: string begin if vek < 1 then stekaj: ='Píp!' else stekaj: ='Haf!'; end; návratový String stekaj() { if (vek < 1) { return "Píp!"; } else { return "Haf!"; } } typ Pes dunčo = new Pes(); String štek = dunčo. stekaj(); return: vráti z metódy danú hodnotu a ukončí beh metódy System. out. println(štek); Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
Štekanie s parametrami function stekaj(pocet: integer; nahlas: boolean) begin. . . end; String stekaj(int pocet, boolean nahlas) {. . . } návratový typ parametre oddelené čiarkou • parametre oddelené čiarkou (Pascal: bodkočiarka) • deklarácia parametrov presne taká, ako deklarácia premenných Dobré ráno s jazykom Java / PAZ 1 c 5. 10. 2006
8b2493992c877032e5c2731109ecdb46.ppt