Trieda
Jedenásta prednáška
Stiahnuť PDF · 2,7 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
Ďalšie vlastnosti triedy
Informatika 1
Pojmy zavedené v 10. prednáške(1)
• zapuzdrenie
– vonkajší vs. vnútorný pohľad
– modifikátory prístupu
– ukrývanie informácií
• bodková notácia na prístup ku atribútom
Informatika 1
1
Pojmy zavedené v 10. prednáške(2)
• dokumentácia objektu
– forma rozhrania
– dokumentačné komentáre
– javadoc – jazyk Java
• tagy @author, @version, @param, @return
Informatika 1
2
Pojmy zavedené v 10. prednáške(3)
• trieda ako objekt
– atribúty triedy
– metódy triedy
– kľúčové slovo static
• návrhový vzor Singleton
– súkromný konštruktor
Informatika 1
3
Pojmy zavedené v 10. prednáške(3)
• konštantné atribúty
• kľúčové slovo final
– nemeniteľné objekty
• preťažovanie správ a metód
Informatika 1
4
Cieľ prednášky
• trieda ako objekt – dokončenie
• trieda ako množina svojich inštancií
– enum
• algoritmizácia
– switch
• príklad: míny – pokračovanie
Informatika 1
5
Atribúty triedy
• definícia – kľúčové slovo static
• inicializácia – spojená s definíciou
Informatika 1
6
private static final Obtiaznost[] aObtiaznosti = {
new Obtiaznost("Lahka", 10, 9, 9),
new Obtiaznost("Stredna", 40, 16, 16),
new Obtiaznost("Tazka", 99, 16, 30)
};
private static Aplikacia aInstancia;
private static Aplikacia aInstancia = null;
Metódy triedy(1)
• definícia – kľúčové slovo static
Informatika 1
7
public static Aplikacia dajInstanciu()
{
...
}
Metódy triedy(2)
• použitie – poslanie správy triede
– BlueJ
– Java – zdrojový text
Informatika 1
8
Aplikacia miny = Aplikacia.dajInstanciu();
Míny – ďalšia požiadavka
• poskytovanie informácií o stave hry
– výhra
– prehra
• metóda dajStavHry()
Informatika 1
9
Vyjadrenie stavu hry(1)
• nový atribút aVyhral
– true – hráč vyhral
– false – hráč prehral
• problémy:
1. aký stav je v priebehu hry?
• true – nie, hráč ešte nevyhral
• false – nie, hráč ešte neprehral
Informatika 1
10
Vyjadrenie stavu hry v priebehu hry
• ďalší nový atribút aHraSkoncila
– false – hra ešte neskončila
– true – hra už skončila, výsledok je v aVyhral
• problémy:
1. ak hra ešte neskončila, dotazom na aVyhral
dostaneme vždy nesprávnu odpoveď
2. programátorská pýcha nedovolí také primitívne
riešenie
Informatika 1
11
Vyjadrenie stavu hry(2)
• možné stavy:
– nerozhodnuta – hra ešte neskončila
– vyhra – hráč vyhral
– prehra – hráč stupil na mínu
• záver: dve hodnoty nestačia, treba tri
Informatika 1
12
Vyjadrenie stavu hry(3)
• možné stavy – číslovanie stavov:
– hodnota 0 – hra ešte neskončila
– hodnota 1 – hráč vyhral
– hodnota 2 – hráč stupil na mínu
• problémy:
1. neprehľadné, pri pohľade na zdrojové kódy nie je jasný
význam čísla
2. pri preklade neoznámi prekladač nesprávnu hodnotu
(-1, 3, ...)
3. programátorská hrdosť nedovolí také primitívne riešenie
Informatika 1
13
Vyjadrenie stavu hry(4)
• možné stavy – označenie reťazcami:
– hodnota "nerozhodnuta" – hra ešte neskončila
– hodnota "vyhral" – hráč vyhral
– hodnota "prehral" – hráč stupil na mínu
• problémy:
1. pri preklade neoznámi prekladač nesprávnu
hodnotu (preklepy)
2. programátorská hrdosť nedovolí také primitívne
riešenie
Informatika 1
14
Vyjadrenie stavu hry(5)
• riešenie – vymenovaný typ – enum
• extenzia triedy – množina všetkých inštancií
triedy.
• enum – trieda s konštantnou extenziou.
• enum – trieda s pevne určenými inštanciami.
• enum – konštantná množina objektov
– obsahuje svoje inštancie ako nemenné objekty
Informatika 1
15
Enum StavHry
public enum StavHry
{
nerozhodnuta,
vyhra,
prehra;
}
Informatika 1
16
zoznam inštancií
– extenzia triedy StavHry
17
Informatika 1
Enum – StavHry
Použitie enum StavHry – trieda Hra(1)
public class Hra
{
private StavHry aStav;
public Hra(...)
{
aStav = StavHry.nerozhodnuta;
...
Informatika 1
18
Použitie enum StavHry – trieda Hra(2)
if (aStav == StavHry.vyhra) {
...
}
...
System.out.println(aStav);
Informatika 1
19
Enum – špeciálna trieda
• zjednodušená syntax
• inštancie môžu mať atribúty
• inštancie môžu mať metódy
Informatika 1
20
Míny – ďalšia požiadavka
• informácie o stave políčka
– enum
– toString vracia reťazec, ktorý sa má vypísať do
terminálu
Informatika 1
21
Enum - StavPolicka(1)
private final String aReprezentacia;
StavPolicka(String paReprezentacia)
{
aReprezentacia = paReprezentacia;
}
public String toString()
{
return aReprezentacia;
}
}
Informatika 1
22
Enum - StavPolicka(2)
public enum StavPolicka
{
zakryte("."),
oznacene("F"),
ukazanaMina("+"),
prazdne(" "),
odkryte("n"),
vybuchnute("*");
...
Informatika 1
23
BlueJ – diagram tried
Informatika 1
24
Enum v UML(1)
Informatika 1
25
atribúty
-public
-static
stereotyp
trieda
Enum v UML(2)
Informatika 1
26
atribúty
-public
-static
stereotyp
Enum ako nemeniteľný objekt
• Java umožnuje aj zmenové metódy pre inštancie
enum
• Inštancie enum majú byť nemeniteľné
• Zmena stavu inštancii enum je považovaná za
nesprávny postup
Informatika 1
27
Trieda ako množina
• trieda má extenziu – množinu inštancií
• ak zanedbáme ostatné vlastnosti – trieda
reprezentuje množinu inštancií daného typu
• enum – konštantná množina
Informatika 1
28
Pohľady na triedu – zhrnutie(1)
1. trieda ako objekt
– vonkajší pohľad
• rozhranie – správy triede
– vnútorný pohľad
• atribúty triedy
• metódy triedy
Informatika 1
29
Pohľady na triedu – zhrnutie(2)
2. trieda ako továreň
– hlavná úloha triedy – vytvárať inštancie
– špeciálna správa new – žiadosť o novú inštanciu
3. trieda ako šablóna
– potreba poznať štruktúru inštancie pri vytváraní
– definícia vnútorného pohľadu na inštancie
• atribúty inštancie
• metódy inštancie
Informatika 1
30
Pohľady na triedu – zhrnutie(3)
4. trieda ako typ
– predstavuje typ inštancie
– definícia premenných (atribúty, parametre, lokálne
premenné)
– definícia typu návratovej hodnoty
5. trieda ako množina
– extenzia triedy – množina všetkých inštancií danej
triedy
– špecifický prípad – enum
Informatika 1
31
Vetvenie pomocou enum
• porovnanie inštancií enum na rovnosť referencií
• podmienené vykonanie:
Informatika 1
32
if (aStav == StavHry.vyhra) {
...
}
Viaccestné vetvenie – UML
Informatika 1
33
Vetvenie pomocou enum – else if
if (aStav == StavHry.vyhra) {
...
} else if (aStav == StavHry.prehra) {
...
} else if (aStav == StavHry.nerozhodnuta) {
...
}
Informatika 1
34
Vetvenie pomocou enum – switch
switch (aStav) {
case vyhra:
...
break;
case prehra:
...
break;
case nerozhodnuta:
...
break;
}
Informatika 1
35
Príkaz switch
• príkaz switch – viaccestné vetvenie
• výraz
– musí byť buď celočíselný výraz, alebo výraz typu
enum
– porovnáva s možnosťami
Informatika 1
36
switch (výraz) {
// možnosti a vetvy
}
Príkaz swich – case (návestie)
• možnosti musia byť konštantné celočíselné
výrazy, alebo hodnoty enum
– typovo kompatibilné s výrazom v príkaze switch
– Java 7 – aj reťazce
• pri enum sa nedáva identifikátor triedy
Informatika 1
37
case moznost1:
case moznost2:
...
// príkazy vetvy
Ukončenie vetvy
• každá vetva má byť ukončená
– príkaz return – ukončenie vykonávania metódy
– príkaz break – ukončenie vykonávania príkazu switch
– chýbajúce ukončenie
• prekladač jazyka Java neupozorní
• vykonávanie pokračuje ďalšou vetvou
Informatika 1
38
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
Informatika 1
39
default:
// príkazy vetvy
Java mimo BlueJ
Práca v prostredí BlueJ
• priama komunikácia s objektmi
– posielanie správ triedam – vytváranie nových inštancií
– posielanie správ inštanciám – práca s objektmi
• nástroje na zjednodušenie vývoja, testovanie
aplikácií
Aplikácia mimo BlueJ
• dve formy programu
– zdrojový kód – číta/píše programátor
– cieľový kód – vykonáva počítač
• šíriť sa dajú obe formy
• používateľ – cieľový kód určený na vykonanie
Informatika 1
42
Cieľový kód
• obsahuje priamo počítaču známe príkazy –
inštrukcie
• sada inštrukcií môže byť rôzna
Informatika 1
43
Výpočtová platforma
• hardvér + softvér nutný na spustenie programu
• typicky
– počítačová architektúra
– operačný systém (MS Windows, Linux, BSD, Unix,
MacOS, Symbian, Android, iOS...)
– programovací jazyk (Java...)
– knižnice
– ...
Informatika 1
44
Výpočtová platforma Java(1)
• programy v jazyku Java nevykonáva priamo
procesor počítača
• sú vykonávané virtuálnym počítačom Java
(jvm – Java Virtual Machine)
• platformou pre vývoj a spustenie programu v
jazyku Java
• nezávislosť od operačného systému a hardvéru
skutočného počítača
– stačí mať nainštalovanú platformu Java
Informatika 1
45
46
Informatika 1
Výpočtová platforma Java(2)
Jazyk Java
Vývojové nástroje
Prekladač
Javadoc
Java archív
Java spúšťač
Štandardná knižnica
java.lang
java.util
java.io
Virtuálny počítač Java
Operačný systém
Edície platformy Java
• Java Card
– Java pre čipové karty
• Java ME (Mobile Edition)
– Java pre mobilné telefóny
• Java SE (Standard Edition)
– Java pre štandardné použitie
• Java EE (Enterprise Edition)
– Java pre komplexné informačné systémy
Informatika 1
47
Dva typy inštalácie platformy Java(1)
• JRE – Java runtime environment
– spúštacie prostredie Java – spúštanie programov v
jazyku Java
• JDK – Java developement kit
– vývojové prostredie Java – vývoj programov v jazyku
Java (obsahuje aj JRE)
• Zadarmo na
– http://www.oracle.com/technetwork/java/javase/do
Informatika 1
48
JDK
–
V
ýv
ojo
vé p
ros
tr
ed
ie
JRE
Spúš
tac
ie
pr
os
tr
edie
49
Informatika 1
Dva typy inštalácie platformy Java(2)
Jazyk Java
Vývojové nástroje
Prekladač
Javadoc
Java archív
Java spúšťač
Štandardná knižnica
java.lang
java.util
java.io
Virtuálny počítač Java
Operačný systém
Spustenie programu bez BlueJ
• treba mať nainštalované JRE
• treba mať preložený program vo forme
– class súborov,
– alebo jar súboru.
• aspoň jedna trieda musí vedieť prijať správu
main.
Informatika 1
50
Správa main
• vstupný bod programu
• špeciálna verejná správa triede
• Trieda.main(parametre)
– parametre – zoznam parametrov zadaných
používateľom
• spúšťač Java ju posiela zadanej triede ihneď po
spustení programu
! po ukončení vykonávania priradenej metódy
program končí
Informatika 1
51
Metóda main
• priradená správe main
• príkazy vykonané v tele sa vykonajú ihneď po
spustení programu
• po ukončení vykonávania metódy main program
končí
Informatika 1
52
public static void main(String[] paParametre)
{
// telo metódy
}
Program HelloWorld
• najznámejší program implementovaný asi v
každom jazyku
Informatika 1
53
public class HelloWorldApplication
{
public static void main(String[] paParametre)
{
System.out.println("Hello world!");
}
}
Súbory v adresári s projektom
• package.bluej
– dáta ku projektu (pozície tried v diagrame...)
používané programom BlueJ
• README.txt – popis projektu napísaný v
programe BlueJ
Informatika 1
54
Súbory v adresári s projektom
• Pre každú triedu:
– HelloWorldApplication.java
• zdrojový kód triedy – jazyk Java
– HelloWorldApplication.class
• cieľový kód triedy
– HelloWorldApplication.ctxt
• Info o triede používané programom BlueJ
Informatika 1
55
Preložený program
• triedy – súbory s príponou class
• jedna z tried musí obsahovať metódu main
• spustenie programu
– príkaz (v adresári s projektom):
Informatika 1
56
java TriedaSMetodouMain
Názov triedy obsahujúcej
metódu main
Java spúšťač
57
Informatika 1
Ako spustiť preložený program(1)
58
Informatika 1
Ako spustiť preložený program(2)
príkaz cd c:\cesta\ku\programu
cesta vyjadruje cestu ku projektu v BlueJ
59
Informatika 1
Ako spustiť preložený program(3)
príkaz java –cp . HelloWorldApplication
pošle správu main triede HelloWorldApplication
60
Informatika 1
Ako spustiť preložený program(4)
Spustenie – jednoduchšie
• v adresári s projektom:
• windows – dávkový súbor
– HelloWorldApplication.bat
• ostatné OS – shell skript
– HelloWorldApplication.sh
– nastaviť práva na spustiteľný
Informatika 1
61
java HelloWorldApplication
#!/bin/sh
java -cp . HelloWorldApplication
Distribúcia programu
• na iný počítač treba nakopírovať
• súbory s príponou class – triedy preložené do
cieľového kódu
• dávkový súbor/shell skript – na jednoduché
spúšťanie programu
Informatika 1
62
Súbory jar
• jar – Java Archive – archív obsahujúci všetky
súbory nutné na spustenie programu
– hlavne súbory class
• jednoduchšia distribúcia
Informatika 1
63
Vytvorenie jar v nástroji BlueJ(1)
Informatika 1
64
Vytvorenie jar v nástroji BlueJ(2)
• dôležité: vybrať triedu, ktorá obsahuje metódu
main
Informatika 1
65
Programy vo formáte jar
• vo Windows sa dajú spúšťať dvojkliknutím na
súbor
• neotvárajú konzolu
• riešenie – dávkový súbor/shell skript s príkazom:
Informatika 1
66
java -jar helloWorldApplication
Názov jar súboru
Komunikácia s používateľom
• prostredníctvom terminálu
– vstup z klávesnice
– výstup do okna terminálu
• grafické prostredie
– budúci semester
Informatika 1
67
Používateľský vstup
• trieda Scanner
– rovnako ako čítanie zo súboru
• objekt System.in ako parameter konštruktora
Informatika 1
68
Scanner vstup = new Scanner(System.in);
Kalkulačka
import java.util.Scanner;
public class KalkulackaApplication
{
public static void main(String[] paParametre)
{
Scanner vstup = new Scanner(System.in);
System.out.println("Zadaj dve cisla");
int prve = vstup.nextInt();
int druhe = vstup.nextInt();
System.out.println("Sucet je " + (prve + druhe));
}
}
Informatika 1
69
Kalkulačka výstup(1)
Informatika 1
70
Kalkulačka výstup(2)
Informatika 1
71
Kalkulačka výstup(3)
Informatika 1
72
Vďaka za pozornosť
Automaticky vygenerovaný textový náhľad. Pre plné formátovanie si stiahnite súbor.
nechodím na prednášky