Széchenyi István Egyetem
Programozás III. Varjasi Norbert
[email protected]
1
Széchenyi István Egyetem
A java virtuális gép (JVM) Képzeletbei, „ideális” számítógép. Szoftveresen megvalósított működési környezet.
(az
op. rendszer egy folyamata).
Feladata: Betölti
a használt osztályokat (.class állományok) Az ott található blokkokat, utasításokat értelmezi, átalakítja gépi kódú üzenetekké és futtatja. • interpreter és compiler változatok. Optimalizál,
ellenőriz. Memóriát kezel, kioszt, felszabadít. Op. rendszerrel kapcsolatot tart, erőforrásokat használ. 2
Széchenyi István Egyetem
3
Széchenyi István Egyetem
javac *.java
4
Széchenyi István Egyetem
java Teszt
5
Széchenyi István Egyetem
Osztályok használata
Osztályok és objektumok életciklusa osztály a
betöltése a virtuális gépbe
példányosítás
(a referenciák szerepe) az
objektum megszüntetése
(null referencia és „garbage collector”) 6
Széchenyi István Egyetem
Egybezártság - adatrejtés Osztályok szerepe az egybezártságban Hozzáférési kategóriák
nyilvános
tagok félnyilvános tagok védett tagok privát tagok
Üzenetküldés 7
Széchenyi István Egyetem
Öröklődés A közös ős szerepe Konstruktorok szerepe az öröklődéskor
super() this()
8
Széchenyi István Egyetem
Többalakúság Változók, referenciák dinamizmusa Metódusok felüldefiniálása (override) az öröklési láncban Metódusok felültöltése (overload)
9
Széchenyi István Egyetem
Metódushívás az öröklési láncban
10
Széchenyi István Egyetem
Absztrakt osztályok
Közös adattípusok. Közös műveletek. Absztrakt (definíció nélküli) műveletek. Csak örökítési célból (az ős ismeri, de nem tudja). Közvetlenül nincs példányosítás, csak a leszármazottakból! 11
Széchenyi István Egyetem
A változókról
12
Széchenyi István Egyetem
Változók lehetséges szerepkörei
Példányváltozó
Példányonkénti
egyedi tárterület. Kezdőértékkel rendelkezik. Általában a konstruktor inicializálja.
Lokális változó Blokk-szintű:
(paraméterek, blokkon belüli vált.) Korlátozott hatókör A „veremben” kap tárhelyet
Osztályváltozó 13
Széchenyi István Egyetem
Osztályváltozók, osztálymetódusok
Az egész osztályra vonatkozó „közös” tulajdonságok, műveletek
static kulcsszó
Közös osztályhoz rendelt adatterület (vs. példányváltozó!)
public class Alkalmazott{ //osztályváltozó: private static int nyugdijKorhatár = 62; //osztálymetódusok: public static void nyugdijKorhatarEmel(){ nyugdijKorhatár++; } public static void nyugdijKorhatarCsokk(){nyugdijKorhatár--;} //… stb. }
14
Széchenyi István Egyetem
Osztályváltozók, osztálymetódusok A main, mint osztálymetódus Speciális szerep:
A
virtuális gép indításakor megadott osztály betöltése után automatikusan lefut a main.
public static void main (String args[]) { ...}
15
Széchenyi István Egyetem
Konstans értékek kezelése Konstans értékek 'B', 42, 55000l,”szövegkonstans”, 2.71f ●Konstans adattagok ●
static final módosító Pl: static final int MAX_ELEMSZAM = 10000; Itt (és csakis itt) megengedett a publikus hozzáférés!
16
Széchenyi István Egyetem
Interfészek A Java nyelvben nincs többszörös öröklés Az osztályok általánosítása:
Osztály
Az interfész:
⇒ absztrakt osztály ⇒ interfész
konstans értékeket, és metódus deklarációkat tartalmaz.
Az objektumoknak küldhető közös üzenetkezelést teszi lehetővé. 17
Széchenyi István Egyetem
Interfészek
18
Széchenyi István Egyetem
Interfészek Interfészek deklarációja Az interface kulcsszó példa: public interface Interfésznév { public(final static)int KONSTANS = kezdőérték; public (abstract) boolean művelet(); }
Jelölési konvenciók: konstans jelölésmód: MAX_ERTEK 19
Széchenyi István Egyetem
Interfészek Interfészek megvalósítása Az implements kulcsszó Példa: public class Osztály implements Interfész {…} public class Osztály extends Ős implements Interfész {…} public class Osztály extends Ős implements Intf1, Intf2 {…}
Több interfész megvalósítása A többszörös öröklődés helyett Különböző jellegzetességek összekapcsolása (Holdon való járás, kétéltű autók, rendezhető elemek)
20
Széchenyi István Egyetem
Az objektum orientáltságról
Széchenyi István Egyetem
Az objektumorientált program Egy
objektumorientált program egymással kommunikáló objektumok összessége, melyben minden egyes objektumnak jól meghatározott feladatköre van. Az objektumok közötti kommunikációt a szabványos üzenetküldés valósítja meg. A objektumorientált program nem sértheti meg az objektumorientált alapelveket.
Széchenyi István Egyetem
Üzenetküldés objektumok között 1. objektum: Egy ember
Pisti:Ember
2. egy gépjármű
pistiAutója:Gépjármű
3. egy forgalomirányító lámpa
lámpa12:Forgalomirányító
Széchenyi István Egyetem
Üzenetküldés objektumok között pistiAutója:Gépjármű
lámpa12:Forgalomirányító
Pisti:Ember
1. lépés: megállás a pirosnál
3
pistiAutója.állóraFékez()
1
lámpa12.milyenSzínű?() piros
2
Széchenyi István Egyetem
Üzenetküldés objektumok között pistiAutója:Gépjármű
lámpa12:Forgalomirányító
Pisti:Ember lámpa12.milyenSzínű?()
1. lépés: megállás a pirosnál pistiAutója.állóraFékez()
piros 4
2. lépés: várakozás
6
alapjárat()
milyenSzínű?() piros
5
Széchenyi István Egyetem
Üzenetküldés objektumok között pistiAutója:Gépjármű
lámpa12:Forgalomirányító
Pisti:Ember lámpa12.milyenSzínű?()
1. lépés: megállás a pirosnál pistiAutója.állóraFékez()
piros milyenSzínű?()
2. lépés: várakozás alapjárat()
piros
7
3. lépés: indulás zöld jelzésre
9
indul()
milyenSzínű?() zöld
8
Széchenyi István Egyetem
Osztályok és objektumok együttműködése, kapcsolatai Hierarchikus
kapcsolatokkal nem minden probléma írható le. Az objektumokat „valahogy” össze kell kapcsolni egymással: ismertségi kapcsolatok, tartalmazási kapcsolatok, üzenetküldés.
Kapcsolatok
értelmezése objektum és osztály szinten.
Széchenyi István Egyetem
Köszönöm a figyelmet!