PDF

Trieda

Jedenásta prednáška

Formát
PDF
Veľkosť
2,7 MB
Pridané
Stiahnutí
1 307
Stiahnuť PDF · 2,7 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

Ď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

wnloads/index.html

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.