Poznámky
Prezentace
Osnova
1
"Róbert Novotný"
  • Róbert Novotný
  • robert.novotny@upjs.sk
  • 17. 9. 2008
2
Formality a byrokracie
  • Teoretické cvičenie
    • prednáškové zameranie
    • streda, 10.00, P8
  • Praktické cvičenia
    • pondelok, 7.00, P13 (cez víkend v noci ;-)
    • piatok, 9.00, P3
    • piatok, 14.00, P4


  • Všetky inštrukcie na
  • http://ics.upjs.sk/~novotnyr/vyucba/paz1c
3
Vstupné vedomosti
  • toto je tretí semester programovania
  • od študenta sa očakáva
    • znalosť základného procedurálneho programovania
      • viem, čo je cyklus, podmienka, premenná, dátový typ, metóda (procedúra, funkcia)


    • mlžné predstavy o OOP
    • základné predstavy o programovacích technikách a algoritmoch
      • rekurzia...
4
Sylabus a požiadavky na hodnotenie
  • 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%)
5
Požiadavky na hodnotenie
6
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...

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


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


10
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ú
11
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
12
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
13
Triedy
  • class Pes {
  • String rasa;
  • float vek;
  • }
14
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();
  • }
  • }
15
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.
16
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.
17
Š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);
  • }
  • }


18
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);
19
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.
20
Štekáme psom
  • Pes.java
  • class Pes {
  • String rasa;
  • int vek;
  • void stekaj() {
  • System.out.println("Haf!");
  • }
  • }


21
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!");
  • }
  • }
  • }


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


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