Poznámky
Prezentace
Osnova
1
"Róbert Novotný"
  • Róbert Novotný
  • robert.novotny@upjs.sk
  • 28. 9. 2006
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
3
Sylabus a požiadavky na zápočet
  • 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%)
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.
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...
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?"
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í
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


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í
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
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
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...
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...

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úť


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™
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


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ú
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
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
20
Triedy
  • class Pes {
  • String rasa;
  • float vek;
  • }
21
Pôrod psa (vytváranie inštancie)
  • 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();
  • }
  • }
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.
23
Pôrod psa (vytváranie inštancie)
  • Deklaráciu (Pes dunčo;)
  • a inicializáciu (dunčo = new Pes();)
  • vieme zapísať jedným riadkom.
24
Štelujeme psa
  • 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);
  • }
  • }


25
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);
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.
27
Štekajúci pes
  • Pes.java
  • class Pes {
  • String rasa;
  • int vek;


  • void stekaj() {
  • System.out.println("Haf!");
  • }
  • }


28
Analyzujeme štekanie
  • void stekaj() { System.out.println("Haf!");
  • }
29
Štekáme psom
  • Pes.java
  • class Pes {
  • String rasa;
  • int vek;
  • void stekaj() {
  • System.out.println("Haf!");
  • }
  • }


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


31
Využívame (psychické) stavy psa
  • Pes.java
  • class Pes {
  • String rasa;
  • int vek;
  • ...
  • void pridajRok() {
  • vek = vek + 1;
  • }
  • }


32
Štekanie s hodnotou
  • String stekaj() {
  • if (vek < 1) {
  • return "Píp!";
  • } else {
  • return "Haf!";
  • }
  • }


33
Štekanie s parametrami
  • String stekaj(int pocet, boolean nahlas) {
  •    ...
  • }