Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaKrisztián Varga Megváltozta több, mint 10 éve
1
Osztályok Garbage collection
3
általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása: [láthatóság] [static] [final] [transient] [volatile] típus változóNév ◦ metódusok megadása: [láthatóság] [static] [abstract] [final] [native] [synchronized] visszatérésiTípus metódusNév ([paraméterek]) [throws kivételLista]
4
public class Alma{ private int tomeg; private String szin; public void leesik(){ System.out.println(„Potty!”); } ezt így nem tudom futtatni, mert nincs benne main függvény! osztálynév: mindig nagy kezdőbetűvel! az osztály attribútumai az osztály metódusa
5
public class Program{ public static void main(String[] args){ Alma a = new Alma(); a.leesik(); } 1 fájlba általában 1 osztályt írunk (public class-ból pedig szigorúan csak 1 lehet!) meghívódik a konstruktor meghívódik az „a” objektum leesik metódusa
6
public class Pont { // adattagok private int x; private int y; public double tavolsag(Pont p) { double tav; // távolságot számoló kód… return tav; }
7
az adattagok és a metódusok láthatóságát korlátozni kell ◦ az OO egyik fontos eleme az implementáció elrejtése: a használó használhatja anélkül, hogy pontosan ismerné, mi van benne hogy ki mit érhet el, azt a láthatóság beállításával szabhatjuk meg ha nem adunk meg láthatóságot, az alapértelmezett a package private/”friendly” ◦ ez csomagon belül public, egyébként private ◦ nincsen kulcsszava!
8
a láthatóság lehet még: ◦ public: mindenkinek mindent megenged ◦ private: csak az az osztály használhatja, amiben létrehozták az adattagok általában private láthatóságúak ◦ protected: az adott osztály és annak gyerekosztályai használhatják a main függvény mindig public (különben a futtató környezet sem férne hozzá)
9
különleges metódus ◦ garantálja az inicializálást az objektum létrejöttekor neve meg kell hogy egyezzen az osztály nevével visszatérési típusa nem lehet új objektum létrehozásakor hívódik meg ◦ általában az adattagok inicializálásáért felelős kódot helyezzük a törzsébe általában public láthatóságú
10
ha a konstruktornak nincsen paramétere, akkor default konstruktornak nevezzük (ellenkező esetben paraméteres konstruktornak) ◦ alapértelmezett beállításokkal rendelkező objektum létrehozására használjuk ha semmilyen konstruktort nem készítünk, akkor a fordító készít egy default-ot ◦ ha viszont akár paraméteres, akár pataméter nélküli konstruktort készítünk, akkor nem jön létre default
11
Default: public Pont() { x = 0; y = 0; } Paraméteres: public Pont(int xKoord, int yKoord) { x = xKoord; y = yKoord; }
12
operáció kiterjesztése/overloading: ugyanaz a neve, de más a paraméterlista ◦ pl. a konstruktorok esetén ◦ de nemcsak konstruktorokat lehet kiterjeszteni, pl.: public void kortRajzol(){…}; public void kortRajzol(int sugar){…}; public void kortRajzol(int sugar, int x, int y){…};
13
Adattag esetén: ugyanazon a helyen tárolódik az összes példány ugyanaz lesz az adattag értéke bármely objektumpéldány esetén ◦ Pl.: Alma osztály adattagja legyen: private static int tomeg; minden Alma típusú objektum tömege ugyanannyi lesz ◦ a static adattag objektumpéldány nélkül is létezik
14
Metódus esetén: nem kell objektumpéldányt létrehozni ahhoz, hogy meg tudjuk hívni Pl.: public static void main(), Integer.parseInt() nem lehet felüldefiniálni! Statikus környezetből csak statikus adattagok érhetők el
15
adattag esetén: nem változtathatja meg az értékét (adnunk kell neki kezdőértéket!) Pl.: private static final int tomeg = 10; metódusok esetén: gyerekosztályban nem lehet felüldefiniálni Pl.: public final leesik(){…} minden private metódus impliciten final
16
osztály esetén: nem lehet gyerekosztálya Pl.: final class Alma{…} minden metódusa impliciten final nem primitív típusra használva nem az objektum lesz konstans, hanem a referencia
17
valódi konstans létrehozása: static és final kulcsszavakkal ◦ kezdőértékük nem változtatható meg ◦ nevüket csupa nagy betűvel kell írni, szóhatáron aláhúzásjellel elválasztva ◦ Pl.: public static final int TOMEG = 10; elérése: public class Ember { public static final boolean FERFI = true; } … //elérés az osztályon kívülről: Ember.FERFI
18
az adattagok későbbi (konstruálás utáni) beállítására (setter) illetve lekérdezésére (getter) szolgálnak elnevezésre vonatkozó szabályok: getter: getAdattagNeve setter: setAdattagNeve
19
az Alma osztály tömeg adattagjához tartozó getter és setter: public int getTomeg(){ return tomeg; } public void setTomeg(int ujTomeg){ tomeg = ujTomeg; }
20
A Kutya osztály fajtiszta adattagjához tartozó getter és setter (az adattag logikai típusú): public boolean isFajtiszta(){ return fajtiszta; } public void setFajtiszta(boolean fajtiszta){ this.fajtiszta = fajtiszta; }
21
hivatkozás az aktuális objektumra mikor használjuk? ◦ ha egy metódus formális paraméterének neve megegyezik egy attribútum nevével ◦ Pl.: public Pont(int x, int y) { this.x = x; this.y = y; }
22
Objektumok élete Javában: ◦ heap-en keletkeznek (ellentétben a primitív típusokkal) ◦ létrehozás (new kulcsszó) ◦ Felszabadítás: automatikus, a garbage collector (szemétgyűjtő) végzi null kulcsszó: azt jelöli, hogy az adott referencia nincs beállítva semmilyen objektumra
23
Pont p1 = new Pont(6, 15); Pont p2 = new Pont();... p1 = null; … P2 = null;
24
egységbezárás és információ elrejtése (absztrakt adattípus) ◦ adatok és a rajtuk végzett műveletek egységbezárása osztályok írása öröklődés polimorfizmus (többalakúság)
25
Ember.java (pub) Alma.java (honlapom) PrivatEmber.java (pub, 5. hétnél) PEMain.java (pub, 5. hétnél)
26
pub: feladat.txt (4. gyakorlat könyvtára)
27
szerda éjfélig küldhető el 2 pluszpontért nekem e-mailben feladat: ◦ Írj olyan osztályt, ami egy szobát reprezentál, a szobáról legyen eltárolva a területe és a belmagassága. ◦ Írj paraméteres konstruktort, ami a mezőket inicializálja. ◦ Írj getter és setter metódusokat az adattagokhoz. ◦ Írj az órai minta alapján „info” metódust a Szoba osztályhoz. ◦ Írj újabb osztályt, ami futtatható, és a parancssori paramétereknek megfelelően létrehoz egy objektumot a Szoba osztályból.
28
Pl.: java Szoba 15 2 15 m 2 területű, 2 m belmagasságú szobát hozunk létre ◦ Emellett a futtatható osztályban hozz létre egy „lakas” nevű tömböt is, ami 10 szobát tartalmaz a 10 szoba területe egy véletlen szám 5 és 15 között, a belmagasságuk pedig 50-50% eséllyel 2 ill. 3 méter ◦ A létrehozott Szoba objektumok jellemzőit az „info” metódus segítségével írasd ki a konzolra.
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.