3. előadás Flashcards

(35 cards)

1
Q

OBJEKTUMOK LÉTREHOZÁSA

A

· Deklaráció:

· Példányosítás:

· Inicializáció:

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

· Deklaráció

A

Az = előtti részek a deklarációk, amik a változókhoz rendelik hozzá a típusokat.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

· Példányosítás

A

A new kulcsszóval, ami egy Java operátor, létrehozunk egy objektumot.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

· Inicializáció

A

A new operátort egy konsturktorhívás követi. Pl. a Point (23,94) meghívja a Point konstruktorát. A konstruktor inicializálja az új objektumot

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

OSZTÁLYDEFINÍCIÓ

A
  • Egy osztálydefiníció egyben egy teljes fordítási egység (de általában nemteljes program).
  • Az osztály és a definícióját tartalmazó file neve meg kell egyezzen.

Az osztálydefiníció fejlécből és {} zárójelpárral határolt törzsből áll.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

A fejléc formája:

A

[módosítók] class osztályneve [egyebek]
Az osztály neve egy azonosító.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

ADATTAGOK

A

[módosítók] típus név [= inicializáló érték];

  • A típusnév valamelyik egyszerű típus, tömb típus, vagy osztálynév lehet.
  • A névlista elemeit vesszővel választjuk el, formájuk: azonosító[=inicializáló kifejezés]
  • Az inicializáló kifejezésben csak előtte már deklarált adattagok használhatók.
  • Az inicializáló kifejezés minden példányosítás esetén kiértékelődik.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Adattagok kezdoerteke

A

módosító típus adattagNev = kezdőértek

Nem inicializált adattag az alábbi (típustól függő) default értékkel inicializálódik:
– boolean: false
– char: ‘\u0000’
– minden egész típus: 0
– minden lebegőpontos típus: 0.0
– osztály típus: null

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

METÓDUSOK FORMÁJA

A

[módosítók]típus név(paraméterlista)[…]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

HOZZÁFÉRÉSI KATEGÓRIÁK HASZNÁLATA OSZTÁLYOK, ADATTAGOK, METÓDUSOK ESETÉN

A

Osztály csak nyilvános vagy félnyilvános lehet.

Ha az osztály nyilvános, más osztályok használhatják.

Adattag és metódus bármelyik kategóriába tartozhat.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

információrejtés alapelve

A

Az információrejtés alapelvének betartása érdekében minden elem kapja a lehető legszűkebb hozzáféréskategóriát!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Szokásos konvenciók, információrejtés

A

– Egy osztály csak akkor legyen public, ha általános használatra szántuk.

– Az adattagok private (esetleg protected) minősítést kapjanak.

-Ha szükséges, metódusokon keresztül legyenek elérhetők.

-A public adattag hiba!

– A metódusok közül csak a “külvilág” számára szükségesek (az osztály interface-ét jelentők) legyenek public minősítésűek

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

OSZTÁLY HATÁSKÖR

A

Az egységbe zárás alapelvének implementálása: minden osztály saját hatáskörrel rendelkezik.

Egy osztály minden eleme tehát lokális az osztályra nézve.

Következmények:
– Különböző osztályokban használhatjuk ugyanazt az azonosítót eltérő értelemben!

– Az osztályon belül az elemek egymásra a nevükkel hivatkozhatnak.

– A metódusok használhatják az adattagokat és a többi metódust.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Paraméterszignatúra

A

a formális paraméterek száma és típus sorrendje.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

METÓDUSNEVEKTÚLTERHELÉSE (OVERLOADING)

A
  • Egy osztályhoz több metódus is tartozhat azonos névvel de különböző paraméterszignatúrával.
  • Figyelem: a visszatérési érték típusa ebből a szempontból közömbös!
  • A polimorfizmus egyik implementációs formája– “környezet”: paraméter szignatúra
  • A függvény hívásakor a fordítóprogram az aktuális paraméterek szignatúráját sorban egyezteti az összes azonos nevű definíció formális paramétereinek szignatúráival.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

A THIS PSZEUDÓVÁLTOZÓ

A
  • Minden objektumhoz létezik az előredefiniált this pszeudó változó, amely az adott objektumra hivatkozik.
  • Ezen keresztül éri el az adattagot a tagfüggvény.
  • A this pszeudó változó explicite is használható.
17
Q

Parameter szignatura egyeztetes lehetseges eredmenyei

A

– Pontosan egy illeszkedőt talál: ilyenkor az ennek megfelelő függvény hívását fordítja be.

– Egyetlen illeszkedőt sem talál: hibajelzést ad

– Több egyformán illeszkedőt talál: hibajelzést ad Korai kötés (early binding)

18
Q

KONSTRUKTOR

A

A konstruktor egy speciális metódus, az alábbi korlátozásokkal:

– neve egyezik az osztály nevével,

– nem lehet visszatérési értéke (még void sem!),

– legfeljebb “üres” return utasítást tartalmazhat (de az sem kötelező),

– már létező objektumra nem hívható meg közvetlenül, – nem öröklődik,

– módosító csak hozzáférést szabályozó kulcsszó lehet.

A konstruktor legtöbbször public minősítésű.

19
Q

PÉLDÁNYOSÍTÁS KONSTRUKTORRAL

A

Minden példányosítás esetén az alábbi folyamat zajlik le:

  1. helyfoglalás az adattagoknak
    – az adattagok inicializálása
  2. a konstruktor meghívódása a példányosításban megadott aktuális paraméterlistával.
20
Q

KONSTRUKTOR: TOVÁBBI SZABÁLYOK
Adattagok elérhetősége

A

A konstruktor használhatja az osztályban lévő összes adattagot.

Az adattagoknak már van kezdőértékük (alapértelmezett vagy előzetesen megadott).

21
Q

KONSTRUKTOR: TOVÁBBI SZABÁLYOK
Metódusok használata

A

A konstruktor meghívhatja az osztály bármelyik metódusát.

22
Q

KONSTRUKTOR: TOVÁBBI SZABÁLYOK
Konstruktor túlterhelés

A

Egy osztályban lehet több azonos nevű konstruktor, ha eltér a paramétereik száma vagy típusa.

Ez a metódusnév-túlterhelés szabályai szerint működik.

23
Q

KONSTRUKTOR: TOVÁBBI SZABÁLYOK
Konstruktor kiválasztása

A

A fordítóprogram az aktuális paraméterek alapján választja ki, melyik konstruktor hívódjon meg.

24
Q

KONSTRUKTOR: TOVÁBBI SZABÁLYOK
Nem lehet visszakeresni, melyik konstruktor hívódott

A

később a programban nem lehet megállapítani, melyik konstruktor példányosított egy objektumot.

25
KONSTRUKTOR: TOVÁBBI SZABÁLYOK this(...) használata
A konstruktor meghívhatja ugyanazon osztály másik konstruktorát. Ez mindig a konstruktor első utasítása kell legyen. Ebben az utasításban nem lehet osztályváltozót használni.
26
KONSTRUKTOR: TOVÁBBI SZABÁLYOK super(...) használata
A konstruktor meghívhatja az ősosztály konstruktorát is. Ez is csak első utasítás lehet. Ha nem írunk super(...) hívást, automatikusan a szülő paraméter nélküli konstruktora hívódik (ha létezik).
27
IMPLICIT KONSTRUKTOR
Ha a programozó egyet sem ír, akkor az osztályhoz a fordító hozzárendeli az implicit konstruktort. (default constructor) – Ez public, paraméter nélküli és a törzse üres. Következmény: * Ha egy osztálynak nincs explicite definiált konstruktora, csak paraméter nélküli példányosítás lehetséges. * Ha egy osztálynak van legalább egy explicit konstruktora, akkor paraméter nélküli példányosítás csak akkor lehetséges, ha a programozó definiált paraméter nélküli konstruktort.
28
OBJEKTUM PÉLDÁNYOSÍTÁS
*Az objektum létrehozásának folyamata a példányosítás. * Az osztály objektumok létrehozásához használható mintaként tekinthető. * A Java programban az osztálynév típusként használható. * Egy osztályból tetszőleges számú objektum példányosítható. A legegyszerűbb mód egy osztály típusú változó definiálása. [módosítók]osztálynév azonosító = new osztálynév([paraméterek])
29
Objektum létrehozása (példányosítás folyamata)
Először lefoglalódik a szükséges memória az objektumnak. Ezután az objektum inicializálódik (beállítódnak az adattagok, konstruktor fut le). Végül a memóriában lévő objektumra mutató hivatkozás kerül a változóba.
30
HIVATKOZÁS (REFERENCIA) TÍPUSÚ VÁLTOZÓ
A referencia típusú változó nem magát az adatot, hanem annak memóriacímét (referenciáját) tárolja. Jellemzők: Objektumokra mutatnak, például osztálypéldányokra. Értékadáskor a referencia másolódik, nem az objektum. Több változó hivatkozhat ugyanarra az objektumra. A változó null is lehet, ha nem mutat semmire. Módosítások a hivatkozott objektumon keresztül történnek.
31
Egyszerű típusú változó
Deklaráció = definíció Közvetlenül foglal helyet a memóriában Az értéket magában tárolja
32
Osztály típusú változó
Deklaráció csak egy címnek foglal helyet Címet beállítjuk egy példányosított objektumra A változó az objektumot hivatkozza (nem maga az objektum)
33
Objektumelemekre való hivatkozás
Osztályon belül: Egyszerűen a névvel hivatkozunk. Osztályon kívül: Az objektum vagy osztály neve + pont (.) + elem neve. Például: objektum.metodus() vagy objektum.adattag. Metódus hívás: Meg kell adni az aktuális paramétereket. A hivatkozás a metódus meghívását jelenti.
34
Objektum megszűnése
Objektumot csak dinamikusan hozhatunk létre (new). Nem kell és nem is lehet manuálisan törölni az objektumokat. Az objektumok törlését automatikusan végzi a garbage collector (szemétgyűjtő).
35
SZEMÉTGYŰJTŐ MECHANIZMUS
Működés: Számolja, hány hivatkozás mutat egy objektumra. Ha nincs már érvényes referencia, az objektum „haszontalanná” válik. Felszabadítás: Egy külön futó szál végzi a memóriaterület felszabadítását. Nem lehet pontosan megjósolni, mikor történik meg. Referencia megszűnése példái: A változó megszűnik. A változó értéke megváltozik. A változónak null értéket adunk.