Java Programozás 3. Ea: Java osztályok. OOP alapalapok

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Java Programozás 3. Ea: Java osztályok. OOP alapalapok"

Átírás

1 Java Programozás 3. Ea: Java osztályok OOP alapalapok 62/1 B ITv: MAN

2 Osztály fogalma A Java program osztályok halmaza Egy osztálydefiníció egyben egy teljes fordítási egység (de általában nem teljes program). Az osztály és a definícióját tartalmazó file neve meg kell egyezzen. Osztályok csomagokba rendezhetők, ezzel lehet modulokat képezni. Az osztály egy új objektumot, vagy új típust tartalmaz 62/2

3 Osztály fogalma Az osztály fejlécből és törzsből áll módosítók class osztálynév { tagok definíciói 62/3 Fejléc: módosítók class osztálynév A módosítók feladata az osztályok láthatóságának (elérhetőségének) szabályozása Pl: public (a többi rövidesen) public: az osztály látható, használható bármelyik másik osztályban class: osztályt definiáló kulcsszó osztálynév: tetszőleges egyedi azonosító. (lásd: szokások!) Törzs: { között, tagok definícióit tartalmazza

4 Osztály fogalma Az osztály tagjai lehetnek: adattag (mező) konstruktor inicializáló blokk metódus tag tag osztály (interfész) A tagok definiálásának sorrendje tetszőleges. Ajánlások, szokások (konvenciók) vannak! 62/4

5 Osztály fogalma A Kör osztály definíciója: public class Kör { double kp_x; double kp_y; double sugár; 62/5 void eltol(double dx, double dy) { kp_x += dx; kp_y += dy; void átméretez(double ujsugár) { sugár = ujsugár; Egységbezárás: Az osztály az adatait és a metódusait egy egységként kezeli, és elzárja őket a külvilágtól. Tulajdonságok: adattagok Viselkedési jellemzők: metódusok Adattagok Metódusok Objektum

6 Osztály fogalma Adattagok Metódusok 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. 62/6

7 Osztály fogalma Adattagok Metódusok Egy Java program objektumai üzenetküldéssel kommunikálnak egymással, amely során az egyik egy konkrét feladat elvégzésére kéri a másikat. Ez a megszólított objektum egy - a kezdeményező által látható, elérhető - metódusának meghívását jelenti. Egy objektum azon metódusainak összességét, amelyeken keresztül meghívható, az objektum interfészének nevezzük. Az objektumoknál szabályozható, hogy mely adattagjai legyenek láthatók, ill. mely metódusai és konstruktorai legyenek meghívhatók más objektumok által, valamint melyek legyenek csak az adott objektum által hozzáférhetők. Ezt az eszközrendszert nevezzük egységbezárásnak. 62/7

8 Példányosítás A Kör egy típus Deklarálhatunk ilyen típusú változókat: Létrehozhatunk példányokat belőle, pl: A példányosítás kifejezés eredménye egy megfelelő típusú (példánkban: Kör) referencia, amely a létrejött objektumra mutat. Ezt a referenciát eltárolhatjuk referencia változókba: Kör a,b; a = new Kör(); b = new Kör(); Kör a, b; new Kör(); 62/8

9 Referencia változó típus név érték Az osztályok referencia típusú változók, ez azt jelenti, hogy értékadásnál nem maga az érték, hanem annak hivatkozása (memóriacíme) rendelődik a változóhoz. Az referencia értéke (a cím) a programozó számára hozzáférhetetlen (és szükségtelen is). Létezik null értékű referencia, ami még (vagy már) nem mutat sehova Ha deklarálunk (definiálunk) egy referencia típusú változót, a memóriában lefoglalódik számára hely, de nem jön létre objektum (pl. Kör k;) Kör a Objektum létrehozásához a new operátort kell használni! Kör a = new Kör(); Kör a /9

10 Referencia változó Mit tehetünk a referenciákkal? Definiálhatjuk: Kör a, b; Értéket adhatunk neki (= operátorral) típus név érték Kör a Kör b a = new Kör(); Referencia átadás: b = a; b ezután ugyanarra az objektumra mutat, mint a Két referencia közötti egyenlőséget vizsgálhatjuk (==,!=) boolean egyenlo = (a == b); Konvertálhatjuk (később) Hivatkozhatunk a tagjaira a.kp_x = 2; a.eltol(3, 2); Kör a Kör b 62/10

11 Referencia változó típus név érték Definiált, de nem inicializált referenciával nem lehet semmilyen műveletet végezni, a fordító hibát jelez! public class AutoP { public static void main(string[ ] args) { Auto a; System.out.println(a); 62/11

12 Referencia változó típus név érték public class AutoP { public static void main(string[ ] args) { Auto a = new Auto("PXM218"); Auto b = new Auto("PXM218"); System.out.println(a==b); Két referencia akkor sem egyforma, ha minden adattagjuk megegyezik! 62/12

13 Osztály fogalma Végrehajtható kódot tartalmazó osztály készítése: public class KörProgram { public static void main(string[ ] p){ Kör a, b; a = new Kör(); a.kp_x = 0; a.kp_y = 0; a.sugar = 10; b = new Kör(); b.kp_x = 5; b.kp_y = 8; b.sugar = 3; b.eltol(5, 5); 62/13 Végrehajtható metódus Deklarálás Hivatkozás adattagra Inicializálás Hivatkozás: az objektum nevével minősítve, a. (pont) operátorral Hivatkozás metódusra Hivatkozás: névvel, zárójelben paraméterekkel. A hivatkozás a metódus elindítását jelenti.

14 Teszt 1. A Teszt.java forrásállományban a main metódus mely blokkban szerepelhet? public class teszt {.. public class Teszt {.. private class Teszt {.. public Class Teszt {.. 62/14

15 Teszt 2. Melyik objektum szerepel biztosan egy programosztályban? Adattag Konstruktor Metódus Változó Egyik fenti objektum sem 62/15

16 Tagok hozzáférési kategóriái Az információ rejtés alapelv megvalósításának eszköze. Feladatuk az objektumok (osztály, metódus, adattag) láthatóságának (elérhetőségének) szabályozása 62/16 Módosító private nincs protected public Hozzáférési kategória Privát: más osztályból nem látható, de az adott osztály összes példánya számára elérhető Alap (félnyilvános): csak az azonos csomagban levő osztályok érhetik el (angolul default vagy packageprivate) Védett: az adott csomagban lévő és a leszármazott osztályok érik el Nyilvános: bármely csomagban levő bármely osztályból elérhető

17 Védettség Tagok hozzáférési kategóriái Az egyes hozzáférési szintek láthatósága: Osztály Csomag Leszármazott Összes private X NO NO NO nincs X X NO NO protected X X X NO public X X X X Az osztályon belül bármilyen hozzáférésű objektum elérhető Azonos csomagban a private objektumok már nem látszanak A leszármazott osztályból csak a védett és a nyilvános objektumok érhetők el Az összes (idegen) osztályból csak a public objektumok érhetők el 62/17

18 Tagok hozzáférési kategóriái Az alkalmazása a programozóra van bízva! Alkalmazás: "Egy objektum adatai a külvilág (más objektumok) számára hozzáférhetetlenek." Ebből következik: minden adattag private módosítót kell kapjon!!! "Egy objektum a külvilággal csak az interfészén keresztül tarthatja a kapcsolatot." Ebből következik: Csak azok a metódusok legyenek publikusak, amelyek a külvilággal tartják a kapcsolatot!!! 62/18

19 Tagok hozzáférési kategóriái Osztály csak nyilvános vagy félnyilvános lehet. Adattag és metódus bármelyik kategóriába tartozhat Az információrejtés alapelvének betartása érdekében minden elem a lehető legszűkebb kategóriát kapja. Szokásos konvenciók: 62/19 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.

20 Teszt 3. Egy osztálynak milyen szintű adattagjai lehetnek? csomagszintű példányszintű osztályszintű blokkszintű 62/20

21 Tagok hozzáférési kategóriái A Kör osztály definíciója, az adatrejtés elvét betartva: public class Kör { private double kp_x; private double kp_y; private double sugár; public void eltol(double dx, double dy) { kp_x += dx; kp_y += dy; public void átméretez(double ujsugár) { sugár = ujsugár; 62/21

22 Tagok hozzáférési kategóriái A KörProgram hibás lett! Miért? public class KörProgram { public static void main(string[ ] p){ Kör a, b; a = new Kör(); a.kp_x = 0; a.kp_y = 0; a.sugar = 10; b = new Kör(); b.kp_x = 5; b.kp_y = 8; b.sugar = 3; b.eltol(5, 5); 62/22 Adattagok privátak, elérésük nem lehetséges! Megoldás: az adattagokat elérő setter metódusok a Kör osztályban! public void setkp_x(double p_kp_x) { kp_x = p_kp_x; public void setkp_y(double p_kp_y) { kp_y = p_kp_y; public void setsugar(double p_sug) { sugár = p_sug;

23 Tagok hozzáférési kategóriái A javított KörProgram. public class KörProgram { public static void main(string[ ] p){ Kör a, b; a = new Kör(); a.setkp_x(0); a.setkp_y(0); a.setsugar(10); double r = a.getsugár(); double terület = r*r*math.pi; System.out.println(terület); A setter metódusokhoz hasonlóan getter metódusokat is használunk az adattagok értékének eléréséhez. public double getkp_x() { return kp_x; public double getkp_y() { return kp_y; public double getsugár() { return sugár; 62/23

24 Objektumok inicializálása Adattagok Metódusok Az adattagok egy objektum létrehozásakor automatikusan inicializálódnak nullszerű értékkel: numerikus típusúak 0-val, char típusú 0 kódú karakterrel, boolean típusú false értékkel, referencia null értékkel. Az esetek 99%-ban más értékre lenne szükség, ezért saját magunknak kell beállítani az értékeket. Megoldható ez egy metódussal, amit a programozó meghív a példányosítás után. 62/24

25 Objektumok inicializálása A Kör osztály adattagjait beállító metódus 62/25 public class Kör { private double kp_x; private double kp_y; private double sugár; public void setkör(double dx, double dy, double s) { kp_x = dx; kp_y = dy; sugár = s; Ha elfelejtjük meghívni a metódust, a program hibásan fog működni! Hibalehetőség! Megoldás: konstruktor használata

26 Konstruktor A konstruktor: speciális metódus, amelyet nem lehet meghívni normál módon, hanem automatikusan hívódik meg az osztály példányosításakor. Szerepe az objektum induló állapotának beállítása (pl. adattagok inicializálása). A konstruktor szintaktikája: módosítók azonosító (paraméterlista) { utasítások 62/26 Metódushoz hasonló szintaktika, de Az azonosító kötelezően az osztály neve kell legyen Nincs visszatérési érték típus megadás Lehetnek paraméterei, amelyeknek a példányosításkor adhatunk meg értékeket. Csak a new operátorral hívható

27 Konstruktor A Kör osztály konstruktora 62/27 public class Kör { private double kp_x; private double kp_y; private double sugár; public Kör(double dx, double dy, double s) { kp_x = dx; kp_y = dy; sugár = s; A konstruktor: Túlterhelhető, több is lehet belőle (eltérő paraméterekkel) A konstruktor az osztály bármely metódusát használhatja

28 Konstruktor A konstruktor törzse a példában pontosan ugyanaz, mint a setkör metódusé. Különbségek: A konstruktorhoz nem szükséges előzőleg már létrehozott objektum. A konstruktor a példányosítás során pontosan egyszer és automatikusan hajtódik végre. A konstruktor az objektum élete során többet nem hajtható végre. A setkör függvény feltételezi, hogy az aktuális objektum már létrejött. Explicite meg kell hívni, és ez az objektum élete során akárhányszor megtörténhet. 62/28

29 Konstruktor Egy osztálynak mindig van legalább egy konstruktora Ha a programozó nem ír egyet, akkor a fordító hozzárendeli az osztályhoz az implicit konstruktort Az implicit konstruktor public, paraméter nélküli, törzse üres. Ha egy osztálynak nincs explicit (programozó által írt) konstruktora, akkor 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. Az implicit konstruktor ilyenkor ugyanis nem rendelődik hozzá az osztályhoz. 62/29

30 Konstruktor A javított KörProgram. Példányosítás konstruktorral. public class KörProgram { public static void main(string[ ] p){ Kör a, b; a = new Kör(0, 0, 10); b = new Kör(5, 8, 3); Kör a Kör b Kör a Kör b 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ó. Az objektum létrehozásának folyamata a példányosítás. Egy osztályból tetszőleges számú objektum példányosítható. 62/30

31 Példányosítás A legegyszerűbb mód egy osztály típusú változó definiálása. Formája: osztálynév azonosító = new osztálynév([paraméterek]) A () zárójelpár a paraméterek hiányában is kötelező. A folyamat: Lefoglalódik az objektumnak szükséges hely. Inicializálódik az objektum (a programozó befolyásolhatja az inicializálást). Lefut a konstruktor A lefoglalt memóriaterületre való hivatkozás kerül a változóba. 62/31

32 Teszt 4. Jelölje meg az igaz állításokat! Van olyan metódus, melynek egyáltalán nincs visszatérő értéke (void sem!) Az implicit konstruktornak nincs bemenő paramétere, de törzsében lehetnek utasítások Egy osztálynak minden esetben van paraméter nélküli konstruktora A konstruktor lehet private hozzáférésű 62/32

33 Teszt 5. Helyes vagy hibás az alábbi kód? 62/33 public class Pont { int x; int y; Pont (int a, int b){ beallit(a, b); void beallit(int a, int b){ x = a; y = b;

34 Teszt 6. Helyes vagy hibás az alábbi kód? 62/34 public class Pont { int x; int y; Pont (int a, int b){ beallit(a, b); boolean beallit(int a, int b){ x = a; y = b; return false;

35 Teszt 7. Helyes vagy hibás az alábbi kód? 62/35 public class Pont { int x; int y; Pont (int a, int b){ x = a; y = b; Pont (int a){ this(a, 0);

36 Teszt 8. Helyes vagy hibás az alábbi kód? 62/36 public class Pont { int x; int y; Pont (int a, int b){ beallit(a, b); private void beallit(int a, int b){ x = a; y = b;

37 Példányosítás inicializáló blokk import java.util.date; public class Dolgozo { private String nev; private Date belepes; { 62/37 belepes = new Date(); public Dolgozo (String nev){ this.nev = nev; public String tostring(){ return "Név: "+nev+", belépett: "+belepes; public class DolgozoProgram { public static void main(string[ ] args) { Dolgozo d = new Dolgozo("Jenő"); System.out.println(d); Osztálydefiníción belül elhelyezett kódblokk, amely példányosításkor a konstruktor hívása előtt hajtódik végre.

38 Példány élettartam Létrejön példányosításkor. Megszűnik:? Automatikus szemétgyűjtő (garbage collector): Minden objektumról nyilvántartja, hogy hány referencia hivatkozik rá, amelyik objektumra egy sem azt megszünteti. (Pontosan mikor?) Egy referencia objektumra hivatkozása megszűnik, ha megszűnik maga a változó, megváltozik a változó értéke, a változónak a null értéket adjuk 62/38

39 Osztálydefiníció Adattag Adattag: az osztály példányainak egyedi jellemzőit, tulajdonságait tároló adat (nevezik tagváltozónak is) 62/39 Deklarálása: hozzáférés típus azonosító; Hozzáférés: nyilvános, félnyilvános, privát, védett Az információrejtés alapelvének betartása miatt mindig a lehető legszűkebb hozzáférést kell megadni! Sosem lehet adattag public hozzáférésű! Ha nem inicializáljuk az adattagot a definícióban, akkor automatikusan inicializálódik, nullszerű értékkel, ezt nem érdemes kihasználni. A definícióban, inicializáló blokkban, konstruktorban minden adattagot inicializáljunk. Szokás minden adattagot külön sorban definiálni

40 Osztálydefiníció Metódus Metódus: az osztály adattagjainak viselkedését leíró kód Egy osztályhoz több metódus tartozhat azonos névvel, de eltérő paraméterszignatúrával (túlterhelés) Paraméterszignatúra: a formális paraméterek száma és típus-sorrendje (a visszatérő érték típusa nem számít!) Deklarálás: hozzáférés visszatérő_típus név (paraméterek) { utasítások 62/40 Ha nincs visszatérő típus, akkor void Hozzáférés: nyilvános, félnyilvános, privát, védett static: osztályszintű abstract: nincs a metódusnak törzse final: öröklődéskor nem írható felül a metódus

41 Teszt 9. Jelölje meg az összes igaz állítást! Minden metódusnak van visszatérési értéke Egy függvényt meg lehet hívni eljárásként is A metódus fejében legalább egy módosítót mindenképpen meg kell adni Minden metódus blokkjában kötelezően szerepelnie kell a return utasításnak 62/41

42 Metódusnév túlterhelés (overloading) Egy osztályhoz több metódus is tartozhat azonos névvel, de különböző paraméterszignatúrával (a formális paraméterek száma és típus-sorrendje). A visszatérési érték típusa ebből a szempontból közömbös. A metódus hívásakor a fordítóprogram az aktuális paraméterek szignatúrája alapján dönti el, hogy melyik metódust kell alkalmaznia. Ha egy megfelelőt sem talál, vagy ha többet is talál hibajelzést ad. Egy osztályhoz úgy tartozhat több azonos nevű metódus, hogy: 62/42 az osztályban definiálhatók azonos nevű metódusok ugyanilyen nevű metódusokat örökölhet is az osztály A saját és örökölt metódusok együttesére érvényes a túlterhelés szabályrendszere

43 Teszt 10. Helyes vagy hibás az alábbi kód? public class PrbClass { double x; public int szamol(int a){ return (int)(x/a); public double szamol(int a){ return x/a*100; 62/43

44 Osztályszintű tagok Az adattagokból minden objektumnak saját készlete van. Ezeket ezért szokás példányváltozónak is nevezni. Ha az adattag deklarációja elé kitesszük a static minősítőt, osztályszintű adattagot, osztályváltozót kapunk A statikus adattagból csak egyetlen darab jön létre, minden példány eléri, közösen, osztottan használják Inicializálása az osztály első inicializálásakor történik Hivatkozhatunk rá az osztály bármely példányával Hivatkozhatunk rá az osztály nevével is 62/44

45 Osztályváltozó és osztálymetódus. Példakód class Teszt { int i; static int k; 62/45 Teszt(int i){ this.i = i; static void setk(int z){ k = z; public class Program{ public static void main(string args[ ]) { Teszt t = new Teszt(3, 5); Teszt.setK(7); System.out.println(t.k); static void setk(int k){ this.k = k; java Fut 7 Ha a setk metódus nem lenne static, a Program osztályból nem használhatnánk! A this használata helyes vagy hibás? Hibás! Cannot make a static reference to the non-static method setk(int) from the type Teszt

46 Osztályszintű tagok osztálymetódusok Létrehozásuk oka: akkor is használhatók, ha az osztálynak nem léteznek példányai. Létrehozásuk: a metódust static minősítővel látjuk el Hivatkozás: osztályon belül névvel, osztályon kívül minősített hivatkozással: az osztály vagy bármely példányának neve, pont, metódusnév Előző oldali példában: Teszt.setK(7); Osztálymetódusban a this és a super referenciák nem használhatók! A programosztályokban a main metódus mindig statikus! 62/46

47 Osztályszintű inicializáló blokk public class Dolgozo { private String nev; private static int jutalom; static { jutalom = 50000; public Dolgozo (String nev){ this.nev = nev; public String tostring(){ return "Név: "+nev+", jutalom: "+jutalom; public class DolgozoProgram { public static void main(string[ ] args) { Dolgozo d = new Dolgozo("Jenő"); System.out.println(d); 62/47

48 Osztályszintű inicializáló blokk Javaban csak példányszintű konstruktor létezik, osztályszintű nincs, ezt pótolja az osztályszintű inicializáló blokk Jellemzői: Több is lehet belőle egy osztályban Az osztály betöltődésekor (az osztályra történő első hivatkozáskor) fut le Szerepe: a statikus tagok inicializálása, bonyolultabb esetben. Pl. egy tömb elemeinek inicializálása A "statikus kontextus" része, ezért nem lehet benne példányszintű tagokra hivatkozni 62/48

49 Belső osztályok Az eddigi példákban egymás mellé rendelt osztály definíciókat láttunk. (top level class) A Java nyelvben ezen kívül az osztály definíciók beágyazhatók osztály hatáskörbe (tagosztályok) (nested class) utasításblokkba (lokális osztályok) (local classes) egy utasításba (névtelen osztályok) (anonymous classes) 62/49

50 Tagosztály Előnye: 62/50 Hozzáférnek a beágyazó osztály private tagjaihoz is. Korlátozhatjuk a tagosztály hatáskörét (lehet akár private is). Könnyebben karbantartható lesz. Egy helyen vannak a szorosan kapcsolódó osztályok. Hátránya: Bonyolultabb (hosszabb, nehezebben olvasható) lesz a beágyazó osztály definíciója. A tagosztály önállóan nehezen (vagy egyáltalán nem) használható (de nem is ez a szerepe). Elérés kívülről: Ha nem private, akkor más osztályból is elérhető: Beágyazó.Tag néven.

51 Tagosztály Példányszintű tagosztály Definíció: ua. mint egy normál osztály esetén Korlátozás: Nem lehetnek statikus tagjai (kivétel statikus konstans) public class Kulso { private class Belso { A Belso osztály (csakúgy, mint más példányszintű tagok) a Kulso egy példányához kötődik. 62/51

52 Tagosztály Példányszintű tagosztály Tagosztály példányosítása: példányváltozó.new Belso() Kulso a = new Kulso(); Kulso.Belso b = a.new Belso(); Természetesen ha az aktuális példányhoz akarunk létrehozni példányt, akkor lehet new Belso() is. Tagosztályon belül a beágyazónak is van aktuális példánya és a tagosztálynak is, a kettőt a this minősítővel tudjuk megkülönböztetni. Osztályszintű tagosztály: A tagosztály előtt szerepel a static módosító 62/52

53 Tagosztály Alkalmazási területei: Egy segédosztályt el akarunk rejteni a külvilág elől. (private tagosztály). Egy osztály megvalósításakor egy olyan segédosztályra van szükség, amelyeknek hozzá kell férnie az osztály privát tagjaihoz. Ki akarjuk fejezni, hogy egy osztály vagy interface egy másiknak logikai alárendeltje. 62/53

54 Tagosztály Példakód class Outer { private int num = 25; 62/54 private class InnerClass { public void print() { System.out.println("Num="+num); void displayinner() { InnerClass inner = new InnerClass(); inner.print(); A displayinner metódus eléri az InnerClass osztályt, ami hozzáfér a private num adattaghoz. public class OuterP { public static void main(string args[]) { Outer outer = new Outer(); outer.displayinner();

55 Osztály szintű deklarációk Osztály szintű deklaráció Osztálytag Példánytag Konstruktor Osztály inicializáló blokk Példány inicializáló blokk Belső osztály Osztályváltozó Példányváltozó Osztálymetódus Példánymetódus 62/55

56 UML Diagram Unified Modeling Language Osztály neve Adattagok: név: típus Metódusok: konstruktor getter, setter egyéb Láthatóság: + public # protected ~ package private - private 62/56 Az UML szabványos, általános célú modellező nyelv, rendszertervezők, szoftvermérnökök számára. Az osztálydiagram a rendszerben használt osztályokat mutatja, azok attribútumaival, és kapcsolataikkal együtt.

57 Lokális osztály Egy metódus belsejében deklarált osztályt lokális osztálynak nevezünk 62/57 Hatásköre a beágyazó blokk végéig terjed Csakúgy mint a példányszintű tagosztály nem definiálhat statikus tagokat Eléri a beágyazó osztály azon tagjait, amelyek a függvényben elérhetőek Nem használható módosítók: public protected,private, static Használható: final A lokális osztály csak olyan lokális változókra és paraméterekre hivatkozhat, amelyek final módosítóval rendelkeznek.

58 Lokális osztály Példakód public class TestClass { private int data=30; 62/58 void display(){ class Local{ void msg(){system.out.println(data); Local lc = new Local(); lc.msg(); public static void main(string args[]){ TestClass x = new TestClass(); x.display(); A display metódusban deklarált Local nevű osztály egy lokális osztály, mely eléri a data adattagot.

59 Névtelen osztály Ha úgy deklarálunk egy osztályt, hogy nem adunk nevet neki, akkor név nélküli (anonim) belső osztályt hozunk létre. Ekkor az osztály definiálása és példányosítása egyszerre, egy helyen történik. 62/59 Mivel az anonim osztálynak nincs neve, konstruktora sem lehet. Ha szükség van konstruktorra, akkor vagy lokális osztályt kell használni, vagy inicializáló blokkot, amit pont erre a helyzetre találtak ki Szintén nem használhatóak a public, protected, private, static módosítók Akkor ajánlott használni, ha az osztályt, amit megadunk, rögtön használjuk is vagy csak egyszer kell használni, esetleg az osztálynak nagyon rövid a megvalósítása.

60 Névtelen osztály Példakód jrb1 = new JRadioButton("Piros"); jrb1.addactionlistener( new ActionListener() { public void actionperformed( ActionEvent e ) { if (jrb1.isselected()) szin = "Piros"; ); A { között egy névtelen osztály található, ami implementálja az actionperformed metódust. 62/60

61 Felhasznált irodalom Ficsor Lajos elektronikus jegyzetei Elek Tibor elektronikus jegyzetei oldal anyagai prog.hu oldal anyagai Nyékiné G. Judit (szerk.): JAVA 2 útikalauz programozóknak, ELTE TTK Hallgatói Alapítvány, Budapest, 1999 Daniel J. Berg, J. Steven Fritzinger: JAVA felsőfokon,wiley, 1999 Joshua Bloch: Hatékony Java, /61

62 VÉGE VÉGE 62/62

Osztályok. 4. gyakorlat

Osztályok. 4. gyakorlat Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum

Részletesebben

JAVA PROGRAMOZÁS 2.ELŐADÁS

JAVA PROGRAMOZÁS 2.ELŐADÁS Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 2.ELŐADÁS 2014-2015 tavasz Tömbök, osztályok, objektumok, konstruktorok Tömbök 2 Referencia típusú változó Elemtípus Primitív Referencia: osztály,

Részletesebben

Java III. I I. Osztálydefiníció (Bevezetés)

Java III. I I. Osztálydefiníció (Bevezetés) Java III. I I. Osztálydefiníció (Bevezetés) Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 02. 27. Java III.: Osztály definíció JAVA3 / 1 Szintaktikai jelölések A továbbiakban

Részletesebben

Java III. I I. Osztálydefiníció (Bevezetés)

Java III. I I. Osztálydefiníció (Bevezetés) Java III. I I. Osztálydefiníció (Bevezetés) Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 02. 27. Java III.: Osztály definíció JAVA3 / 1 Szintaktikai jelölések A továbbiakban

Részletesebben

OOP: Java 8.Gy: Abstract osztályok, interfészek

OOP: Java 8.Gy: Abstract osztályok, interfészek OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus

Részletesebben

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás: Java V. szint lyszintű ű tagok A final minősítő Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 05. Java V.: szintű tagok JAVA5 / 1 Példányváltozó Az eddig megismert adattagokból

Részletesebben

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu Programozás III. Varjasi Norbert varjasin@sze.hu 1 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:

Részletesebben

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1 Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum

Részletesebben

és az instanceof operátor

és az instanceof operátor Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag C# osztálydeníció Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem.net C# technológiák tananyag objektum orientált programozás tananyag Tartalom 1 Bevezetés 2 Osztály létrehozása, deníció

Részletesebben

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Tartalom OOP ismétlés Osztályok létrehozása Adattagok láthatóságai, elnevezési ajánlások Konstruktor, destruktor this pointer Statikus és dinamikus

Részletesebben

Java programozási nyelv 4. rész Osztályok II.

Java programozási nyelv 4. rész Osztályok II. Java programozási nyelv 4. rész Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/17 Tartalomjegyzék

Részletesebben

Java programozási nyelv 5. rész Osztályok III.

Java programozási nyelv 5. rész Osztályok III. Java programozási nyelv 5. rész Osztályok III. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/20 Tartalomjegyzék

Részletesebben

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*; Java osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. ( Előfeltétel 12. Tétel ) Az osztály egy olyan típus leíró struktúra, amely

Részletesebben

III. OOP (objektumok, osztályok)

III. OOP (objektumok, osztályok) III. OOP (objektumok, osztályok) 1. Természetes emberi gondolkozás Az Objektumorientált paradigma alapelvei nagyon hasonlítanak az emberi gondolkozásra. Érdemes ezért elsőként az emberi gondolkozás elveit

Részletesebben

OOP #14 (referencia-elv)

OOP #14 (referencia-elv) OOP #14 (referencia-elv) v1.0 2003.03.19. 21:22:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_14-1 - E jegyzet

Részletesebben

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások Osztálytervezés és implementációs ajánlások Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 04. 24. Osztálytervezés és implementációs kérdések OTERV / 1 Osztály tervezés Egy nyelv

Részletesebben

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások Osztálytervezés és implementációs ajánlások Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 04. 24. Osztálytervezés és implementációs kérdések OTERV / 1 Osztály tervezés Egy nyelv

Részletesebben

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN OOP: Java 11.Gy: Enumok, beágyazott osztályok 13/1 B ITv: MAN 2019.04.24 ArrayList Rugalmas tömb A tömbök korlátai Fix méret, nem lehet menet közben megnövelni Ha túl nagyra választjuk, fölösleges helyfoglalás

Részletesebben

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN vizsgatételek 1. Az objektumorientált programozás szemlélete, az objektum fogalma 2. Az objektumorientált programozás alapelvei 3. A Java nyelv története, alapvető

Részletesebben

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék Speciális adattagok és tagfüek Miskolci Egyetem Általános Informatikai Tanszék CPP7 / 1 Statikus adattagok Bármely adattag lehet static tárolási osztályú A statikus adattag az osztály valamennyi objektuma

Részletesebben

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07.

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum

Részletesebben

Már megismert fogalmak áttekintése

Már megismert fogalmak áttekintése Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése Eseménykezelési módszerek 2 Már megismert fogalmak

Részletesebben

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Tartalom Új kommentelési lehetőség Változók deklarációjának helye Alapértelmezett függvényparaméterek Névterek I/O műveletek egyszerűsödése Logikai adattípus,

Részletesebben

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. Az osztály egy olyan típus leíró struktúra, amely tartalmaz adattagokat

Részletesebben

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni? A "java Villa -v" parancs jelentése: A java interpreter elindítja a Villa osztály statikus main metódusát, és átadja neki paraméterként a "-v" stringet. A java interpreter elindítja először a Villa osztály

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak

Részletesebben

Java és web programozás

Java és web programozás Budapesti M szaki Egyetem 2013. szeptember 25. 3. El adás User public class User { private String realname_; private String nickname_; private String password_; public User(String realname, String nickname)

Részletesebben

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat Kivételkezelés, beágyazott osztályok Nyolcadik gyakorlat Kivételkezelés Nem minden hibát lehet fordítási időben megtalálni Korábban (pl. C-ben) a hibakezelést úgy oldották meg, hogy a függvény hibakódot

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve

Részletesebben

Bevezetés a Python programozási nyelvbe

Bevezetés a Python programozási nyelvbe Bevezetés a Python programozási nyelvbe 7. Gyakorlat osztályok, objektumok (utolsó módosítás 2018. aug. 28.) Szathmáry László Debreceni Egyetem Informatikai Kar 2018-2019, 1. félév OO programozás Pythonban

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java statikus programszerkezet Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 2. előadás csomag könyvtárak könyvtárak forrásfájlok bájtkódok (.java) (.class) primitív osztály

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 8. előadás Öröklődés - megnyitunk egy osztályt egy másik előtt zárt egységeket szeretünk készíteni (láthatósági kérdés:

Részletesebben

Objektumok inicializálása

Objektumok inicializálása Objektumok inicializálása Miskolci Egyetem Általános Informatikai Tanszék Objektumok inicializálása CPP4 / 1 Tartalom public adattagok inicializálása felsorolással konstruktor objektum tömbök osztály típusú

Részletesebben

OOP: Java 8.Gy: Gyakorlás

OOP: Java 8.Gy: Gyakorlás OOP: Java 8.Gy: Gyakorlás 43/1 B ITv: MAN 2019.04.10 43/2 Egy régebbi beszámoló anyaga 1. Feladat: Készítsen egy Szemely nevű osztályt a szokásos konvenciók betartásával, amely tárolja egy ember nevét

Részletesebben

Interfészek. PPT 2007/2008 tavasz.

Interfészek. PPT 2007/2008 tavasz. Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése 2 Már megismert fogalmak áttekintése Objektumorientált

Részletesebben

OOP. Alapelvek Elek Tibor

OOP. Alapelvek Elek Tibor OOP Alapelvek Elek Tibor OOP szemlélet Az OOP szemlélete szerint: a valóságot objektumok halmazaként tekintjük. Ezen objektumok egymással kapcsolatban vannak és együttműködnek. Program készítés: Absztrakciós

Részletesebben

C++ programozási nyelv Konstruktorok-destruktorok

C++ programozási nyelv Konstruktorok-destruktorok C++ programozási nyelv Konstruktorok-destruktorok Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. szeptember A C++ programozási nyelv Soós Sándor 1/20 Tartalomjegyzék

Részletesebben

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás 2015-2016

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás 2015-2016 Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS 2015-2016 Objektumorientált programozás OOP PHP-ben 2 A PHP az 5.0-as verziójától megvalósítja az OO eszközrendszerét OO eszközök:

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 2. rész Öröklés és többalakúság Nemvirtuális metódusok, elrejtés Virtuális metódusok, elrejtés Típuskényszerítés, az is és as operátorok Absztrakt osztályok, absztrakt

Részletesebben

ELTE SAP Excellence Center Oktatóanyag 1

ELTE SAP Excellence Center Oktatóanyag 1 Oktatóanyag 1 Oktatóanyag 2 Az oktatás folyamán használt példák a fent látható egyszerű modell implementációi. Oktatóanyag 3 A definíciós részben definiálja a fejlesztő az egyes attribútumokat, metódusokat,

Részletesebben

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title; PHP5 objektumok 1 Osztályok class, new book.php: construct () destruct() $b=new Book(); törlés: $b=null; vagy unset ($b); -elnevezési konvenciók private $isbn; public $title; function

Részletesebben

Öröklés és Polimorfizmus

Öröklés és Polimorfizmus Öröklés és Polimorfizmus Egy létező osztályból egy (vagy több) újat készítünk A létező osztályt ősnek, az újakat utódnak nevezzük Az utódok öröklik az ős minden tagját Az utódok az öröklött tagokat újakkal

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 9. előadás Interface - típust vezet be, de osztálypéldány nem készíthető belőle (statikus típust ad) - több osztály is

Részletesebben

Web-technológia PHP-vel

Web-technológia PHP-vel Web-technológia PHP-vel A PHP programnyelv 2, futtatókörnyezet beálĺıtások Erős Bence February 26, 2013 Erős Bence () Web-technológia PHP-vel February 26, 2013 1 / 19 Szuperglobális változók $ GET : request

Részletesebben

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 3. Ismertesse a névtér fogalmát! 4. Mit értünk a "változó hatóköre"

Részletesebben

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás Számítástechnika II. BMEKOKAA153 5. Előadás Dr. Bécsi Tamás Kivételkezelés try Azon utasítások kerülnek ide, melyek hibát okozhatnak, kivételkezelést igényelnek catch( típus [név]) Adott kivételtípus esetén

Részletesebben

Programozás I. Első ZH segédlet

Programozás I. Első ZH segédlet Programozás I. Első ZH segédlet Ezen az oldalon: kiírás az alapértelmezett (hiba) kimenetre, sztring konkatenáció, primitív típusok, osztály létrehozás, példányosítás, adattagok, metódusok Kiíratás alapértelmezett

Részletesebben

Programozási nyelvek II.: JAVA, 3. gyakorlat

Programozási nyelvek II.: JAVA, 3. gyakorlat Programozási nyelvek II.: JAVA, 3. gyakorlat 2017. szeptember 25-29. 2017. szeptember 25-29. Programozási nyelvek II.: JAVA, 3. gyakorlat 1 / 50 A 3. gyakorlat tematikája Osztályok deníciója Láthatósági

Részletesebben

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Függvények, csomagok Csomagok Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges számú osztályt tartalmazhat Pl.: java.util.scanner Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Célja:

Részletesebben

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Bánsághi Anna 2014 Bánsághi Anna 1 of 33 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 7. ELŐADÁS - ABSZTRAKT ADATTÍPUS 2014 Bánsághi Anna 1 of 33 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív

Részletesebben

Objektumelvű programozás

Objektumelvű programozás Objektum, osztály Objektumelvű programozás Az elemzés együttműködő objektumok rendszereként fogalmazza meg a feladatot. Objektum-központú elemzés A tervezés a feladat tárgyköreit egy-egy objektum felelősségévé

Részletesebben

Java és web programozás

Java és web programozás Budapesti Műszaki Egyetem 2015. 02. 11. 2. Előadás Mese Néhány programozási módszer: Idők kezdetén való programozás Struktúrált Moduláris Funkcionális Objektum-orientált... Mese Néhány programozási módszer:

Részletesebben

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar Programozás I. 5. gyakorlat 1 Objektumorientáltság Egységbezárás és információ elrejtése (absztrakt adattípus) Adatok és rajtuk végzett műveletek egységbezárása (osztályok írása, múlt hét) Öröklődés Polimorfizmus

Részletesebben

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni: Excel objektumok Az excelben az osztályokat úgynevezett class modulokként hozzuk létre. Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni: View-ba

Részletesebben

Java IX. telkezelés a Java-ban

Java IX. telkezelés a Java-ban Java IX. Kivétel telkezelés a Java-ban Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 11. 17. Java IX. Kivételkezelés JAVA9 / 1 A kivételkezel telkezelés célja Kivételes

Részletesebben

Programozási alapismeretek 4.

Programozási alapismeretek 4. Programozási alapismeretek 4. Obejktum-Orientált Programozás Kis Balázs Bevezetés I. Az OO programozási szemlélet, egy merőben más szemlélet, az összes előző szemlélettel (strukturális, moduláris, stb.)

Részletesebben

Bevezetés a C++ programozási nyelvbe

Bevezetés a C++ programozási nyelvbe Bevezetés a C++ programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék CPP0 / 1 Története A C++ programozási nyelv a C programozási nyelv objektum orientált kiterjesztése. Az ANSI-C nyelvet

Részletesebben

OOP: Java 4.Gy: Java osztályok

OOP: Java 4.Gy: Java osztályok OOP: Java 4.Gy: Java osztályok. 36/1 B ITv: MAN 2019.03.02 Feladat Készítsen el egy Employee osztályt és egy Employee osztályt használó osztályt (EmpProgram). Az Employee osztálynak: van name és salary

Részletesebben

Objektumorientált szoftverfejlesztés alapjai

Objektumorientált szoftverfejlesztés alapjai Objektumorientált szoftverfejlesztés alapjai Gyakorlatorientált szoftverfejlesztés C++ nyelven Visual Studio Community fejlesztőkörnyezetben @Katona József Kővári Attila Lektorálta: Dr. Fauszt Tibor DOI:

Részletesebben

Java IX. telkezelés a Java-ban

Java IX. telkezelés a Java-ban Java IX. Kivétel telkezelés a Java-ban Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 11. 17. Java IX. Kivételkezelés JAVA9 / 1 A kivételkezel telkezelés célja Kivételes

Részletesebben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 5. előadás Tömbök átméretezése public static void Resize( ref T[] array, int newsize ) Példa: int[] a=new int[20]; Array.Resize(ref a, 22); 2016. 10. 19.

Részletesebben

OOP: Java 5.Gy: Osztály, referencia, konstruktor

OOP: Java 5.Gy: Osztály, referencia, konstruktor OOP: Java 5.Gy: Osztály, referencia, konstruktor 36/1 B ITv: MAN 2019.03.10 Osztály fogalma A Circle osztály definíciója: public class Circle { private int cx; private int cy; private int rad; public Circle(int

Részletesebben

C++ programozási nyelv

C++ programozási nyelv C++ programozási nyelv Gyakorlat - 9. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. november A C++ programozási nyelv Soós Sándor 1/15 Tartalomjegyzék Hozzáférési

Részletesebben

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.

Részletesebben

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon 1. Template (sablon) 1.1. Függvénysablon Maximum függvény megvalósítása függvénynév túlterheléssel. i n l i n e f l o a t Max ( f l o a t a, f l o a t b ) { return a>b? a : b ; i n l i n e double Max (

Részletesebben

Bevezetés, a C++ osztályok. Pere László

Bevezetés, a C++ osztályok. Pere László Programozás módszertan II. p. Programozás módszertan II. Bevezetés, a C++ osztályok Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA ÉS ÁLTALÁNOS TECHNIKA TANSZÉK

Részletesebben

OOP alapok Egy OOP nyelvet három fontos dolog jellemez. egységbezárás ( encapsulation objektumoknak öröklés ( inheritance

OOP alapok Egy OOP nyelvet három fontos dolog jellemez. egységbezárás ( encapsulation objektumoknak öröklés ( inheritance Az objektum-orientált programozás (röviden OOP) a természetes gondolkodást, cselekvést közelítő programozási mód, amely a programozási nyelvek tervezésének természetes fejlődése következtében alakult ki.

Részletesebben

Objektumorientált programozás IX. Osztályok, objektumok

Objektumorientált programozás IX. Osztályok, objektumok Objektumorientált programozás IX. Osztályok, objektumok 1 Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges,

Részletesebben

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés Bevezetés a programozásba 2 7. Előadás: Objektumszű és osztályszű elemek, hibakezelés ISMÉTLÉS Osztály class Particle { public: Particle( X, X, Y); virtual void mozog( ); ); virtual void rajzol( ) const;

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 13. előadás Throwable Error Exception RuntimeException IOException Saját (általában) Nem ellenörzött kivételek (Unchecked

Részletesebben

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum Bevezetés a programozásba 2 1. Előadás: Tagfüggvények, osztály, objektum Ismétlés int main() { string s; s; s= bla ; cout

Részletesebben

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás.   Szénási Sándor. Eseménykezelés előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Függvénymutatókkal Származtatással Interfészekkel Egyéb

Részletesebben

Objektum Orientált Programozás. 5. JAVA osztályok 21/1B IT MAN

Objektum Orientált Programozás. 5. JAVA osztályok 21/1B IT MAN Objektum Orientált Programozás 5. JAVA osztályok 21/1B IT MAN B IT v: 2016.03.09 MAN Feladatok 1. Készítsen egy Alkalmazott osztályt - legyen név, kor és fizetés adata - legyen egy osztályszintű adattagja

Részletesebben

Java programozási nyelv 6. rész Java a gyakorlatban

Java programozási nyelv 6. rész Java a gyakorlatban Java programozási nyelv 6. rész Java a gyakorlatban Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. október A Java programozási nyelv Soós Sándor 1/16 Tartalomjegyzék

Részletesebben

Java és web programozás

Java és web programozás Budapesti M szaki Egyetem 2013. szeptember 18. 2. El adás Komplex szám public class Complex { private float repart_; private float impart_; public Complex() { repart_ = 0; impart_ = 0; public Complex(float

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 2. rész Öröklés és többalakúság Nemvirtuális metódusok, elrejtés Virtuális metódusok, elrejtés Típuskényszerítés, az is és as operátorok Absztrakt osztályok, absztrakt

Részletesebben

Pénzügyi algoritmusok

Pénzügyi algoritmusok Pénzügyi algoritmusok A C++ programozás alapjai Sztringek Osztályok alapjai Sztringek Szöveges adatok kezelése Sztring Karakterlánc (string): Szöveges adat Karaktertömbként tárolva A szöveg végét a speciális

Részletesebben

Java VII. Polimorfizmus a Java nyelvben

Java VII. Polimorfizmus a Java nyelvben Java VII. Polimorfizmus a Java nyelvben Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 19. Java VII. Polimorfizmuss JAVA7 / 1 A kötés (binding( binding) ) fogalma Kötés (binding)

Részletesebben

OOP: Java 6.Gy: Java osztályok. Definíció, static, túlterhelés

OOP: Java 6.Gy: Java osztályok. Definíció, static, túlterhelés OOP: Java 6.Gy: Java osztályok Definíció, static, túlterhelés 45/1 B ITv: MAN 2019.03.18 Feladat Készítsen egy Alkalmazott osztályt saját csomagban, név, kor és fizetés adatokkal. Legyen egy osztályszintű

Részletesebben

Programozási nyelvek II.: JAVA

Programozási nyelvek II.: JAVA Programozási nyelvek II.: JAVA 6. gyakorlat 2017. október 16-20. 6. gyakorlat Programozási nyelvek II.: JAVA 1 / 1 Az 6. gyakorlat tematikája Túlterhelés - összefoglalás statikus adattagok és metódusok

Részletesebben

Osztályok, objektumok

Osztályok, objektumok 2. óra Osztályok, objektumok Osztályok felépítése Mezők, metódusok, módosítók JavaBeans Példányosítás Öröklés legradi.gabor@nik.bmf.hu szenasi.sandor@nik.bmf.hu Osztályok, objektumok Témakörök Osztályok

Részletesebben

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés A C programozási nyelv V. Struktúra Dinamikus memóriakezelés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 1 A struktúra deklarációja 1.

Részletesebben

OOP és UML Áttekintés

OOP és UML Áttekintés OOP és UML Áttekintés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) OOP és UML Áttekintés 2013 1 / 32 Tartalom jegyzék 1 OOP Osztály Öröklődés Interfész, Absztrakt Osztály Kivétel kezelés

Részletesebben

C++ programozási nyelv Struktúrák a C++ nyelvben

C++ programozási nyelv Struktúrák a C++ nyelvben C++ programozási nyelv Struktúrák a C++ nyelvben Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. szeptember A C++ programozási nyelv Soós Sándor 1/37 Bevezetés A

Részletesebben

Készítette: Nagy Tibor István

Készítette: Nagy Tibor István Készítette: Nagy Tibor István A változó Egy memóriában elhelyezkedő rekesz Egy értéket tárol Van azonosítója (vagyis neve) Van típusa (milyen értéket tárolhat) Az értéke értékadással módosítható Az értéke

Részletesebben

Java VII. Polimorfizmus a Java nyelvben

Java VII. Polimorfizmus a Java nyelvben Java VII. Polimorfizmus a Java nyelvben Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 19. Java VII. Polimorfizmuss JAVA7 / 1 A kötés (binding( binding) ) fogalma Kötés (binding)

Részletesebben

A függvények névvel rendelkező utasításcsoportok, melyeknek információkat adhatunk át, és van egy visszatérési értékük.

A függvények névvel rendelkező utasításcsoportok, melyeknek információkat adhatunk át, és van egy visszatérési értékük. Függvények A függvények névvel rendelkező utasításcsoportok, melyeknek információkat adhatunk át, és van egy visszatérési értékük. Mint egy dzsinn: Hogyan is "használunk" egy dzsinnt? megszólítjuk megmondjuk,

Részletesebben

3. gyakorlat. Objektumorientált programozás

3. gyakorlat. Objektumorientált programozás 3. gyakorlat Objektumorientált programozás Amiről ma szó lesz Objektumok Csomagok Öröklődés Debugger használata OOP vs. egyéb programozási módszerek Az objektumorientált programozás abban különbözik leginkább

Részletesebben

Virtuális függvények (late binding)

Virtuális függvények (late binding) Virtuális függvények (late binding) Miskolci Egyetem Általános Informatikai Tanszék Virtuális függvények CPP5 / 1 Azonos nevű függvények megkülönböztetése paraméterszignatúra (függvény overloading) - egy

Részletesebben

3. Osztályok II. Programozás II

3. Osztályok II. Programozás II 3. Osztályok II. Programozás II Bevezető feladat Írj egy Nevsor osztályt, amely legfeljebb adott mennyiségű nevet képes eltárolni. A maximálisan tárolható nevek számát a konstruktorban adjuk meg. Az osztályt

Részletesebben

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás Számítástechnika II. BMEKOKAA153 2. Előadás Dr. Bécsi Tamás Tömbök (Arrays) Definíció: típus[] név; (pld. int[] szamok; ) Inicializálás: int[] szamok = new int[4]; int[] szamok = 1,2,4,3,5}; int[] szamok

Részletesebben

ELTE SAP EXCELLENCE CENTER Oktatóanyag. Sas László: ABAP Objects Objektumorientált ABAP

ELTE SAP EXCELLENCE CENTER Oktatóanyag. Sas László: ABAP Objects Objektumorientált ABAP ABAP Objects Az oktatás célja az alapvető nyelvi elemek megismertetése. Az objektum-orientált programozás elméletének ismerete előfeltétel, éppen ezért ez nem kerül bemutatásra. Az oktatás folyamán használt

Részletesebben

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

C programozás. 6 óra Függvények, függvényszerű makrók, globális és C programozás 6 óra Függvények, függvényszerű makrók, globális és lokális változók 1.Azonosítók A program bizonyos összetevőire névvel (azonosító) hivatkozunk Első karakter: _ vagy betű (csak ez lehet,

Részletesebben

Objektum orientált kiterjesztés A+ programozási nyelvhez

Objektum orientált kiterjesztés A+ programozási nyelvhez Szegedi Tudományegyetem Informatikai Tanszékcsoport Objektum orientált kiterjesztés A+ programozási nyelvhez Diplomamunka terve Készítette: Bátori Csaba programtervező matematikus hallgató Témavezető:

Részletesebben

Programozás II. 4. Dr. Iványi Péter

Programozás II. 4. Dr. Iványi Péter Programozás II. 4. Dr. Iványi Péter 1 inline függvények Bizonyos függvények annyira rövidek, hogy nem biztos hogy a fordító függvényhívást fordít, hanem inkább az adott sorba beilleszti a kódot. #include

Részletesebben

Osztálytervezés és C++ implementációs ajánlások I.

Osztálytervezés és C++ implementációs ajánlások I. Osztálytervezés és C++ implementációs ajánlások I. Miskolci Egyetem Általános Informatikai Tanszék Osztálytervezés és implementációs kérdések I. OTERV1 / 1 Osztály tervezés Egy nyelv szabályrendszere számos

Részletesebben

JAVA PROGRAMOZÁS 3.ELŐADÁS

JAVA PROGRAMOZÁS 3.ELŐADÁS Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 3.ELŐADÁS 2014-2015 tavasz Polimorfizmus, absztrakt osztályok, interfészek 2 Példa - Hengerprogram 3 Példa - Hengerprogram 4 Példa - Hengerprogram

Részletesebben

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Programozási nyelvek II. JAVA EA+GY 1. gyakolat Programozási nyelvek II. JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2017/2018. őszi félév Tartalom 1 Amit tudni kell a félévről

Részletesebben