PDF

Skladanie objektov

Štvrtá prednáška

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

Skladanie objektov

Informatika 1

Pojmy zavedené v 3. prednáške(1)

• algoritmus

– vlastnosti
– procesor

Informatika 1

1

Pojmy zavedené v 3. prednáške(2)

• štruktúrované programovanie

– základné konštrukčné prvky

• postupnosť – sekvencia
• vetvenie – alternatíva

– grafické znázornenie v UML

• vetvenie v jazyku Java – príkaz if

– blok

Informatika 1

2

Pojmy zavedené v 3. prednáške(3)

• Výrazy

– aritmetický

• aritmetické operátory – unárne, binárne

– logický

• relačné operátory

– priorita operátorov
– zátvorky vo výrazoch
– typová kompatibilita

Informatika 1

3

Pojmy zavedené v 3. prednáške(4)

• identifikátory

– pravidlá jazyka Java
– konvencie UML
– konvencie použité v príkladoch

Informatika 1

4

Cieľ prednášky

• skladanie objektov
• komunikácia medzi objektmi pomocou správ
• objektové typy
• trieda String

• príklad: digitálne hodiny

Informatika 1

5

Modularizácia a abstrakcia

• jednoduchá úloha – jeden objekt
• zložitá úloha – rozklad na menšie podúlohy,

časti – viac ako jeden objekt

– rozdeľuj a panuj
– divide and conquer
– divide et impera

• modularizácia – rozklad na menšie časti – moduly
• abstrakcia – zanedbanie vnútorných detailov

jednotlivých častí

Informatika 1

6

Príklad – auto

• časti auta – motor, prevodovka, kolesá,...

– motor – zdroj sily pohybu auta
– prevodovka – zmena veľkosti a smeru sily prenášanej

na kolesá

– kolesá – pohyb auta po ceste, zatáčanie
– ...

Informatika 1

7

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

Informatika 1

8

Kompozícia – skladanie objektov(2)

• auto – objekt
• motor, prevodovka, kolesá – objekty

• auto – objekt – celok
• motor, prevodovka, kolesa – objekty – časti

Informatika 1

9

Kompozícia – skladanie objektov(3)

• vytváranie zložených objektov – skladanie
• skladanie objektov – kompozícia

• kompozícia – závislosť celku a jeho častí

– celok – nadriadený objekt
– časť – podriadený objekt

• úloha celku – organizovanie spolupráce častí

Informatika 1

10

Kompozícia – skladanie objektov(4)

• charakteristika kompozície
• spoločný životný cyklus

– spoločný vznik – celok (+ časti)

• vznik časti – súčasť vzniku celku

– služby – len celok

• vonkajší pohľad – rozhranie auta

– spoločný zánik – celok (+ časti)

• zodpovednosť celku za časti

Informatika 1

11

Kompozícia v UML

Informatika 1

12

časti

celok

vzťah = kompozícia

multiplicita

Asociácia – spolupráca objektov

• asociácia – ľubovoľná spolupráca dvoch objektov

– príklady: klient a banka, učiteľ a študent

• charakteristika asociácie – nezávislé životné cykly

oboch objektov

Informatika 1

13

Asociácia v UML

Informatika 1

14

jeden majiteľ môže mať viac aut

rovnocenné objekty

Diagram objektov – UML

Informatika 1

15

Projekt digitálne hodiny

• Požadované služby:

– 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

– krok 1 minúta

• trieda vytvorí inštanciu hodín

– začiatočný čas: 00:00

Informatika 1

16

17

Informatika 1

Príklad: digitálne hodiny

12:30

hodiny

minúty

Návrhy riešenia

• jediný objekt – podobne ako automat MHD

• kompozícia

– digitálne hodiny – celok

• v rozhraní bude mať požadované služby

– minúty – časť pre prácu s minútami
– hodiny – časť pre prácu s hodinami

Informatika 1

18

Charakteristika minút

• „plynú“ – posunú sa o 1 minútu

– najnižšia hodnota 00
– 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>

Informatika 1

19

Charakteristika hodín

• „plynú“ – posunú sa o 1 hodinu

– najnižšia hodnota 00
– 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>

Informatika 1

20

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

Informatika 1

21

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

Informatika 1

22

Riešenie rozdielov

• dve triedy

• spoločná trieda, parametre

– rôznosť krokov

• oba kroky o 1
• rôzne jednotky – úroveň interpretácie

– rôznosť maxima

• nastaviteľné maximum

Informatika 1

23

Digitálne hodiny v UML(1)

Informatika 1

24

Digitálne hodiny v UML(2)

Informatika 1

25

rola

Digitálne hodiny v Bluej

Informatika 1

26

uses

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

Informatika 1

27

Ú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

Informatika 1

28

DigitalneHodiny – rozhranie

Informatika 1

29

DigitalneHodiny – vnútorný pohľad

Informatika 1

30

Objektové typy

• typ = názov triedy

– trieda ako typ

• príklady:

– typ premennej

• aHodiny : CiselnyDisplej

– typ návratovej hodnoty

• dajCas() : String

Informatika 1

31

DigitalneHodiny – Java

public class DigitalneHodiny
{
private CiselnyDisplej aHodiny;
private CiselnyDisplej aMinuty;

...
}

Informatika 1

32

DigitalneHodiny – konštruktor – UML

Informatika 1

33

DigitalneHodiny – konštruktor – Java

public DigitalneHodiny()
{
aHodiny = new CiselnyDisplej(24);
aMinuty = new CiselnyDisplej(60);
}

Informatika 1

34

Správa triede „new“

Informatika 1

35

36

Informatika 1

Správa triede „new“

aHodiny = new CiselnyDisplej(24);

37

Informatika 1

Štruktúra správy „new“

new CiselnyDisplej(24);

adresát.selektor(parametere)

new = operátor v jazyku Java

38

Informatika 1

DigitalneHodiny – konštruktor

aHodiny = new CiselnyDisplej(24);
aMinuty = new CiselnyDisplej(60);

???

???

Referencie

• premenná uchováva hodnotu
• hodnota objektového typu – referencia
• rozdiel v používaní primitívnych typov a

objektových typov

– primitívne typy – hodnota vo výrazoch
– objektové typy

• hodnota vo výrazoch
• adresát v správe

Informatika 1

39

DigitalneHodiny – diagram objektov(1)

Informatika 1

40

DigitalneHodiny – diagram objektov(2)

Informatika 1

41

DigitalneHodiny – tik – UML

Informatika 1

42

DigitalneHodiny – tik – UML

public void tik()
{
aMinuty.krok();

if (aMinuty.dajHodnotu() == 0) {
aHodiny.krok();
}
}

Informatika 1

43

Príkaz na poslanie správy

• objekt.sprava(skutocneParametre);

– každý zo skutočných parametrov môže byť výraz

• správa nemá výstupný parameter
• vždy samostatný príkaz
• príklad:

Informatika 1

44

aMinuty.krok();

adresát selektor

zoznam skutočných
parametrov

správy s výstupným parametrom

• typ výstupného parametra (návratová hodnota)

– primitívny
– objektový

• správa s výstupným parametrom – výraz

Informatika 1

45

(aMinuty.dajHodnotu() == 0)

aritmetický výraz

logický 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

Informatika 1

46

aHodiny = new CiselnyDisplej(24);

objektový výraz

DigitalneHodiny – nastavCas – UML

Informatika 1

47

DigitalneHodiny – nastavCas – Java

public void nastavCas(int paHodina, int paMinuta)
{
aHodiny.nastavHodnotu(paHodina);
aMinuty.nastavHodnotu(paMinuta);
}

Informatika 1

48

49

Informatika 1

Metóda dajCas

public String dajCas()

13:15

Literál typu String

• reťazcový literál



• prázdny reťazec

• literál – realizovaný ako inštancia triedy String

Informatika 1

50

"ľubovoľný text v Unicode uzavretý do dvojice
úvodzoviek"

""

Premenná typu String

• atribút

• formálny parameter

• lokálna premenná

Informatika 1

51

public void zmenPriezvisko(String paPriezvisko)

String paPriezvisko;

private String aPriezvisko;

Spájanie reťazcov(1)

• Java používa operátor + pre spájanie reťazcov

• spojením dvoch reťazcov

• vzniká nový reťazec (nová inštancia triedy String)

Informatika 1

52

"Žilinská" + " univerzita"

"Žilinská univerzita"

Spájanie reťazcov(2)

• reťazcový výraz

• 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

Informatika 1

53

prvyOperand + druhyOperand

Spájanie reťazcov(3)

• iný ako reťazcový operand sa automaticky

prekonvertuje na reťazec

• vyhodnocovanie výrazu – zľava doprava

Informatika 1

54

55

Informatika 1

Spájanie reťazcov(1)

System.out.println(5 + " eur")

56

Informatika 1

Spájanie reťazcov(2)

System.out.println(10 + 10 + " PC")

57

Informatika 1

Spájanie reťazcov(3)

System.out.println("mame "+ 10 + 10 + " PC")

58

Informatika 1

Spájanie reťazcov(4)

System.out.println("mame "+ (10 + 10) + " PC")

Metóda dajCas

public String dajCas()
{
return aHodiny.dajHodnotuAkoRetazec() + ":"

+ aMinuty.dajHodnotuAkoRetazec();

}

Informatika 1

59

CiselnyDisplej – dajHodnotuAkoRetazec

• vracia hodnotu ako dvojciferné číslo
• nula na začiatku

Informatika 1

60

public String dajHodnotuAkoRetazec()

06

Riešenie problému s nulou – UML

Informatika 1

61

Riešenie problému s nulou – Java(1)

public String dajHodnotuAkoRetazec()
{
String hodnotaAkoRetazec;
if (aHodnota < 10) {
hodnotaAkoRetazec = "0" + aHodnota;
} else {
hodnotaAkoRetazec = "" + aHodnota;
}
return hodnotaAkoRetazec;
}

Informatika 1

62

Riešenie problému s nulou – Java(2)

public String dajHodnotuAkoRetazec()
{
if (aHodnota < 10) {
return "0" + aHodnota;
} else {
return "" + aHodnota;
}
}

Informatika 1

63

Metóda krok

public void krok()
{
aHodnota = (aHodnota + 1) % aHornaHranica;
}

Informatika 1

64

65

Informatika 1

Priraďovací príkaz

aHodnota = (aHodnota + 1) % aHornaHranica;

0 + 1

1

% 24

1

aHodnota = 1

int hodnota = aHodnota + 1;
aHodnota = hodnota % aHornaHranica;

66

Informatika 1

Metóda krok(1)

aHodnota = (aHodnota + 1) % aHornaHranica;

67

Informatika 1

Metóda krok(2)

aHodnota = (aHodnota + 1) % aHornaHranica;

68

Informatika 1

Metóda krok(3)

aHodnota = (aHodnota + 1) % aHornaHranica;

Vďaka za pozornosť

Automaticky vygenerovaný textový náhľad. Pre plné formátovanie si stiahnite súbor.