0% found this document useful (0 votes)
123 views50 pages

Prezentacia Informatika

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
123 views50 pages

Prezentacia Informatika

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Prednáška č.

1
Veci okolo nás
Pohľad vonkajší
 Na čo nám slúži
 Ako sa používa
Pohľad vnútorný
 Z čoho sa skladá?
 Ako sa dá charakterizovať?
 Ako funguje?
Človeka môžeme tiež chápať ako objekt. Všetko okolo nás sú objekty.
Objekty spolupracujú tak, že si odovzdávajú potrebné informácie. (napr. človek stlačí tlačidlo na diaľkovom
ovládači – číslo kanálu zvoleného TV programu ovládač odošle informáciu do TV prijímačaTV prijímač
naladí požadovaný TV program a zobrazuje ho človekovi)
Hovoríme, že objekty si posielajú správy

Modelovanie objektov
Model je zjednodušením reality – uvažuje iba stránky podstatné pre riešený problém
 model – fyzikálny, matematický, programový, ...
 programový objekt modeluje objekty reálneho sveta
 program je množina objektov, ktoré spolu komunikujú pomocou správ
 programy sa píšu v programovacích jazykoch
Postup pri tvorbe programu
Objekt reálneho sveta  logický model – UML  softvérový model – program v Jave

Používanie programu
Program v 2 tvaroch
 Zdrojový kód (zdrojový text) – zapisuje aj číta človek – počítač mu nerozumie
 Strojový/cieľový kód – podľa neho pracuje počítač – človek nie je schopný ho jednoducho prečítať alebo
zmeniť
Prevod zo zdrojového do strojového kódu zabezpečuje špeciálny program – prekladač (kompilátor)
Počítač vykonáva program v strojovom kóde.
Teoretický model objektu:
 Rozhranie – zoznam správ, ktoré prijíma
 Verejná časť – majú prístupné (vidia) všetky objekty v okolí.

 Atribúty
 Metódy
 Neverejné časti, má prístupné (vidí) len objekt sám
Ilustrácia štruktúry objektu

Rozhranie objektu – zoznam všetkých správ. Ponuka služieb poskytovaných objektom. Potrebujeme poznať, ak
chceme objekt použiť. Jeden objekt komunikuje s iným objektom cez jeho rozhranie.
Atribúty objektu – modelujú jeho vlastnosti a štruktúru. Atribút má názov a hodnotu.
Stav objektu – aktuálne hodnoty všetkých atribútov objektu. Zmenou hodnoty akéhokoľvek atribútu sa mení stav
objektu.
Chovanie objektu – objekt zachováva svoj stav, kým nie je nútený zmeniť ho na základe prijatej správy.
Metódy objektu – reakcia na doručenú správu – algoritmus (predpis), čo urobiť, keď objekt príjme správu.
Metódy určujú chovanie objektu.
Správa  metóda
 Každej správe z rozhrania objektu je priradená práve jedna metóda objektu
 Protokol – zobrazenie množiny správ na množinu metód
 V programovacích jazykoch (až na výnimky) správa a metóda majú rovnakú štruktúru
 Poslanie správy – volanie metódy
Objekt, trieda a inštancia
 Továreň – objekt, ktorý vyrába iné objekty – výrobky
 Trieda – objekt, ktorý vytvára rovnaké objekty
 Inštancia – objekt, ktorý vyrobila trieda
Trieda ako továreň
 Objekt – prijíma správy
 Špeciálny objekt – vytvára (svoje) inštancie
 Špeciálna správa – žiadosť o novú inštanciu
Trieda ako typ
 Na triedu sa dá pozerať aj ako na typ objektu (napr. škoda je typ všetkých áut, ktoré boli vyrobené továrňou
Škoda).
Životný cyklus inštancie
 Napr.: továreň vyrobí nové auto  auto používa jeho vlastník (vlastníci)  posledný vlastník odovzdá staré
auto do zberných surovín  alebo na mieste, kde ho prevezme zberná služba
 Časový interval existencie inštancie
 Na začiatku inštancia vzniká – vytvorí ju trieda
o v okamihu vzniku objektu musí byť definovaný aj jeho stav – začiatočný stav
o v programovacích jazykoch je za nastavenie začiatočného stavu zodpovedná špeciálna metóda
nazývaná konštruktor
 Inštancia žije – poskytuje služby
 Na konci sa inštancia na požiadanie zničí alebo ju zruší zberná služba – garbage collector

Názov objektu je jeho pomenovanie, pomocou ktorého sa naň odvolávame.


 Objekt môže mať aj viac názvov (ja, ty, Jožko, pán majster – všetko sa vzťahuje na rovnaký objekt)
 Rovnaký názov môže v rôznych okamihoch odkazovať na rôzne objekty (obsluhovaný klient – najskôr je to
pán Novák a potom ho vystrieda pani Krásna, atď.)
 Názov nie je unikátny
Štruktúra správy
 adresát.selektor(parameter1, parameter2,...)
 kruhModry.posunVodorovne(100)
Časti správy
 Adresát – objekt, ktorému je správa určená (kruhModry)
 Názov správy – selektor, naznačuje, o čo adresáta žiadame (posunVodorovne)
 Parametre – spresňujú žiadosť (100)
 Návratová hodnota – možná odpoveď objektu na správu

Prednáška č. 2
Vytváranie tried – metatrieda
 „továreň“ na objekty – trieda
 Trieda je tiež objekt
 Metatrieda = továreň na triedy (Smaltalk, Python)
Priamo definovaný objekt
 Vytvorenie objektu bez triedy, jednorazovo
 Cely objekt priamo nadefinujeme
Delenie programovacích jazykov
a) Trieda ako inštancia metatriedy
 Smalltalk, Python,...
 Čisté objektové jazyky
b) Trieda ako priamo definovaný objekt
 (Object) Pascal, C++, C, Java, ...
 Hybridné objektové jazyky
 Najviac jazykov
c) Prototyp objektov
 JavaScript, Self, ...
 Čisté objektové jazyky
 Neexistuje trieda
Trieda ako šablóna
 Súhrn informácii na vytvorenie inštancie (rozhranie, atribúty, metódy)

Postup pri vytváraní tried


1) Abstrakcia (zjednodušenie) reálneho objektu
 Slovná – textová charakteristika inštancií triedy
2) Grafické znázornenie pomocou diagramu tried v UML – UML.FRI
3) Definícia triedy v programovacou jazyku Java
 Zdrojový kód – v nástroji Editor BlueJ
Automat na cestovné lístky – služby
 Prvá verzia – primitívny automat
 Lístky majú jednu cenu (napr. jednopásmové lístky v MHD v ZA)
 Automat prijíma peniaza (mince)
 Automat zobrazuje vloženú čiastku – súčet vhodených mincí pred vydaním lístka
 Automat tlačí lístok
Automat MHD – rozhranie triedy
 Správa – žiadosť o vytvorenie automatu
o AutomatMHD.vytvorAutomat(cenaListka)
o automatMHD.new(cenaListka
AutomatMHD – rozhranie inštancie
 Zobrazenie ceny lístka
o Automat.getCenaListka()
 Zobrazenie doteraz vloženej čiastky
o Automat.getVlozenaCiastka()
 Vloženie mince
o Automat.vlozMincu(hodnotaMince)
 Vytlačenie lístka
o Automat.tlacListka()
AutomatMHD – vlastnosti
 Cena lístka v centoch
o celé číslo
 Aktuálna vložená čiastka v centoch
o celé číslo
 Celková tržba od posledného vybrania peňazí zamestnancom
o celé číslo
Postup pri vytváraní tried
1) Abstrakcia (zjednodušenie) reálneho objektu
 Slovná – textová charakteristika inštancií triedy
2) Grafické znázornenie pomocou diagramu tried v UML – UML.FRI
3) Definícia triedy v programovacou jazyku Java
 Zdrojový kód – v nástroji Editor BlueJ
Model triedy v UML

AutomatMHD – vonkajší pohľad


AutomatMHD – vnútorný pohľad
AutomatMHD – BlueJ

BlueJ – rozhranie triedy

BlueJ – rozhranie inštancie

BlueJ – vnútorný pohľad

UML – objektový diagram

Objektový diagram automatu

Postup pri vytváraní tried


1) Abstrakcia (zjednodušenie) reálneho objektu
 Slovná – textová charakteristika inštancií triedy
2) Grafické znázornenie pomocou diagramu tried v UML – UML.FRI
3) Definícia triedy v programovacou jazyku Java
 Zdrojový kód – v nástroji Editor BlueJ
Definícia triedy – Java
Definícia – hlavička
 Príklad:
 Public – kľúčové slovo, označuje verejný prístup
 Class – kľúčové slovo, označuje triedu
 AutomatMHD – identifikátor, názov triedy
Identifikátor
 Názov, pomenovanie, inštancie, triedy, správy, metódy a atribútu
 Identifikátor je jedno alebo viacslovné pomenovanie
Návrh identifikátorov
 Identifikátory navrhujeme, volíme tak, aby vyjadrovali význam, zmysel pojmu
 Nepoužívame neznáme skratky
 Programy sú síce určené na to, aby ich vykonávali počítače, ale čítajú ich aj ľudia
 Úspešný program sa stále nejako mení
 Pre tvorbu identifikátorov platia:
o Pravidlá – určuje programovací jazyk
o Konvencie – určuje programátorská komunita
Pravidlá tvorby identifikátorov
 Programovací jazyk definuje pravidlá, ktoré musí spĺňať každý identifikátor
 Java definuje tieto pravidlá
o Môže sa skladať z písmen, číslic a znakov „_“ (podčiarkovník“ a „$“ (dolár)
o Nesmie začínať číslicou
o Rozlišujú sa malé a VEĽKÉ písmená
o Nesmie sa zhodovať so žiadnym kľúčovým slovom
 Kľúčové slovo – slovo alebo identifikátor so špecifickým významom v programovacom
jazyku
Konvencie pre tvorbu identifikátorov
 Jednotlivé slová sa píšu bez medzier
 Prvé slovo sa píše malým písmenom
 Druhé a ďalšie slová začínajú veľkým písmenom
 Výnimka: identifikátor triedy vždy začína veľkým písmenom
 Príklady:
o Trieda: AutomaMHD
o Metóda: tlacListok
Definícia triedy – telo
 Definícia atribútov
 Definícia konštruktorov
 Definícia metód
 Poradie je konvenciou
Definícia triedy – atribúty
 Príklad:

 Private – kľúčové slovo, označuje súkromnú zložku inštancie triedy


 Int – typ, určuje druh uchovávanej informácie
 cenaListka – identifikátor, názov atribútu
 ; (bodkočiarka) – ukončenie definície atribútu
Typ – dátový typ
 Typ určuje druh dát (príklad: int – označuje informáciu, ktorá je vyjadrená celým číslom)
 Dátové typy v jazyku Java – primitívne a objektové
Primitívne dátové typy – pre celé čísla
 Celočíselné typy – pre rôzne konečné podmnožiny množiny celých čísiel

Primitívne dátové typy – pre reálne čísla


 Pohyblivá rádová čiarka – pre rôzne konečné podmnožiny racionálnych čísel

Obmedzenia číselných typov


 Aritmetické operácie sa môžu správať zvláštne

Primitívne dátové typy – ostatné


 Boolean – typ pre logické hodnoty, môže nadobúdať jednu z dvoch hodnôt
o True – pravda, áno,...
o False – nepravda, nie, ...
 Char – typ pre jeden znak z množiny znakov Unicode; písanie textov zvyčajným spôsobom v rôznych
jazkyoch
o Môže obsahovať ľubovoľný znak z 65,535 znakov Unicode
Objektový typ string
 String – reťazec znakov
 Obsahuje ľubovoľnú postupnosť znakov
Definícia triedy – konštruktor

Definícia triedy – hlavička konštruktory


 Príklad:
 Public – kľúčové slovo, označuje verejnú zložku triedy  rozhranie triedy obsahuje správu – žiadosť
o vytvorenie inštancie
 AutomatMHD – identifikátor, názov konštruktora – musí byť
zhodný s názvom triedy
 (int cenaListka) – zoznam formálnych parametrov konštruktora
Formálne parametre
 Konštruktory a metódy
 Príklad: jednoprvkový zoznam
 () – ohraničenie zoznamu
 Dvojica int cenaListka – parameter
o Int – typ hodnoty prenášanej parametrom
o cenaListka – identifikátor, názov parametra

Skutočné parametre

Definícia triedy – telo konštruktora


 Príklad:
 Postupnosť príkazov oddelených bodkočiarkou
 Inicializácia inštancie – definícia hodnôt atribútov = uvedenie inštancie do začiatočného stavu
Definícia triedy – konštruktor

Vytvorenie a inicializácia inštancie

Priraďovací príkaz
 Príklad:
 Nie je to rovnica!!
 This.trzba – ľavá strana priraďovacieho príkazu
 = (rovná sa) – operátor priradenie
 0 – výraz
 ; (bodkočiarka) – ukončenie príkazu
This
 Kľúčové slovo v jazyku Java
 Vyjadrenie prístupu k objektu, ktorý vykonáva aktuálnu metódu
 this.nazovAtributu
o Prístup k atribútu nazovAtributu
Literál
 Zápis konštantných hodnôt v jazyku
 Priame vyjadrenie hodnoty v zdrojovom kóde
 Nepotrebuje žiadny výpočet
 Príklady
o This.trzba=0;
o Int i = 100000;
o Boolean vysledok = true;
o Char velkeC = ‘C‘;
o Double d1 = 123.4;
o String nazov = „Školská linka FRI
Definícia triedy – metóda

Definícia triedy – hlavička metódy


 Príklad:
 Public – kľúčové slovo, označuje verejnú zložku inštancie triedy  rozhranie triedy obsahuje správu
 Int – typ návratovej hodnoty
 getCenaListka – identifikátor, názov metódy
 () – zoznam formálnych parametrov – môže byť aj prázdny, zátvorky však musia byť
Typ návratovej hodnoty
 Príklad:
 Void – kľúčové slovo, označenie typu návratovej hodnoty, ak metóda neposkytuje žiadnu výstupnú
informáciu (správa nemá návratovú hodnotu)
Definícia triedy – telo metódy
 Príklad:
 Telo metódy sa skladá z postupnosti príkazov oddelených bodkočiarkou rovnako ako telo konštruktora
Definícia triedy – metóda

Príkaz návratu/príkaz return


 Príklad:
 Return – kľúčové slovo, uvádza príkaz, ktorým metóda vracia hodnotu
 This.cenaListka – určuje návratovú hodnotu
o Typ musí sedieť s typom návratovej hodnoty metódy
 ; (bodkočiarka) – koniec príkazu
 Posledky vykonaný príkaz v tele metódy
Návratový typ a príkaz návratu

Konštruktor a metóda – rozdiely


 Konštruktor
o Identifikátor konštruktora je vždy zhodný s identifikátorom triedy
o Nikdy nemá typ návratovej hodnoty
 Metóda
o Identifikátor metódy je vždy zhodný so selektorom správy
o Má vždy typ návratovej hodnoty
o Môže mať návratovú hodnotu
Metódy a stav objektu
 Prístupové – poskytujú informáciu súvisiacu so stavom objektu
 Najčastejšie prostredníctvom návratovej hodnoty

 Zmenové – zmenia stav objektu


 Stav objektu je iný pred vykonaním zmenovej metódy a iný po jej vykonaní

Vykonanie priraďovacieho príkazu


 Priraďovací príkaz NIE JE ROVNICA

Hlavička metódy tlacListok

Komentáre
 Komentár – vysvetľujúci text pre ľudí čítajúcich zdrojoví
text programu
 Jednoriadkový komentár – od // do konca riadku
Viac riadkový komentár
 Príklad
 /* - úvodné znaky viacriadkového komentára
 /** - úvodné znaky dokumentačného komentára
 */ - ukončujúce znaky komentára
Použitie komentárov
 Nad komentovaný riadok uvádzame:
o Informácie, ktoré nie sú priamo zrejmé zo zdrojového textu
o Dôvody pre niektoré riešenia
 Dokumentačný komentár slúži na automatické generovanie dokumentácie
o Popisuje chovanie triedy/metódy/konštruktora

Telo metódy tlacListok

Tlač z metód – print, println


 System.out – zabudovaný objekt pre tlač do okna terminálu
 Print(this.cenaListka) – správa – žiadosť o tlač hodnoty atribútu cenaListka
 Println(this.cenaListka) – správa – žiadosť o tlač hodnoty atribútu cenaListka a prechod na nový riadok
 System.out.print(skutocnyParameter) – tlač hodnoty skutočného parametra na aktuálny riadok
 skutocnyParameter – ľubovoľný výraz
 každý typ má definovaný svoj formát pre tlač do okna terminálu
 println() – správa – žiadosť o ukončenie riadku (prechod na začiatok nového riadku)
Získanie tržby z automatu
Automat vráti zostatok

Lokálna premenná
 Definícia lokálnej premennej
 Definícia a inicializácia lokálnej premennej
 Rovnako ako

Premenná spoločné vlastnosti


 Atribúty, parametre a lokálne premenné sú miesta v pamäti, v ktorých sú uložené hodnoty
 Atribúty, parametre a lokálne premenné majú vždy definovaný typ hodnoty, ktorú uchovávajú
 Pokiaľ budeme o atribútoch, parametroch a lokálnych premenných hovoriť všeobecne, budeme hovoriť
o premenných
Atribúty, parametre a lokálne premenné
1. Účel, poslanie
a. Atribút – uchováva stav objektu
b. Parameter – prenos spresňujúcej informácie
c. Lokálna premenná – dočasné uloženie určitej hodnoty v rámci bloku

2. Definícia
a. Atribút – telo triedy, mimo konštruktorov a metód
b. Parameter – hlavička konštruktora alebo metódy
c. Lokálna premenná – v bloku (v tele konštruktora alebo metódy)
3. Inicializácia
a. Atribút – v konštruktore v čase vytváranie inštancie
b. Parameter – v odosielanej správe ako skutočný parameter
c. Lokálna premenná - v bloku ( v tele konštruktora alebo metódy)
4. Rozsah platnosti (viditeľnosť, použiteľnosť)
a. Atribút – v každom konštruktore alebo metóde
b. Parameter – v tele daného konštruktora alebo metódy
c. Lokálna premenná – v bloku od miesta definície po koniec bloku definície aj vo všetkých vnorených
blokoch
5. Životný cyklus – existencia
a. Atribút – životný cyklus inštancie
b. Parameter – v čase vykonávania konštruktora alebo metódy
c. Lokálna premenná – v čase vykonávania bloku od miesta definície po koniec bloku, v ktorom bola
definovaná

Prednáška č. 3
Aritmetický výraz
 Predpis na výpočet číselnej hodnoty
 Obvykle má tvar matematického výrazu
 Aritmetický výraz môže mať formu:
o Bez operátov
 Číselný literál
 Číselný parameter
 Číselný atribút
o S aritmetickým operátorom
 unárnyOperátor operand
 operand binárnyOperátor operand
Unárne aritmetické operátory
 tvar:
 operand môže byť ľuboľný aritmetický výraz
 unárne aritmetické operátory
o - (mínus) – unárne mínus – zmena znamienka
o + (plus) – unárne plus
Binárne aritmetické operátory
 Tvar:
 operand môže byť ľubovoľný aritmetický výraz
 Binárne aritmetické operátory:
o + (plus) – súčet
o – (mínus) – rodiel
o * hviezdička – súčin
o / (lomka) – podiel
o % (percento) – zvyšok po delení
Priorita operátorov
 Operátory sa vyhodnocujú v nasledujúcom poradí:
o Unárne +, -
o Binárne *,/,%
o binárne +, -
 Teda rovnako ako v matematike
 Poradie vyhodnocovania sa dá ovplyvňovať zátvorkami – spôsobom obvyklým v matematike
 Zátvorky treba používať vždy, keď to zlepší čitateľnosť výrazu
Zátvorky
a.b
c.d

Typ hodnoty aritmetického výrazu


 Operand v aritmetickom výraze môže reprezentovať len číselnú hodnotu

Typová kompatibilita – príkaz návratu

Typová kompatibilita – priradenie

Typová kompatibilita – konverzie


 Nazývané aj implicitné pretypovanie
 Prvý stĺpec – cieľový typ konverzie
 Prvý riadok – zdrojový typ konverzie
Typová kompatibilita príklad

Explicitná konverzia
 (explicitné pretypovanie)
 Použiteľná v prípade, keď konverziu prekladač nedovolí
 Programátor sa zaručí, že pretypovanie bude fungovať správne
Algoritmy
 Telo konštruktora obsahuje tie príkazy, ktoré predstavujú inicializáciu práve vytváranej inštancie
 Telá metód obsahujú tie príkazy, ktoré urobí objekt ako reakciu na prijatie rovnomernej správy
 Telá metód a konštruktorov predstavujú algoritmy
Algoritmus
 Algoritmus
o Popis pracovného postupu, ktorým sa rieši určitá skupina úloh.
o Presne definovaná konečná postupnosť príkazov (krokov), vykonávaním ktorých pre každé prípustné
vstupné hodnoty získavame po konečnom počte krokov odpovedajúce výstupné hodnoty.
 Algoritmizácia
o Tvorivý proces hľadania a vytváranie algoritmu
Vlastnosti algoritmu
 Determinovanosť – po vykonaní každého kroku musí byť jednoznačne určený krok nasledujúci
 Rezultatívnosť – pre rovnaké vstupné údaje musí algoritmus dať rovnaké výstupné údaje
 Konečnosť – vykonávanie algoritmu má vždy konečný počet krokov
 Hromadnosť – nie je riešením jedinej úlohy, ale všetky úlohy danej kategórie, ktoré sa líšia len hodnotami
vstupných údajov
Procesor
 Algoritmus vykonáva objekt, ktorý sa nazýva procesor
 algoritmus musí byť vyjadrený v jazyku, ktorému procesor rozumie a vie vykonávať príkazy zapísané
pomocou toho jazyka.
 predpokladom je, že procesor „neuvažuje“ – príkazy algoritmu vykonáva mechanicky.
Vyjadrenie algoritmu
 postup vyjadrený v prirodzenom jazyku – procesorom je človek.
 znázornený graficky v podobe diagramu – používa najčastejšie človek, keď sa chce vyjadriť nezávisle od
prirodzeného jazyka autora.
 zapísaný v programovacom jazyku – ak je procesorom počítač.
Štruktúrované programovanie
 doteraz – všeobecne o algoritmoch
 ich zápis môže mať rôzne formy v rôznych programovacích jazykoch
o neštruktúrované programovanie
o štruktúrované programovanie
o deklaratívne programovanie
o funkcionálne programovanie
o ...
 odteraz len štruktúrované programovanie
 podporuje ho aj Java
Základné konštrukčné prvky
• prvkami sú príkazy
• jednoduché
o priraďovací príkaz
o príkaz návratu
• štruktúrované
o postupnosť (sekvencia)
o vetvenie
o cyklus
Štruktúrované príkazy
• postupnosť (sekvencia)
o určuje poradie vykonávania príkazov
o príkazy môžu byť jednoduché aj štruktúrované
• vetvenie – výber jednej alternatívy
o alternatívne vetvy algoritmu
o vetva sa uplatní, ak je splnená podmienka
• cyklus – opakovanie časti algoritmu
o opakovaná časť – telo cyklu
o opakovanie na základe podmienky cyklu
Primitívny automat MHD
• telá konštruktora a všetkých metód sú postupnosti (sekvencie) jednoduchých príkazov.
• príklad – konštruktor
• telo konštruktora tvoria 3 príkazy – nastavenie automatu do začiatočného stavu.
Java – postupnosť príkazov

Diagram aktivít UML – postupnosť (1)

Diagram aktivít UML – postupnosť (2)

Vetvenie
• prostriedok na rozhodovanie v algoritme
• jedna alebo skupina podmienok
o ich vyhodnotením sa určí, aké príkazy má procesor v danej situácii vykonávať
• Java
o úplný príkaz if
o neúplný príkaz if
o príkaz switch
Vetvenie v jazyku Java – úplný príkaz if
Vetvenie v jazyku Java – príkaz if

Formulácia podmienky
• podobná matematickej forme
• logický výraz – jeho hodnota je typu boolean
• príklad:
• > (väčší ako) – relačný operátor
• ak je relácia splnená, výsledok má hodnotu true
• inak má hodnotu false
Relačné operátory (1)
• sú vždy binárne
• oba operandy sú aritmetické výrazy
• priorita relačných operátorov je nižšia ako priorita aritmetických operátorov
• výsledok logického výrazu je vždy typu boolean

Relačné operátory (2)

Blok
• časť kódu programu uzavretá do dvojice zátvoriek {}
• bloky sa do seba vnárajú
• telo triedy obsahuje bloky – telá konštruktorov a metód
• vetva v príkaze if tiež môže byť blok

Príkaz if bez bloku

Vetvenie v diagrame aktivít

Vetvenie v diagrame aktivít – iný zápis


Príkaz
• doplnenie kontroly, či vložená čiastka pokrýva cenu lístka
• treba sa rozhodnúť
o ak vložená čiastka dosahuje cenu lístka
 lístok sa vytlačí
o ak vložená čiastka nedosahuje cenu lístka
 lístok sa nevytlačí, vypíše sa dôvod
Metóda tlacListok

Ukončenie algoritmu pomocou príkazu return


• príkaz return – posledný vykonaný príkaz v algoritme
• možnosť skombinovať s vetvením
o podmienené predčasné ukončenie algoritmu
• dá sa využiť aj vo void metóde
o bez parametra – neoznačuje návratovú hodnotu
• !!! používať iba na zjednodušenie programu

Metóda tlacListok po zjednodušení s return

Iný príklad – vetvenie v konštruktore


• doplnenie kontroly, či je zadaná cena lístka kladná
• použijeme vetvenie
o 1. vetva
 podmienka: cena lístka > 0
 cena sa použije na inicializáciu atribútu
o 2. vetva
 podmienka: cena lístka ≤ 0
 ???
 atribút sa inicializuje preddefinovanou hodnotou
Konštruktor AutomatMHD
Viaccestné vetvenie – príkaz switch
• príkaz switch – viaccestné vetvenie
• výraz
o musí byť typu byte, short, int, char, alebo String
o porovnáva s možnosťami

Príkaz swich – case (návestie)


• možnosti musia byť konštantné výrazy
o konvertovateľné na typ výrazu v príkaze switch

Príkaz switch – default (návestie)


• default – vetva, ktorá sa uplatní, ak sa nenájde príslušná možnosť
• obdoba else v príkaze if

Ukončenie vetvy
• každá vetva má byť ukončená
o príkaz return – ukončenie vykonávania metódy
o príkaz break – ukončenie vykonávania príkazu switch
• chýbajúce ukončenie
o !!! prekladač jazyka Java neupozorní
o vykonávanie pokračuje ďalšou vetvou

Viaccestné vetvenie v diagrame aktivít

Príklad
• chceme polovičné, alebo dvojpásmové lístky
• rozhodovanie medzi viac možnosťami

Získanie ceny lístka v metóde tlač lístok (1)


Získanie ceny lístka v metóde tlač lístok (2)

Cyklus
• zopakovanie časti algoritmu podľa zadaných pravidiel
o vypísanie všetkých poznámok v diári
o sčítanie čísel od 1 po dané číslo
o vyhľadanie knihy v knižnici
• rôzne typy cyklov – rôzne pravidlá
• pravidlá sa vyhodnocujú počas vykonávania algoritmu procesorom

Cyklus for
• pravidlo:
o inicializuj premennú cyklu na zadanú hodnotu
o vykonávaj kým platí podmienka
 príkazy tela cyklu
 príkaz kroku
• využíva sa na pevný počet opakovaní

Cyklus for – inicializácia


• Definícia a inicializácia premennej cyklu
• TypPrvku premennaCyklu = zaciatocnaHodnota
• zaciatocnaHodnota -> ľubovoľný výraz

Cyklus for – podmienka


• relačný výraz
• všeobecne – logický výraz
• podmienka skončenia cyklu
o false – cyklus končí

Cyklus for – krok


• príkaz, ktorým meníme premennú cyklu

Operátor ++
• premenna ++ je ekvivalentné premenna = premenna + 1
• operátor inkrementácie – zväčšenia
• aplikovateľný na všetky číselné typy

Operátor --
• premenna -- je ekvivalentné premenna = premenna - 1
• operátor dekrementácie – zmenšenia
• aplikovateľný na všetky číselné typy

Cyklus for a operátor ++


Cyklus for v diagrame aktivít

Cyklus for a double (1)


• aký bude výstup?
• POZOR!!
Cyklus for a double (2)

Príklad
• Vytlačenie viac lístkov naraz
• Používateľ zadá počet lístkov o ktoré má záujem
• Pevný počet opakovaní – cyklus for

Metóda tlacListky

Cyklus while
• Pravidlo
o Vykonávaj telo cyklu kým platí podmienka

Cyklus for – ekvivalent cyklus while

Cyklus while v diagrame aktivít


Príklad
• vytlačenie lístkov podľa vloženej čiastky
• nepoznáme počet opakovaní, poznáme podmienku – cyklus while
o podmienka cyklu: vložená čiastka je väčšia ako cena lístka

Metóda tlacListky

Cyklus do-while
• pravidlo:
o vykonávaj kým platí podmienka
o telo sa vykoná aspoň jeden krát
o Pascalisti: nemýliť s repeat-until

Cyklus do-while v diagrame aktivít

Príkazy break a continue v kontexte cyklu


• príkaz break – bezpodmienečné ukončenie cyklu
• príkaz continue – prechod na ďalšie opakovanie cyklu (podľa pravidla)
• oba porušujú princípy štruktúrovaného programovania
o nevykoná sa príkaz bloku celý

príkaz break – kvíz

príkaz continue – kvíz


Prednáška č. 4
Modularizácia a abstrakcia
 jednoduchá úloha – jeden objekt
 zložitá úloha – rozklad na menšie podúlohy,
časti – viac ako jeden objekt
o rozdeľuj a panuj
o divide and conquer
o divide et impera
 modularizácia – rozklad na menšie časti – moduly
 abstrakcia – zanedbanie vnútorných detailov jednotlivých častí

Príklad – auto
 časti auta – motor, prevodovka, kolesá,...
o motor – zdroj sily pohybu auta
o prevodovka – zmena veľkosti a smeru sily prenášanej na kolesá
o kolesá – pohyb auta po ceste, zatáčanie
o ...

Kompozícia – skladanie objektov (1)


 každá časť – špecifická úloha
 auto – spolupráca častí
 vonkajší pohľad – auto ako celok
 okolie auta – len auto ako celok

Kompozícia – skladanie objektov (2)


 auto – objekt - celok
 motor, prevodovka, kolesá – objekty - časti

Kompozícia – skladanie objektov (3)


 vytváranie zložených objektov – skladanie
 skladanie objektov – kompozícia
 kompozícia – závislosť celku a jeho častí
o celok – nadriadený objekt
o časť – podriadený objekt
 úloha celku – organizovanie spolupráce častí

Kompozícia – skladanie objektov (4)


 charakteristika kompozície
 spoločný životný cyklus
o spoločný vznik – celok (+ časti)
 vznik časti – súčasť vzniku celku
o služby – len celok
 vonkajší pohľad – rozhranie auta
o spoločný zánik – celok (+ časti)
 zodpovednosť celku za časti
Kompozícia v UML

Kompozícia – diagram objektov

Projekt digitálne hodiny


 Požadované služby:
o zobrazujú aktuálny čas 24-hod. formát
 00:00 – polnoc
 23:59 – minúta pred polnocou
 dajú sa nastaviť na požadovaný čas
 „tikajú“ – plynutie času – časový krok
o krok 1 minúta
 trieda vytvorí inštanciu hodín
o začiatočný čas: 00:00
Príklad: digitálne hodiny

Návrhy riešenia
 jediný objekt – podobne ako automat MHD
 kompozícia
o digitálne hodiny – celok
 v rozhraní bude mať požadované služby
o minúty – časť pre prácu s minútami
o hodiny – časť pre prácu s hodinami
Charakteristika minút
 „plynú“ – posunú sa o 1 minútu
o najnižšia hodnota 00
o najvyššia hodnota 59
 po uplynutí celej hodiny začínajú znovu od 00
 vždy dvojciferné číslo – vedúca nula
 dajú sa nastaviť na požadovanú hodnotu z <00, 59>
Charakteristika hodín
 „plynú“ – posunú sa o 1 hodinu
o najnižšia hodnota 00
o najvyššia hodnota 23
 po uplynutí celého dňa začínajú znovu od 00
 vždy dvojciferné číslo – vedúca nula
 dajú sa nastaviť na požadovanú hodnotu z <00, 23>
Minúty/hodiny – rovnaké vlastnosti
 plynú
 najnižšia hodnota 00
 po dosiahnutí maxima pokračujú od 00
 formátovanie v tvare dvojciferného čísla
 dajú sa nastaviť na požadovanú hodnotu
Minúty/hodiny – rozdiely
 krok pre hodiny: 1 hodina
 krok pre minúty: 1 minúta
 maximum pre hodiny: 23
 maximum pre minúty: 59

Riešenie rozdielov
 dve triedy (MinutovyDisplej, HodinovyDisplej)
 spoločná trieda (CiselnyDisplej)
o rôznosť krokov
 oba kroky o 1
 rôzne jednotky – úroveň interpretácie
o rôznosť maxima
 nastaviteľné maximum
 parametre konštruktora
Digitálne hodiny v UML (1)

Digitálne hodiny v UML(2)


Digitálne hodiny v BlueJ

Charakteristiky číselného displeja


 počíta kroky
 aktuálny stav vráti vo formáte dvojciferného čísla
 po dosiahnutí nastaveného maxima začína od 00
 nastaviteľný na požadovanú hodnotu z <00, max.>

Úlohy digitálnych hodín – celku


 vytvorenie displejov – častí
 vzťah hodín a minút – rôznosť jednotky
 po uplynutí 60 minút krok pre hodiny
 nastavenie maxima

DigitalneHodiny – rozhranie DigitalneHodiny – vnútorný pohľad

Objektové typy
 typ = názov triedy
o trieda ako typ
 Príklady:
o typ premennej
 Hodiny: CiselnyDisplej
o typ návratovej hodnoty
 getCas(): String
DigitalneHodiny – Java DigitalneHodiny – konštruktor - Java
Správa triede „new“

Štruktúra správy „new“ DigitalneHodiny - konštruktor

Referencie
 premenná uchováva hodnotu
 hodnota objektového typu – referencia
 rozdiel v používaní primitívnych typov a objektových typov
o primitívne typy – hodnota vo výrazoch
o Objektové typy
 Hodnota vo výrazoch
 Adresát v správe
DigitalneHodiny – diagram objektov (1)

DigitalneHodiny – diagram objektov (2)


DigitalneHodiny – tik – UML

Príkaz na poslanie správy


 objekt.sprava(skutocneParametre);
o každý zo skutočných parametrov môže byť výraz
 Vždy samostatný výraz
 Príklad:

Správy s návratovou hodnotou


 Typ návratovej hodnoty
o primitívny
o objektový
 Správa s návratovou hodnotou výraz
Objektový výraz
 Výsledok vyhodnotenia objektového výrazu – referencia na objekt
 Návratová hodnota správy „new“ – referencia na inštanciu danej triedy

Metóda getCas

Literál typu String


 Reťazový literál

 Prázdny reťazec

 Literál – realizovaný ako inštancia triedy String


Spájanie reťazcov (1)
 Java používa operátor + pre spájanie reťazcov
 spojením dvoch reťazcov ("Žilinská" + " univerzita")
 vzniká nový reťazec (nová inštancia triedy String) ("Žilinská univerzita")

Spájanie reťazcov (2)


 reťazcový výraz (prvyOperand + druhyOperand)
 aspoň jeden operand je reťazcový
 hodnota reťazcového výrazu – reťazec
 reťazcový operand
 literál
 premenná typu String
 návratová hodnota typu String
 reťazcový výraz
Spájanie reťazcov (3)
 iný ako reťazcový operand sa automaticky prekonvertuje na reťazec
 primitívne typy sa konvertujú automaticky
 objektovým typom sa pošle správa toString()
 vyhodnocovanie výrazu – zľava doprava

Spájanie reťazcov
Metóda getCas

CiselnyDisplej – getHodnotaAkoRetazec

 vracia hodnotu ako dvojciferné číslo


 nula na začiatku
Riešenie problému s nulou – Java(2)

Ďalšie spôsoby spájania reťazcov


 StringBuilder
 String.format/System.out.formal
StringBuilder
 Objekt na vytváranie dlhších reťazcov

StringBuilder – použitie

Dôvody pre použitie StringBuilder


 Reťazový operátor + sa aj tak prekladá na použitie StringBuilder
 Rýchlejšie spájanie viac reťazcov
o Shlemiel The Painter Algorithm
StringBuilder vs. Operátor +

String.format
 Formátovanie reťazca

String.format – použitie

getHodnotaAkoRetazec pomocou String.format

Dôležité – porovnávanie reťazcov


 Operátor == porovnáva hodnoty
 String = objektový typ
 Hodnotou objektového typu je referencia
 Porovnanie reťazcov – správa equals

Zásobník
 Rámec – frame
o zoznam lokálnych premenných
o vykonávaný príkaz
o this
 Pri poslaní správy si procesor rámec
odloží
o po návrate z vykonania metódy sa do neho
vráti
Zásobník – príklad
Prednáška č. 5
Testovanie a ladenie
Typy chýb:
 Syntaktické chyby
 Behové chyby
 Logické chyby
Syntaktické chyby
 zistí a hlási prekladač
 nedodržanie formálnych pravidiel programovacieho jazyka – syntax jazyka
 preklepy pri písaní zdrojového textu
 jasné chyby – na mieste kurzora
 nejasné chyby – nie na riadku s kurzorom
 !!! čítať texty chybových hlásení
Syntaktické chyby – príklad (1)

Syntaktické chyby – príklad (2)

Behové chyby
 Zistí a „hlási“ procesor pri vykonávaní programu
 Hlási = program „havaruje“
 Procesor nemôže vykonať požadovaný príkaz
 Delenie nulou, správa neexistujúcemu objektu,...
 Zákernosť behových chýb
o Nemusia sa prejaviť pri každom spustení programu
o „zavlečená“ – skutočná chyba je niekde skôr
Behové chyby – príklad (1)
Behové chyby – príklad (2)

Behové chyby – príklad (3)

Behové chyby – príklad (4)

Logické chyby
 Môže zistiť a „hlási“ používateľ programu
 Program pracuje, ale jeho výsledky sú nesprávne
 Najzákernejšie chyby
Logické chyby – príklad (1) Logické chyby – príklad (2)

Logické chyby – príklad (3)


Logické chyby – príklad (4) Logické chyby – príklad (5)

Logické chyby – príklad (6) Logické chyby – príklad (7)

Techniky boja s chybami


 Testovanie (testing)
 Ladenie (debugging)
 Písanie čitateľného kódu (readable code)
Testovanie
 proces overovania správneho fungovania programu
 testovanie fungovania časti aplikácie – testovanie komponentov
o „komponent“ – skupina tried, trieda, metóda, skupina metód
 testovanie interakcie častí aplikácie – integračné testovanie
 testovanie funkčnosti celej aplikácie – systémové testovanie
 testovanie vhodnosti aplikácie pre používateľa – akceptačné testovanie
Biela a čierna skrinka
 testovanie bielej skrinky
o k dispozícii aj vnútorný pohľad
o využívajú sa znalosti o implementácii
o napr. kontrola stavu objektu, kontrola podmienok podmienených príkazov a cyklov, ...
 testovanie čiernej skrinky
o k dispozícii je iba rozhranie
o kontrola reakcií na správu
o kontrola zhody očakávaných a získaných výsledkov
Pozitívne a negatívne testovanie
 pozitívne testovanie
o kontrola prípadov, v ktorých sa očakáva úspešný výsledok
o operácie nesmú zlyhať pre žiadnu z povolených vstupných hodnôt
 negatívne testovanie
o testovanie prípadov, v ktorých sa očakáva zlyhanie
o informovanie o chybe – kontrola
o objekt sa nesmie dostať do nekorektného stavu, ani ak dostane neplatné vstupy
Spôsoby testovania
 manuálne testovanie
 automatizované testovanie
Manuálne testovanie
 tester v úlohe používateľa (procesora)
 ideálne: tester nie je autor programu
 prechádzanie zdrojového kódu
o vizuálne prechádzanie štruktúrou programu
o kontrola algoritmov
o kontrola stavu objektu v rôznych fázach algoritmu vykonávanej testovanej metódy
 priama komunikácia s objektom
o napr. v prostredí BlueJ
o biela skrinka – využitie funkcie objekt inspector
Automatizované testovanie
 na testovanie sa vytvorí špecializovaný program – test
 test posiela správy testovanému programu, kontroluje odpovede
 výsledky prezentuje testerovi
Dôvody automatizovaného testovania
 testy sa vykonávajú opakovane
 manuálne testy
o zdĺhavé – náročné na čas
o náchylné na chyby – ľudský činiteľ
 automatizované testy
o rýchle vykonanie testu
o vždy rovnaký postup
o automatizácia rutinnej práce
Testy regresie
 zásah do programu
o rozšírenie programu
o oprava chyby v programe
 zistiť, či nebola narušená zvyšná funkcionalita programu
o opakovať všetky doteraz napísané testy
Testovacie triedy
 unit test
 autori: Beck, Gamma
 automatizované testovanie častí programu
 priama podpora v rôznych programovacích jazykoch
 Java – knižnica JUnit
Testovacia trieda v JUnit
 jedna trieda = niekoľko testov jednej jednotky
o názov končiaci slovom Test
 jedna metóda = jeden test
o verejná metóda
o bez parametrov a návratovej hodnoty
o Metóda musí byť označená ako @Test
Príklad testu v JUnit (1) Príklad testu v JUnit (2)
Príklad testu v JUnit (3)

Správa assertEquals/assertNotEquals
 assert = tvrdiť, uistiť sa
 vyhodnocuje rovnosť parametrov
o áno - test pokračuje
o nie - test končí chybou
 assertEquals môže byť v každom teste použitý ľubovoľný počet krát
 assertNotEquals = opak assertEquals
Správa assertTrue/assertFalse
 assert = tvrdiť, uistiť sa
 vyhodnocuje hodnota pravdivostného výrazu
o true - test pokračuje
o false - test končí chybou
 assertFalse = opak assertTrue
Prípravky
 rôzne testy môžu pracovať s rovnakými objektmi
 prípravky (fixtures) – objekty prístupné vo všetkých testoch v jednom unit teste
 reprezentované atribútmi testovacej triedy
 vytvárajú sa v špeciálnej metóde setUp
 vytvoria sa pred spustením každého testu
Príklad testu v JUnit, Fixtures

JUnit testy v prostredí BlueJ (1) JUnit testy v prostredí BlueJ (2)
Stavy vykonaných testových metód
 daná testová metóda bola vykonaná a test prešiel bez chýb
X Daná testová metóda bola vykonaná a test zlylal na niektorý assert
X Daná testová metóda bola vykonaná a test skončil behovou chybou

Detaily chyby v teste v prostredí BlueJ

Hranice testovania
 úplne otestovať každý program vo všeobecnosti nie je možné
 úspešný test nedokazuje, že program neobsahuje žiadnu chybu
 čím viac chýb sa v programe nájde, tým viac ich program obsahuje
 paradox pesticídov
 kombinácia viacerých spôsobov
Ladenie
 testovanie pomôže nájsť, že existuje chyba
 ladenie pomôže nájsť, kde sa tá chyba nachádza
Spôsoby ladenia
 manuálne prechádzanie kódu
 ladiace výpisy
 debugger
Manuálne prechádzanie kódu
 programátor otvorí zdrojový kód
 vizuálne prechádza zdrojový kód a hľadá chybu
o manuálne vykonáva príkazy – je v úlohe procesora
o zaznamenáva aktuálne hodnoty premenných
o vyhodnocuje aktuálnu správnosť algoritmu
 jeden z najčastejších spôsobov ladenia
Ladiace výpisy
 rozšírenie programu o výpisy aktuálneho stavu objektov a algoritmov pomocou správy System.out.println
 programátor vo výpise vidí, kde sa objekty/algoritmy dostali do nesprávneho stavu
 ladiace výpisy môžu byť podmienené
o zapoznámkovanie
o ako vetva neúplného podmieneného príkazu
 ladiace výpisy môžu byť do súboru
Debugger
 bug (chyba) = chyba v programe
 debugger – program asistujúci pri hľadaní chýb
o zobrazuje hodnoty všetkých dostupných premenných
o označuje príkaz, ktorý má byť aktuálne vykonaný
 krokovanie“ programu
 možnosť nastavenia zarážok (breakpoint)
 programátor vyhodnocuje správnosť dosiahnutého stavu

Debugger v BlueJ(1)

Debugger v BlueJ(2)

Ovládanie debuggera

Nájdenie chyby(1)

Nájdenie chyby(2)
Nájdenie chyby(3)

Nájdenie chyby(4)

Oprava chyby
 Oprava chyby – zmena zdrojového kódu
 regresné testovanie
Výsledok po oprave

Písanie čitateľného kódu


 Konvencie
 Samopopisné identifikátory
 Komentáre v zložitejších miestach algoritmu
 Dokumentačné komentáre
Dokumentácia – forma rozhrania
BlueJ – generovanie dokumentácie jednej triedy

BlueJ – generovanie dokumentácie celého projektu BlueJ – dokumentácia štandardnej knižnice

Javadoc
 Generátor dokumentácie objektu
 Špeciálne komentáre – dokumentačné komentáre
 Krátky popis nasledovaný tagmi
Javadoc – trieda – zdrojový kód

Javadoc – trieda – dokumentácia

Javadoc – konštruktor – zdrojový kód


Javadoc – konštruktor – dokumentácia detailná dokumentácia

Javadoc – metóda – zdrojový kód

Javadoc – metóda – dokumentácia

Javadoc – metóda – detailná dokumentácia

Prednáška č. 6
Spolupráca objektov
Asociácia – spolupráca objektov
 Asociácia – ľubovoľná spolupráca 2 objektov
o Príklady: klient a banka, učiteľ a študent
 Zvyčajne nezávislé životné cykly oboch objektov
 Spolupráca v konkrétnych situáci8ch
 (kompozícia = špeciálny typ asociácie)
Príklad: majiteľ – objekt

Príklad: majiteľ – auto cez kompozíciu 1 2

Príklad majiteľ – auto cez asociáciu 1 2

Projekt banka
 Zaznamenávanie stavu účtu klienta
 Klient, vie v ktorej banke má účet
 Banka nie je časť klienta
 Klient nie je časť banky
 Asociácia
UML diagram projektu – vonkajší pohľad

UML diagram projektu – vnútorný pohľad

Projekt banka – BlueJ


Trieda klient – konštruktor a inicializácia atribútov

Stav klienta po vytvorení inštancie

Hodnota null
 Null – objektový literál
 Null = referencia neodkazuje na žiadny objekt
 Pre referenciu na inštanciu ľubovoľnej triedy
o Typovo kompatibilná hodnota s ľubovoľným objektovým typom
Metóda stanSaKlientom v triede klient

Stav klienta po priradení banky

Metóda getNazovBanky v triede klient

Chyba pri poslaní správy getNazovBanky

Poslanie správy pri asociácii


 V niektorých prípadoch môže byť v objektovej premennej null
 Poslanie správy spadne na behovú chybu
 Je nutné kontrolovať
Metóda getNazovBanky v triede klient
Relačné výrazy s objektami
 Relačné operátory pre čísla
o <, <=, >, >=, ==, !=
 Relačné operátory pre objekty
o ==, !=
 Porovnanie referencií na objekty
o Referencia1 == referencia2
 == porovnanie dvoch referencii (napr. v dvoch premenných)
o True – dve referencie na ten istý objekt
o False – dve referencie na dva rôzne objekty
 != opak operátora ==
String – „==“ a equals
 dve rôzne referencie na ten istý reťazec
 dva rôzne reťazce – rovnaký obsah
 relačný operátor „==“
o „==“ – porovnanie referencií na reťazce
o true – referencie na ten istý reťazec
 správa equals
o equals – porovnanie obsahov reťazcov
o true – rovnaký obsah dvoch reťazcov
 reťazec1 == reťazec2 – true
 reťazec1.equals(reťazec2) – true

 POZOR: opačná implikácia neplatí


 reťazec1.equals(reťazec2) – true
 reťazec1 == reťazec2 – true

 Dva rôzne objekty s rovnakým stavom


o nazovA.equals(nazovB) – true
o nazovA == nazovB – false
Zánik inštancie
 životný cyklus inštancie
o vznik inštancie – špeciálna správa „new“ triede
o poskytovanie služieb – prijímanie správ a reakcie na ne
o zánik inštancie – ???
 zrušenie inštancie sa stará zberná služba – garbage collector
 kedy?
o zberná služba ruší objekt v prípade, že naň neexistuje žiadna referencia
o null = referencia neodkazuje na žiadny objekt
Referencie v BlueJ
Zánik objektov pri kompozícii

Zánik objektov pri asociácii (1)

Zánik objektov pri asociácii (2)


Zánik objektov pri asociácii (3)

Zánik objektov pri asociácii (4)

Hodnota null – úlohy


 Null = referencia neodkazuje na žiadny objekt
 Inicializácia objektovej premennej
 Zrušenie referencie (popr. Zánik inštancie
o Priraďovací príkaz
o Premenna = null
 Adresát nie je určený
o Podmienka pre odoslanie správy
o Premenna != null
Metóda vyberPeniaze v klientovi

 Zmení stav účtu


 Nesmie dovoliť sumu mimo rozsah
o min 0 (vyjme)
o max this.stavUctu
Zložená podmienka

Metóda vyberPeniaze v klientovi

Zložená podmienka

Logické operátory
 Matematické formy
o a, B
o a   b
o a b
o a   a súčasne   b
 programovací jazyk Java
o a   a súčasne   b
Metóda vyberPeniaze v klientovi

Logické operátory
Priorita logických operátorov

Použitie logických operátorov


 Unárny operátor !
 Binárne operátory && a 
 Operandy – vždy logická, typ boolen
 Hodnota logického výrazu – logická, typ boolen

Pravdivostné tabuľky

Skrátené vyhodnocovanie
 False && čokoľvek = false
 True  čokoľvek = true
 Príklad:
 Správa sa nepošle, ak je this.banka null
Zmeny na účte – výber z účtu

Zmeny na účte – vklad na účet

Zmeny na účte – problém


 zmena stavu sa vykonáva na viac miestach
 vadí?
o pravdepodobne nie
o ale:
 v budúcnosti viac operácií (zarátanie poplatkov, spracovanie výpisu, uchovanie informácií v
súbore,...)
 v budúcnosti na viac miestach (zarátanie úrokov, prevody medzi účtami, ...)
 riešenie:
o jedna metóda so zmenou stavu účtu
o ostatné metódy ju využívajú

Posielanie správ sám sebe


 kompozícia – objekt celok posiela správy častiam
 asociácia – objekt posiela správy spolupracujúcim objektom
 objekt posiela správy sám sebe
 formát správy
o adresát.selektor(parametre)
 objekt sám seba označuje this

Posielanie správy sám sebe (1)

Posielanie správy sám sebe (2)

zmenStavUctu

Sekcia rozhrania
 Verejné – obsahuje správy, ktoré môže poslať ľubovoľný objekt
o Definícia triedy obsahuje metódy public
 Súkromné – obsahuje správy, ktoré si môže poslať len objekt sám
o Definícia triedy obsahuje metódy private
Súkromné rozhranie

Súkromné rozhranie v UML

You might also like