1 / 33

R óbert Novotný robert.novotny@upjs.sk 28. 9. 2006

Programovanie, algoritmy, zložitosť ÚINF/PAZ1c. R óbert Novotný robert.novotny@upjs.sk 28. 9. 2006. Formality a byrokracie. Teoretické cvičenie piatok, 11.00, P17 prednáškové zameranie Praktické cvičenia štvrtok, 13.00, P3 Všetky inštrukcie na http://ics.upjs.sk/~novotnyr/vyucba/paz1c.

alaire
Download Presentation

R óbert Novotný robert.novotny@upjs.sk 28. 9. 2006

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programovanie, algoritmy, zložitosťÚINF/PAZ1c Róbert Novotný robert.novotny@upjs.sk 28. 9. 2006 PAZ1c

  2. Formality a byrokracie • Teoretické cvičenie • piatok, 11.00, P17 • prednáškové zameranie • Praktické cvičenia • štvrtok, 13.00, P3 • Všetky inštrukcie na http://ics.upjs.sk/~novotnyr/vyucba/paz1c PAZ1c

  3. Sylabus a požiadavky na zápočet • Sylabus: • Objektovo orientované programovanie • Jeho použitie v Jave • Požiadavky: • Účasť na praktických cvičeniach (20%) • Domáce úlohy (raz za dve cvičenia) (30%) • Záverečný projekt (30%) • Test po precvičení dedičnosti (20%) PAZ1c

  4. Java • Java • výslovnosť • džova (Gosling a iní zakladatelia) • džava ,,To sú tí Američania, čo čítajú body ako báádíí" • java (Poliaci a Rusi;-)) • objektovo orientovaný programovací jazyk • základný softvér týkajúci sa Javy • budeme používať verziu 5, resp. 6. PAZ1c

  5. Výhody Javy • WORA: write once, run anywhere (Napíš raz, spusti hocikde) • kódenie na Windowse • nasadenie na Solaris • platformová nezávislosť • Windows • Linux • mobil • sonda Mars Spirit • tony kvalitných knižníc a nástrojov • väčšina zadarmo • obrovská komunita, haldy a haldy kníh, seriálov... PAZ1c

  6. Výhody a nevýhody Javy • malé spustiteľné súbory ,,Heh. Až na to osemmegové JRE" • žiadne smerníky • syntax prebratá z Ccka ,,To je výhoda?" PAZ1c

  7. Výhody a nevýhody Javy Používateľ sa často stretáva s tými najhoršími stránkami Javy • applety: hrozné, pomalé, nepoužiteľné • applety tvorili veľmi malý podiel programov v Jave • historicky na odchode • bežné aplikácie: hrozné, pomalé, nepoužiteľné • situácia sa zo dňa na deň zlepšuje ,,Porovnaj Together a Eclipse" • pozri JAlbum, či Azureus • Java 7 zameraná na použiteľnosť bežných aplikácií PAZ1c

  8. Prečo by som mal ovládať Javu • komerčné spoločnosti => množstvo pracovných ponúk • Java je v súčasnosti na čele medzi požiadavkami • Ness, Siemens, VSL, CAI • veľká perspektíva 1. PHP: 1,152* 2. C# : 5,111 3. AJAX: 1,106 4. JavaScript: 4,406 5. Perl: 4,810 6. C: 6,164 7. Ruby, Ruby on Rails: 210 a 54 8. Java: 14,408 9. Python: 811 10. Visual Basic .Net: 2,090 PAZ1c

  9. Ako spustím zázračný program v Pascale • Spomni Pascal: • F9 kompiluje a zároveň spúšťa. Všetko sa deje na pozadí F9 PAZ1c

  10. Ako spustím zázračný program v Jave • Pravý programátor používa príkazový riadok a notepad/vi. • Kompilácia • javac HelloWorld.java • Spustenie • java HelloWorld Hello World! HelloWorld.java public class... HelloWorld.class 010011001011 javac java PAZ1c

  11. Ako spustím zázračný program v Jave • Potrebujem mať nainštalovaný Java Development Kit (zadarmo) • http://java.sun.com • inštrukcie na domácu inštaláciu budú na stránke • Prostý ľud používa integrované vývojové prostredie • Eclipse od IBM (zadarmo) • NetBeans od Sunu (zadarmo) ,,začínali ako softvérový projekt na MFF UK v Prahe" • IntelliJ IDEA • najlepšie • za ťažké peniaze PAZ1c

  12. 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... PAZ1c

  13. Filozofický pohľad na objekty • prirodzený pohľad • objekty sú všade naokolo • študent(i), prednášajúci, tabuľa, • počítač, vypínač, strom, • chlap, hrdina, dub, stroj... rád stínam binárne stromy (a iné objekty) PAZ1c

  14. 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úť PAZ1c

  15. Filozofický pohľad na objekty • príklad: empétrojka • stav: • 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 MP3 walkmana™ em pé három PAZ1c

  16. Triedy, objekty a inštancie • trieda: predstavuje koncept, resp. pojem • príklad: pes • čo majú spoločné všetky psy • aký je koncept ,,psovitosti". Dohodnime sa: • 4 nohy, chvost, chlpy • breše Rum? Komissar Java? PAZ1c

  17. 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ú PAZ1c

  18. 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 PAZ1c

  19. 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 stav schopnosti PAZ1c

  20. class Pes { String rasa; float vek; } Triedy • stavové premenné • každý pes má rasu • každý pes má vek • 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 PAZ1c

  21. Pes.java class Pes { String rasa; int vek; } PesTester.java class PesTester { public static void main(String[] args) { Pes dunčo; dunčo = new Pes(); } } Pôrod psa (vytváranie inštancie) nový súbor! už máme dva... PAZ1c

  22. Pôrod psa (vytváranie inštancie) • Pes dunčo; • trieda je užívateľom definovaný dátový typ • dunčo = new Pes(); • inicializácia premennej • new Pes() = vytvor novú inštanciu (objekt) typu Pes • priraď ju do premennej dunčo typu Pes. vlastný dátový typ PAZ1c

  23. Deklaráciu (Pes dunčo;) a inicializáciu (dunčo = new Pes();) vieme zapísať jedným riadkom. Pôrod psa (vytváranie inštancie) PesTester.java class PesTester { public static void main(String[] args) { Pes dunčo = new Pes(); } } PAZ1c

  24. Štelujeme psa slovenský čuvač 8 PesTester.java class PesTester { 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); } } PAZ1c

  25. Svorka psov slovenský čuvač 8 ťažko povedať 3 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); PAZ1c

  26. 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 • takáto procedúra / funkcia sa nazýva metóda. PAZ1c

  27. Pes.java class Pes { String rasa; int vek; void stekaj() { System.out.println("Haf!"); } } Štekajúci pes PAZ1c

  28. 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ť! PAZ1c

  29. Pes.java class Pes { String rasa; int vek; void stekaj() { System.out.println("Haf!"); } } Štekáme psom Haf! PesTester.java // domyslíme si public class a main(...) Pes dunčo = new Pes(); dunčo.štekaj(); PAZ1c

  30. Pes.java class Pes { String rasa; int vek; void stekaj() { if (vek < 1) {System.out.println("Píp!"); } else { System.out.println("Haf!"); } } } Využívame (psychické) stavy psa • v 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 PAZ1c

  31. Pes.java class Pes { String rasa; int vek; ... void pridajRok() { vek = vek + 1; } } Využívame (psychické) stavy psa 7 8 • v 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 PesTester.java public static void main(String[] args) { Pes pes = new Pes(); pes.vek = 7; System.out.println(pes.vek); pes.pridajVek(); System.out.println(pes.vek); } PAZ1c

  32. String stekaj() { if (vek < 1) { return "Píp!"; } else { return "Haf!"; } } Štekanie s hodnotou návratový typ • príklad metódy vracajúcej hodnotu return: vráti z metódy danú hodnotu a ukončí beh metódy Pes dunčo = new Pes(); String štek = dunčo.stekaj(); System.out.println(štek); PAZ1c

  33. String stekaj(int pocet, boolean nahlas) { ... } Štekanie s parametrami návratový typ parametre oddelené čiarkou • deklarácia parametrov presne taká, ako deklarácia premenných PAZ1c

More Related