Skladanie objektov
Štvrtá 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
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.
nechodím na prednášky