PDF

Spolupráca objektov

Piata prednáška

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

Spolupráca objektov

Informatika 1

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

• Modularizácia a abstrakcia
• Kompozícia – skladanie objektov

– spoločné životné cykly
– UML

• Asociácia – spolupráca objektov

– nezávislé životné cykly
– UML

Informatika 1

1

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

• Objektové typy
• Referencie
• Diagram objektov

Informatika 1

2

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

• Príkaz na poslanie správy

– Príkaz na poslanie správy "new" triede
– Príkaz na poslanie správy bez návratovej hodnotu
– Príkaz na poslanie správy s návratovou hodnotou

• Objektový výraz

– výstupný parameter správy objektového typu
– špeciálne: reťazcový výraz

Informatika 1

3

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

• Reťazce

– reťazcové literály
– spájanie reťazcov
– reťazcové výrazy
– trieda String

Informatika 1

4

Cieľ prednášky

• Logické výrazy
• Relačné výrazy s objektmi
• Spolupráca objektov – asociácia

• príklad: Digitálne hodiny

Informatika 1

5

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

6

Digitálne hodiny – verzia 1

Informatika 1

7

DigitalneHodiny – vnútorný pohľad

Informatika 1

8

CiselnyDisplej – vnútorný pohľad

Informatika 1

9

Metóda nastavHodnotu

• zmení hodnotu na displeji
• nesmie nastaviť hodnotu mimo rozsah

– min 0
– max aHornaHranica

Informatika 1

10

11

Informatika 1

Zložená podmienka

0

24

(aHornaHranica)

paHodnota < aHornaHranica

paHodnota >= 0

Zložená podmienka – prvá časť

Informatika 1

12

Zložená podmienka – druhá časť

Informatika 1

13

Metóda nastavHodnotu

public void nastavHodnotu(int paHodnota)
{
if (paHodnota >= 0) {
if (paHodnota < aHornaHranica) {
aHodnota = paHodnota;
}
}
}

Informatika 1

14

15

Informatika 1

Zložená podmienka

0

24

(aHornaHranica)

paHodnota < aHornaHranica

paHodnota >= 0

a zároveň

Logické operátory(1)

• matematické formy

? ∈ ?, ?

? ≤ ? ≤ ?

? ≤ ? ∧ ? ≤ ?

? ≤ ? a súčastne ? ≤ ?

Informatika 1

16

Logické operátory(2)

• programovací jazyk Java

? ≤ ? a súčastne ? ≤ ?

Informatika 1

17

a <= x && x <= b

Metóda nastavHodnotu

public void nastavHodnotu(int paHodnota)
{
if ((paHodnota >= 0) && (paHodnota < aHornaHranica)) {
aHodnota = paHodnota;
}
}

Informatika 1

18

&&

Metóda nastavHodnotu

public void nastavHodnotu(int paHodnota)
{
boolean vyhovuje = (paHodnota >= 0)

&& (paHodnota < aHornaHranica);

if (vyhovuje) {
aHodnota = paHodnota;
}
}

Informatika 1

19

Logické operátory

operácia

názov

matematika

Java

negácia

not

?

!a

logický súčin

and

? ∧ ?

a && b

logický súčet

or

? ∨ ?

a || b

Informatika 1

20

Priorita logických operátorov

priorita

operátory

najvyššia

unárne +, -, !

*, /, %

binárne +, -

<, <=, >, >=

==, !=

&&

najnižšia

||

Informatika 1

21

Použitie logických operátorov

• unárny operátor !

• binárne operátory && a ||

• operandy – vždy logická, typ boolean
• hodnota logického výrazu – logická, typ boolean

Informatika 1

22

operátor operand

prvyOperand operátor druhyOperand

23

Informatika 1

Pravdivostné tabuľky

&& (and)

false

true

false

false

false

true

false

true

|| (or)

false

true

false

false

true

true

true

true

! (not)

false

true

true

false

Úloha

• zobraziť hodiny pomocou sedem segmentového

displeja

Informatika 1

24

Riešenie – prvá možnosť

• kompozícia – skladanie

– SegmentovaCislica pre desiatky
– SegmentovaCislica pre jednotky

• nutnosť určenia pozície

– každá číslica je na inej pozícii
– každý číselný displej je na inej pozícii

Informatika 1

25

Segmentová číslica – skladanie

Informatika 1

26

CiselnyDisplej – rozhranie

Informatika 1

27

CiselnyDisplej – vnútorný pohľad

Informatika 1

28

CiselnyDisplej – konštruktor

public CiselnyDisplej(int paHornaHranica,

int paX, int paY)

{
aHornaHranica = paHornaHranica;
aHodnota = 0;
aDesiatky = new SegmentovaCislica(paX, paY);

int posunX = 120 + 10;
aJednotky = new SegmentovaCislica(

paX + posunX, paY);

}

Informatika 1

29

CiselnyDisplej – krok

public void krok()
{
aHodnota = (aHodnota + 1) % aHornaHranica;
aDesiatky.zobraz(aHodnota / 10);
aJednotky.zobraz(aHodnota % 10);
}

Informatika 1

30

Riešenie – druhá možnosť

• asociácia – spolupráca

– inštanciu SegmentovaCislica vytvárajú

DigitalneHodiny

– CiselnyDisplej spolupracuje so SegmentovaCislica
– CiselnyDisplej dostane číslicu ako parameter

konštruktora

• pozíciu číslic určujú hodiny

Informatika 1

31

SegmentovaCislica – asociácia

Informatika 1

32

CiselnyDisplej – rozhranie

Informatika 1

33

CiselnyDisplej – vnútorný pohľad

Informatika 1

34

CiselnyDisplej – konstruktor

public CiselnyDisplej(int paHornaHodnota,

Cislica paDesiatky, Cislica paJednotky)

{
aHornaHranica = paHornaHranica;
aHodnota = 0;
aDesiatky = paDesiatky;
aJednotky = paJednotky;
}

Informatika 1

35

CiselnyDisplej – krok

public void krok()
{
aHodnota = (aHodnota + 1) % aHornaHranica;
if (aDesiatky != null && aJednotky != null) {
aDesiatky.zobraz(aHodnota / 10);
aJednotky.zobraz(aHodnota % 10);
}
}

Informatika 1

36

Hodnota null

• null – objektový literál
• null = referencia neodkazuje na žiadny objekt
• pre referenciu na inštanciu ľubovoľnej triedy

Informatika 1

37

Relačné výrazy s objektmi(1)

• relačné operátory pre čísla

– < (menšie ako), <= (menšie, alebo rovné),

> (väčšie ako), >= (väčšie, alebo rovné), == (rovné),
!= (nerovné)

• relačné operátory pre objekty

– == (rovné), != (nerovné)

• porovnanie referencií na objekty

Informatika 1

38

referencia1 == referencia2

Relačné výrazy s objektmi(2)

• == porovnanie identity dvoch objektov

– true – dve referencie na ten istý objekt
– false – dve referencie na dva rôzne objekty

• != opak operátora ==

Informatika 1

39

Porovnanie hodnôt objektov

• porovnanie hodnôt/stavov dvojice objektov?

• porovnanie dvojice rovnakého typu
• porovnanie zhody ich stavov
• špeciálna správa – metóda equals

Informatika 1

40

Porovnávanie reťazcov – String

• správa equals
• testuje zhodnosť dvoch reťazcov
• hlavička metódy

• príklad:

Informatika 1

41

public boolean equals(String paRetazec)

System.out.println("Zilinska".equals("univerzita"));

String – „==“ a equals(1)

• dve rôzne referencie na ten istý reťazec
• dva rôzne reťazce – rovnaký obsah

• relačný operátor „==“

– „==“ – porovnanie referencií na reťazce
– true – referencie na ten istý reťazec

• správa equals

– equals – porovnanie obsahov reťazcov
– true – rovnaký obsah dvoch reťazcov

Informatika 1

42

String – „==“ a equals(2)

• reťazec1 == reťazec2 – true

 reťazec1.equals(reťazec2) – true

• POZOR: opačná implikácia neplatí

• reťazec1.equals(reťazec2) – true

 reťazec1 == reťazec2 – true

Informatika 1

43

String – „==“ a equals(3)





• dva rôzne objekty s rovnakým stavom

– nazovA.equals(nazovB) – true
– nazovA == nazovB – false

Informatika 1

44

String nazov = "Zilinska univerzita";
// "zilinska univerzita"
String nazovA = nazov.toLowerCase();
// "zilinska univerzita"
String nazovB = nazov.toLowerCase();

Zánik inštancie

• životný cyklus inštancie

– vznik inštancie – špeciálna správa „new“ triede
– poskytovanie služieb – prijímanie správ a reakcie na

ne

– zánik inštancie – ???

Informatika 1

45

Zánik inštancie

• o zrušenie inštancie sa stará zberná služba –

garbage collector

• kedy?

– zberná služba ruší objekt v prípade, že naň neexistuje

žiadna referencia

– null = referencia neodkazuje na žiadny objekt

Informatika 1

46

47

Informatika 1

Zánik objektov pri kompozícii

Referencie v BlueJ

Informatika 1

48

referencia

49

Informatika 1

Objektový diagram príkladu

50

Informatika 1

Zánik objektov pri asociácii(1)

51

Informatika 1

Zánik objektov pri asociácii(2)

52

Informatika 1

Zánik objektov pri asociácii(2)

hodnota null

Hodnota null – úlohy(1)

• null = referencia neodkazuje na žiadny objekt

• inicializácia objektovej premennej

• zánik inštancie

– priraďovací príkaz
– premenna = null;

Informatika 1

53

Hodnota null – úlohy(2)

• adresát nie je určený

– podmienka pre poslanie správy
– premenna != null

Informatika 1

54

Vďaka za pozornosť

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