Tvorba tried
Druhá prednáška
Stiahnuť PDF · 2,6 MBPreber si túto poznámku so svojou AI
Skopíruj pripravený podklad a vlož ho do ChatGPT, Claude alebo inej AI — bude ťa učiť alebo skúšať len z tejto poznámky.
Náhľad poznámky
Tvorba tried
Informatika 1
Pojmy zavedené v 1. prednáške(1)
• objekt
– verejná časť
• rozhranie – správy
– neverejná časť
• atribúty – stav objektu
• metódy – chovanie objektu
Informatika 1
1
Pojmy zavedené v 1. prednáške(2)
• delenie objektov
– trieda
– inštancia
• životný cyklus inštancie
– vznik
– správa triede, konštruktor; začiatočný
stav
– život objektu – poskytovanie služieb
– zánik
– garbage collector, „recyklácia“
Informatika 1
2
Pojmy zavedené v 1. prednáške(3)
• správa
– adresát
– selektor – pomenovanie správy
– parametre
• vstupné
• výstupné (návratová hodnota)
– príklad správy
• kruhModry.posunVodorovne(in 100)
Informatika 1
3
Cieľ prednášky
• vytváranie triedy – metatrieda
• vytváranie triedy – priama definícia
• vytváranie triedy – Java
• Príklad: automat na cestovné lístky
Informatika 1
4
5
Informatika 1
Objekt, trieda a inštancia
Trieda
Inštancia
Inštancia
Vytváranie tried – metatrieda
• „továreň“ na objekty – trieda
• trieda je tiež objekt
• Aká „továreň“ vyrobí triedu?
• Jedno riešenie – metatrieda, továreň na triedy.
– Smalltalk, Python
Informatika 1
6
Priamo definovaný objekt
• Iný spôsob vytvorenia objektu je vytvoriť ho bez
triedy, jednorazovo.
• Celý objekt priamo nadefinujeme.
• Takto vytvorenému objektu budeme hovoriť
priamo definovaný objekt.
Informatika 1
7
Delenie programovacích jazykov
• založené na triedach – najpočetnejšia skupina
– triedy ako inštancie metatriedy
• Smalltalk, Python, ...
• čisté objektové jazyky
– triedy ako priamo definované objekty
• (Object) Pascal, C++, C#, Java, ...
• hybridné objektové jazyky
• najviac jazykov
• založené na objektoch
– podporované v málo jazykoch
• JavaScript, Self, ...
Informatika 1
8
Delenie programovacích jazykov
• založené na triedach – najpočetnejšia skupina
– triedy ako inštancie metatriedy
• Smalltalk, Python, ...
• čisté objektové jazyky
– triedy ako priamo definované objekty
• (Object) Pascal, C++, C#, Java, ...
• hybridné objektové jazyky
• najviac jazykov
• založené na objektoch
– podporované v málo jazykoch
• JavaScript, Self, ...
Informatika 1
9
Trieda ako šablóna
• súhrn informácií na vytvorenie inštancie
– rozhranie
– atribúty
– metódy
Informatika 1
10
Postup pri vytváraní tried
• abstrakcia (zjednodušenie) reálneho objektu
– slovná – textová charakteristika inštancií triedy
• grafické znázornenie pomocou diagramu tried v
UML – UML .FRI
• definícia triedy v programovacom jazyku Java
– zdrojový kód – v nástroji Editor BlueJ
Informatika 1
11
Postup pri vytváraní tried
• abstrakcia (zjednodušenie) reálneho objektu
– slovná – textová charakteristika inštancií triedy
• grafické znázornenie pomocou diagramu tried v
UML – UML .FRI
• definícia triedy v programovacom jazyku Java
– zdrojový kód – v nástroji Editor BlueJ
Informatika 1
12
Automat na cestovné lístky
Informatika 1
13
Automat na cestovné lístky – služby
• prvá verzia – primitívny automat
• Lístky majú jednu cenu (napr. jednopásmové
lístky na MHD v Žiline).
• Automat prijíma peniaze (mince).
• Automat zobrazuje vloženú čiastku – súčet
vhodených mincí pred vydaním lístka.
• Automat tlačí lístok.
Informatika 1
14
AutomatMHD – rozhranie triedy
• správa – žiadosť o vytvorenie automatu
– vytvorAutomat(in paCenaListka, out paAutomat)
Informatika 1
15
AutomatMHD – rozhranie inštancie
• zobrazenie ceny lístka
– dajCenuListka(out paCenaListka)
• zobrazenie doteraz vloženej čiastky
– dajVlozenuCiastku(out paVlozenaCiastka)
• vloženie mince
– vlozMincu(in paHodnotaMince)
• vytlačenie lístka
– tlacListok()
Informatika 1
16
AutomatMHD – vlastnosti
• cena lístka v centoch
– celé číslo
• aktuálne vložená čiastka v centoch
– celé číslo
• celková tržba od posledného vybrania peňazí
zamestnancom
– celé číslo
Informatika 1
17
Postup pri vytváraní tried
• abstrakcia (zjednodušenie) reálneho objektu
– slovná – textová charakteristika inštancií triedy
• grafické znázornenie pomocou diagramu tried v
UML – UML .FRI
• definícia triedy v programovacom jazyku Java
– zdrojový kód – v nástroji Editor BlueJ
Informatika 1
18
Model triedy v UML
Informatika 1
19
AutomatMHD – rozhranie
Informatika 1
20
AutomatMHD – atribúty a metódy
Informatika 1
21
AutomatMHD – BlueJ
Informatika 1
22
BlueJ – rozhranie triedy
Informatika 1
23
BlueJ – rozhranie inštancie
Informatika 1
24
BlueJ – rozhranie inštancie
Informatika 1
25
Postup pri vytváraní tried
• abstrakcia (zjednodušenie) reálneho objektu
– slovná – textová charakteristika inštancií triedy
• grafické znázornenie pomocou diagramu tried v
UML – UML .FRI
• definícia triedy v programovacom jazyku Java
– zdrojový kód – v nástroji Editor BlueJ
Informatika 1
26
Definícia triedy – Java
hlavička triedy
{
telo triedy
}
Informatika 1
27
Definícia triedy – 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
Informatika 1
28
public class AutomatMHD
Definícia triedy – telo
• definície atribútov
• definície konštruktorov
• definície metód
• poradie je konvenciou
Informatika 1
29
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
• aCenaListka – identifikátor, názov atribútu
• ; (bodkočiarka) – ukončenie definície atribútu
Informatika 1
30
private int aCenaListka;
private int aVlozenaCiastka;
private int aTrzba;
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 Jave – primitívne a objektové
Informatika 1
31
Primitívne dátové typy – pre celé čísla
• celočíselné typy – pre rôzne konečné podmnožiny
množiny celých čísel
– byte <-27, 27 - 1>, 27 = 128
– short <-215, 215 - 1>, 215 = 32.768
– int <-231, 231 - 1>, 231 = 2.147.483.648
– long <-263, 263 - 1>, 263 = 9.223.372.036.854.775.808
Informatika 1
32
Primitívne dátové typy – pre reálne čísla
• pohyblivá rádová čiarka – pre rôzne konečné
podmnožiny racionálnych čísel
– float
– (±) ~1,4 × 10-45 – (±) ~3,4 × 1038
– ±1.4e-45
– ±3.4e38
– double
– (±) ~4,9 × 10-324 – (±) ~1,8 × 10308
– ±4.9e-324
– ±1.8e308
Informatika 1
33
Obmedzenia číselných typov
• Neplatia vždy zákony asociatívny, komutatívny a
distributívny pre aritmetické operácie!
• a = 2
31 – 1
• a + a = – 2
Informatika 1
34
Primitívne dátové typy – ostatné
• boolean – typ pre logické hodnoty, môže
nadobúdať jednu z dvoch hodnôt
– true – pravda, áno, ...
– false – nepravda, nie, ...
• char – typ pre jeden znak z množiny znakov
Unicode; písanie textov zvyčajným spôsobom v
rôznych jazykoch
– môže obsahovať ľubovoľný znak z 65,535 znakov
Unicode
Informatika 1
35
Objektový typ String
• String – reťazec znakov
– obsahuje ľubovoľnú postupnosť znakov unicode
Informatika 1
36
Definícia triedy – konštruktor
hlavička konštruktora
{
telo konštruktora
}
Informatika 1
37
Definícia triedy – hlavička konštruktora
• 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 paCenaListka) – zoznam formálnych
parametrov konštruktora
Informatika 1
38
public AutomatMHD(int paCenaListka)
Formálne parametre
• konštruktory a metódy
• príklad: jednoprvkový zoznam
• () – ohraničenie zoznamu
• dvojica int paCenaListka – parameter
– int – typ hodnoty prenášanej parametrom
– paCenaListka – identifikátor, názov parametra
Informatika 1
39
public AutomatMHD(int paCenaListka)
Skutočné parametre
Informatika 1
40
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
Informatika 1
41
aCenaListka = paCenaListka;
aVlozenaCiastka = 0;
aTrzba = 0;
Definícia triedy – konštruktor
public AutomatNaListky(int paCenaListka)
{
aCenaListka = paCenaListka;
aVlozenaCiastka = 0;
aTrzba = 0;
}
Informatika 1
42
43
Informatika 1
Vytvorenie a inicializácia inštancie
???
???
???
paCenaListka
???
aCenaListka = paCenaListka;
aVlozenaCiastka = 0;
aTrzba = 0;
500
Priraďovací príkaz
• príklad:
• nie je to rovnica!!!
• aTrzba – ľavá strana priraďovacieho príkazu
• = (rovná sa) – operátor priradenia
• 0 – výraz
• ; (bodkočiarka) – ukončenie príkazu
Informatika 1
44
aTrzba = 0;
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:
– aTrzba = 0;
– int i = 100000;
– boolean vysledok = true;
– char velkeC = 'C';
– double d1 = 123.4;
– String nazov = "Školská linka FRI";
Informatika 1
45
Definícia triedy – metóda
hlavička metódy
{
telo metódy
}
Informatika 1
46
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
• dajCenuListka – identifikátor, názov metódy
• () – zoznam formálnych parametrov – môže byť aj
prázdny, zátvorky však musia byť
Informatika 1
47
public int dajCenuListka()
Typ návratovej hodnoty
• príklad:
• Java – jediný tvar výstupného parametra (out)
• metóda môže mať len jeden výstupný parameter
• void – kľúčové slovo, označenie typu návratovej
hodnoty, ak metóda neposkytuje žiadnu
výstupnú informáciu (správa, ktorej je metóda
priradená nemá výstupný parameter)
Informatika 1
48
public int dajCenuListka()
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.
Informatika 1
49
return aCenaListka;
Definícia triedy – metóda
public int dajCenuListka()
{
return aCenaListka;
}
Informatika 1
50
Príkaz návratu/príkaz return
• príklad:
• return – kľúčové slovo; uvádza príkaz, ktorým
metóda vracia hodnotu
• aCenaListka – výraz, určuje návratovú hodnotu
– typ musí sedieť s typom návratovej hodnoty metódy
• ; (bodkočiarka) – koniec príkazu
• posledný vykonaný príkaz v tele metódy
Informatika 1
51
return aCenaListka;
52
Informatika 1
Návratový typ a príkaz návratu
public int dajCenuListka()
return aCenaListka;
return 5; // EUR
return 5.50; // EUR
private int aCenaListka;
Konštruktor a metóda – rozdiely
• konštruktor:
– identifikátor konštruktora je vždy zhodný s
identifikátorom triedy
– nikdy nemá typ návratovej hodnoty
• metóda:
– identifikátor metódy je vždy zhodný so selektorom
správy
– má vždy typ návratovej hodnoty
– môže mať návratovú hodnotu
Informatika 1
53
Metódy a stav objektu(1)
• prístupové – poskytujú informáciu súvisiacu so
stavom objektu
• najčastejšie prostredníctvom návratovej hodnoty
Informatika 1
54
public int dajCenuListka()
{
return aCenaListka;
}
Metódy a stav objektu(2)
• zmenové – menia stav objektu
• stav objektu je iný pred vykonaním zmenovej
metódy a iný po jej vykonaní.
Informatika 1
55
public void vlozMincu(int paHodnotaMince)
{
aVlozenaCiastka = aVlozenaCiastka + paHodnotaMince;
}
56
Informatika 1
Metódy a stav objektu(3)
Vykonanie priraďovacieho príkazu(1)
priraďovací príkaz NIE JE ROVNICA!!!
Informatika 1
57
aVlozenaCiastka = aVlozenaCiastka + paHodnotaMince;
aVlozenaCiastka = aVlozenaCiastka + paHodnotaMince
0 = paHodnotaMince
Vykonanie priraďovacieho príkazu(2)
priraďovací príkaz NIE JE ROVNICA!!!
Informatika 1
58
aVlozenaCiastka = aVlozenaCiastka + paHodnotaMince;
aVlozenaCiastka + paHodnotaMince
0
+ 50
aVlozenaCiastka = 50;
výraz
Tlač z metód – print, println(1)
• System.out – objekt zabudovaný do Javy pre tlač
do okna terminálu
• print(aCenaListka) – správa – žiadosť o tlač
hodnoty atribútu aCenaListka
• println(aCenaListka) – správa – žiadosť o tlač
hodnoty atribútu aCenaListka a prechod na nový
riadok
Informatika 1
59
System.out.print(aCenaListka);
Tlač z metód – print, println(2)
• 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)
Informatika 1
60
61
Informatika 1
Tlač z metód – print, println(3)
System.out.print(aCenaListka);
62
Informatika 1
Tlač z metód – print, println(4)
System.out.println(" centov");
63
Informatika 1
Tlač z metód – print, println(4)
System.out.println("Skolska linka FRI");
Komentáre
• komentár – vysvetľujúci text pre ľudí čítajúcich
zdrojový text programu.
• jednoriadkový komentár – od // do konca riadku
Informatika 1
64
// suma vlozenych minci pred tlacou listka
private int aVlozenaCiastka;
// celkova suma penazi za vsetky listky
private int aTrzba;
Viacriadkový komentár
• príklad
• /* – úvodné znaky viacriadkového komentára
• /** – úvodné znaky dokumentačného komentára
• */ – ukončujúce znaky komentára
Informatika 1
65
/ * Trieda modeluje primitívny automat
* na predaj cestovných lístkov.
* Model predpokladá, že kupujúci vloží
* čiastku presne podľa ceny lístka.
*/
Použitie komentárov
• nad komentovaný riadok
• uvádzame:
– informácie, ktoré nie sú priamo zrejmé zo zdrojového
textu
– dôvody pre niektoré riešenia
• dokumentačný komentár slúži na automatické
generovanie dokumentácie.
– popisuje chovanie triedy/metódy/konštruktora
Informatika 1
66
Metóda tlacListok(1)
/ **
* Vytlaci cestovny listok,
* pripocita vlozenu ciastku k trzbe a
* vynuluje vlozenu ciastku
*/
public void tlacListok()
{
…
}
Informatika 1
67
Metóda tlacListok(2)
// tlac listka do okna konzoly
System.out.println("*************************");
System.out.println("* Skolska linka FRI");
System.out.println("* Cestovny listok");
System.out.print ("* cena ");
System.out.print (aCenaListka);
System.out.println(" centov");
System.out.println("*************************");
System.out.println();
…
Informatika 1
68
Metóda tlacListok(3)
…
// pripocitaj vlozenu ciastku k trzbe
aTrzba = aTrzba + aVlozenaCiastka;
// nuluj vlozenu ciastku
aVlozenaCiastka = 0;
Informatika 1
69
Výstup metódy tlacListok
Informatika 1
70
Vďaka za pozornosť
Automaticky vygenerovaný textový náhľad. Pre plné formátovanie si stiahnite súbor.
nechodím na prednášky