3. előadás Flashcards
(35 cards)
OBJEKTUMOK LÉTREHOZÁSA
· Deklaráció:
· Példányosítás:
· Inicializáció:
· Deklaráció
Az = előtti részek a deklarációk, amik a változókhoz rendelik hozzá a típusokat.
· Példányosítás
A new kulcsszóval, ami egy Java operátor, létrehozunk egy objektumot.
· Inicializáció
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
OSZTÁLYDEFINÍCIÓ
- 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.
A fejléc formája:
[módosítók] class osztályneve [egyebek]
Az osztály neve egy azonosító.
ADATTAGOK
[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.
Adattagok kezdoerteke
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
METÓDUSOK FORMÁJA
[módosítók]típus név(paraméterlista)[…]
HOZZÁFÉRÉSI KATEGÓRIÁK HASZNÁLATA OSZTÁLYOK, ADATTAGOK, METÓDUSOK ESETÉN
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.
információrejtés alapelve
Az információrejtés alapelvének betartása érdekében minden elem kapja a lehető legszűkebb hozzáféréskategóriát!
Szokásos konvenciók, információrejtés
– 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
OSZTÁLY HATÁSKÖR
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.
Paraméterszignatúra
a formális paraméterek száma és típus sorrendje.
METÓDUSNEVEKTÚLTERHELÉSE (OVERLOADING)
- 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.
A THIS PSZEUDÓVÁLTOZÓ
- 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ó.
Parameter szignatura egyeztetes lehetseges eredmenyei
– 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)
KONSTRUKTOR
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ű.
PÉLDÁNYOSÍTÁS KONSTRUKTORRAL
Minden példányosítás esetén az alábbi folyamat zajlik le:
- helyfoglalás az adattagoknak
– az adattagok inicializálása - a konstruktor meghívódása a példányosításban megadott aktuális paraméterlistával.
KONSTRUKTOR: TOVÁBBI SZABÁLYOK
Adattagok elérhetősége
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).
KONSTRUKTOR: TOVÁBBI SZABÁLYOK
Metódusok használata
A konstruktor meghívhatja az osztály bármelyik metódusát.
KONSTRUKTOR: TOVÁBBI SZABÁLYOK
Konstruktor túlterhelés
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.
KONSTRUKTOR: TOVÁBBI SZABÁLYOK
Konstruktor kiválasztása
A fordítóprogram az aktuális paraméterek alapján választja ki, melyik konstruktor hívódjon meg.
KONSTRUKTOR: TOVÁBBI SZABÁLYOK
Nem lehet visszakeresni, melyik konstruktor hívódott
később a programban nem lehet megállapítani, melyik konstruktor példányosított egy objektumot.