PDF

Tvorba tried

Druhá prednáška

Formát
PDF
Veľkosť
2,6 MB
Pridané
Stiahnutí
1 338
Stiahnuť PDF · 2,6 MB

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

Otvoriť AI: ChatGPT · Claude · Gemini

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.