Adatszerkezetek és algoritmusok

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

Download "Adatszerkezetek és algoritmusok"

Átírás

1 2012. október 18.

2 Ismétlés

3 El z órai anyagok áttekintése Ismétlés Ismerjük: Az algoritmizálás alapjait Kifejezések fogalmát Vezérlési szerkezeteket Egyszer programozási tételeket... és néhány példát

4 Specikáció Feladat specikációja Miel tt az algoritmusainkat megtervezzük, leírjuk, programozzuk specikálni kell a feladatot Mi az amit bemenetként megkapunk kimenetként adni kell el kell végezni Ezek mindegyike feltétel! Feltételezzük, hogy a bemenetre/kimenetre igaz az állítás A programunk akkor lesz helyes, ha a feltételek teljesülnek!

5 Specikáció Feladat specikációja Példa a négyzetgyök számításra Bemenet: egy szám, aminek a négyzetgyökét keressük: x Kimenet: egy olyan szám y, amire igaz, hogy y 2 = x illetve x = y Feladat: a program számolja ki a bemenet négyzetgyökét Tehát az el feltétel azt köti ki, hogy egy számot kapok az utófeltétel pedig azt, hogy az eredmény a bemenet négyzetgyöke lesz

6 Típusok és m veletek

7 Típus fogalma Típus fogalma Deníció Típusnak nevezzük egy megadott értékhalmazt és az azokon értelmezett m veletek összességét Példa típusra 1. Egészek: Értékek: , M veletek: + és Példa típusra 2. Logikai: Értékek: igaz, hamis, M veletek:, és Példa típusra 3. Karakter: Értékek: a... z, M veletek: < (reláció a bet rend szerint)

8 Adatok ábrázolása Adatok ábrázolása a memóriában Két állapot tárolható zikai szinten matematikailag: 0 és 1 Egyetlenegy érték a bit, ez lehet 0 vagy 1 8 biten lehet ábrázolni egy bájtot, kettes számrendszerb l tízesre átírva ez 0 és 255 közötti számokat teszi lehet vé A bájtokat kett hatványai szerint szokás további egységekbe foglalni, szélesítend az ábrázolható értékek halmazát. Két bájt (16 bit): 0 és között Négy bájt (32 bit): 0 és között (32-bites rendszerekben ezt szónak (word) is hívják)

9 Adatok ábrázolása Adatok ábrázolása a memóriában Két állapot tárolható zikai szinten matematikailag: 0 és 1 Egyetlenegy érték a bit, ez lehet 0 vagy 1 8 biten lehet ábrázolni egy bájtot, kettes számrendszerb l tízesre átírva ez 0 és 255 közötti számokat teszi lehet vé A bájtokat kett hatványai szerint szokás további egységekbe foglalni, szélesítend az ábrázolható értékek halmazát. Két bájt (16 bit): 0 és között Négy bájt (32 bit): 0 és között (32-bites rendszerekben ezt szónak (word) is hívják)

10 Adatok ábrázolása Adatok ábrázolása a memóriában A tárolni kívánt érték típusától függ a számok jelentése... Például 16 biten (2 bájton) tárolni lehet: El jel nélküli egész számokat ( ) El jeles egész számokat ( ) (Els bit el jelbit) Karaktereket (úgynevezett Unicode táblázat alapján) Minden egyes számértékhez egy karaktergraka rendelhet...

11 Adatok ábrázolása Adatok ábrázolása a memóriában Mit tudunk tárolni még: Logikai értékeket Racionális számokat, meghatározott tizedes pontossággal Karaktersorozatokat (szövegeket) Memóriarekeszek címét Programutasításokat (az egyes bájtoknak utasítások felelnek meg) Dátumot, id t (például eltelt másodpercekben mérve) Az el z ek sorozatát vektorok formájában...

12 Adatok ábrázolása Adatok ábrázolása a memóriában Hogyan történik mindez? A memória rekeszekre van osztva A rekeszek hossza rendszerenként más, például 32 bit Egy rekeszben egy érték van A programozó (így a gépi utasításokra fordított program) tudja, hogy melyik rekeszben milyen típusú érték van, hogy kell értelmezni A rekeszeknek tudunk nevet adni, ezek a változók Változókkal rekeszeket lehet együttesen is kezelni (összefogni) Pédául tömbök, karaktersorozatok,...

13 Adatok ábrázolása Valós számok a memóriában A valós számok trükkje: X 2 Y alakban ábrázoljuk Pl.: 32 bit esetén 23 bit az X és 8 bit az Y, illetve el jelbit Lebeg pontos számábrázolás (egy IEEE szabvány esetén) 23db { }} { Az X minden esetben 1. xxxxxxxxxxxxxxxxxxxxxxx alakú, ahol az x egy bináris érték Az exponens adja meg a kettedes pont helyét A vezet egyest valójában nem tároljuk, mivel mindig egy

14 Adatok ábrázolása Tárolás következményei Fontos tudni az értékek típusát, mert legbelül minden egyforma Nem végtelen a precizitás számok esetén Egy bájton tárolva, ha vesszük azt a kifejezést, hogy , akkor is kapunk eredményt, mégpedig azt hogy = 0 A jelenséget túlcsordulásnak hívjuk Racionális számoknál ha két eltér nagyságrend számot adunk össze, például 23 kettedesjegynél nagyobb a nagyságrendbeli különbség, akkor A 0: A + B = B el fordulhat Nem mindig igaz, pontosságvesztés miatt, hogy (x/y) y = x, tehát valós számoknál ne használjunk egyenl ségvizsgálatot

15 Adatok ábrázolása Tárolás következményei Fontos tudni az értékek típusát, mert legbelül minden egyforma Nem végtelen a precizitás számok esetén Egy bájton tárolva, ha vesszük azt a kifejezést, hogy , akkor is kapunk eredményt, mégpedig azt hogy = 0 A jelenséget túlcsordulásnak hívjuk Racionális számoknál ha két eltér nagyságrend számot adunk össze, például 23 kettedesjegynél nagyobb a nagyságrendbeli különbség, akkor A 0: A + B = B el fordulhat Nem mindig igaz, pontosságvesztés miatt, hogy (x/y) y = x, tehát valós számoknál ne használjunk egyenl ségvizsgálatot

16 Adatok ábrázolása Tárolás következményei Fontos tudni az értékek típusát, mert legbelül minden egyforma Nem végtelen a precizitás számok esetén Egy bájton tárolva, ha vesszük azt a kifejezést, hogy , akkor is kapunk eredményt, mégpedig azt hogy = 0 A jelenséget túlcsordulásnak hívjuk Racionális számoknál ha két eltér nagyságrend számot adunk össze, például 23 kettedesjegynél nagyobb a nagyságrendbeli különbség, akkor A 0: A + B = B el fordulhat Nem mindig igaz, pontosságvesztés miatt, hogy (x/y) y = x, tehát valós számoknál ne használjunk egyenl ségvizsgálatot

17 Adatok ábrázolása Tárolás következményei Fontos tudni az értékek típusát, mert legbelül minden egyforma Nem végtelen a precizitás számok esetén Egy bájton tárolva, ha vesszük azt a kifejezést, hogy , akkor is kapunk eredményt, mégpedig azt hogy = 0 A jelenséget túlcsordulásnak hívjuk Racionális számoknál ha két eltér nagyságrend számot adunk össze, például 23 kettedesjegynél nagyobb a nagyságrendbeli különbség, akkor A 0: A + B = B el fordulhat Nem mindig igaz, pontosságvesztés miatt, hogy (x/y) y = x, tehát valós számoknál ne használjunk egyenl ségvizsgálatot

18 Adatok ábrázolása Tárolás következményei Fontos tudni az értékek típusát, mert legbelül minden egyforma Nem végtelen a precizitás számok esetén Egy bájton tárolva, ha vesszük azt a kifejezést, hogy , akkor is kapunk eredményt, mégpedig azt hogy = 0 A jelenséget túlcsordulásnak hívjuk Racionális számoknál ha két eltér nagyságrend számot adunk össze, például 23 kettedesjegynél nagyobb a nagyságrendbeli különbség, akkor A 0: A + B = B el fordulhat Nem mindig igaz, pontosságvesztés miatt, hogy (x/y) y = x, tehát valós számoknál ne használjunk egyenl ségvizsgálatot

19 Adatok ábrázolása Tárolás következményei Fontos tudni az értékek típusát, mert legbelül minden egyforma Nem végtelen a precizitás számok esetén Egy bájton tárolva, ha vesszük azt a kifejezést, hogy , akkor is kapunk eredményt, mégpedig azt hogy = 0 A jelenséget túlcsordulásnak hívjuk Racionális számoknál ha két eltér nagyságrend számot adunk össze, például 23 kettedesjegynél nagyobb a nagyságrendbeli különbség, akkor A 0: A + B = B el fordulhat Nem mindig igaz, pontosságvesztés miatt, hogy (x/y) y = x, tehát valós számoknál ne használjunk egyenl ségvizsgálatot

20 Típusok osztályozása Általános osztályozása a típusoknak A programozási nyelvekben el forduló típusokat az alábbiak szerint lehet csoportosítani: Típusok Összetett típusok Elemi típusok Iterált Skalár Mutató Unió Diszkrét Valós Direktszotzat Felsorolási Fixpontos... Egész Lebeg pontos

21 Beépített alaptípusok JAVA nyelven Primitívek A továbbiakban a JAVA nyelv alaptípusait vesszük sorra A Java objektum alapú nyelv, azaz néhány kivételt l eltekintve minden típusa objektum. Amik nem objektumok, azokat primitíveknek nevezzük. Primitívek Java-ban: boolean: Logikai típus byte: 8-bites el jeles egész short: 16-bites el jeles egész int: 32-bites el jeles egész long: 64-bites el jeles egész float: 32-bites lebeg pontos racionális szám double: 64-bites lebeg pontos racionális szám char: 16-bites Unicode karakter

22 Beépített alaptípusok JAVA nyelven Primitívek A továbbiakban a JAVA nyelv alaptípusait vesszük sorra A Java objektum alapú nyelv, azaz néhány kivételt l eltekintve minden típusa objektum. Amik nem objektumok, azokat primitíveknek nevezzük. Primitívek Java-ban: boolean: Logikai típus byte: 8-bites el jeles egész short: 16-bites el jeles egész int: 32-bites el jeles egész long: 64-bites el jeles egész float: 32-bites lebeg pontos racionális szám double: 64-bites lebeg pontos racionális szám char: 16-bites Unicode karakter

23 Beépített alaptípusok JAVA nyelven Csomagoló osztályok Minden egyes primitív típusnak létezik egy objektum párja, amit csomagoló osztálynak hívunk. Boolean: boolean Byte: byte Short: short Integer: int Long: long Float: oat Double: double Character: char Objektum alapú programozási szemlélet miatt vannak. Értékük csak úgy változtatható meg, hogy új példány jön létre, aminek ugyanaz lesz a változóneve. (Egyúttal a régi érték példány elérhetetlen lesz)

24 Beépített alaptípusok JAVA nyelven Tömbök A tömb ahhoz hasonlít, amit matematikában vektornak hívunk. A memóriában folytonosan több ugyanolyan típusú változó foglalódik le deklarációkor, amelyet indexelten lehet elérni. Java nyelven egy egészekb l álló tömb deklarációja a következ képpen történik: Deklaráció tombtipusa [] tombneve ; Egy létrehozott tömb hossza nem változtatható meg a kés bbiekben, viszont lehet ség van újabb, nagyobb deklarációjára.

25 Beépített alaptípusok JAVA nyelven Tömbök értékadás Egy tömbnek értéket adni többféleképpen lehet: Értékadás Felsorolással int [] tombneve; tombneve = {1,2,3,4,5}; Ugyanakkor létrehozható egy tömb kezd értékek nélkül is, csak a méret megadásával: Értékadás Üres létrehozása int [] tombneve; tombneve = new int[10];

26 Beépített alaptípusok JAVA nyelven Tömbök értékadás Illetve a tömb értékadásánál lehet ség van egy másik tömbbel egyenl vé tenni Értékadás Másik tömbbel int [] masiktomb = {0, 1}; int [] egyiktomb = masiktomb; Fontos, hogy ekkor a memóriában egyetlen tömb lesz csak, ugyanakkor kétféle változónévvel lehet elérni. (B vebben az objektumoknál.)

27 Beépített alaptípusok JAVA nyelven Tömbök használat A tömbök tartalmát indexeléssel érjük el, a számozás 0-val kezd dik. Például int [] egyiktomb = new int[10]; Az el z tömb esetén indexek érvényesek, a többi kiindexel a tömbb l. Egy tömb méretének megismerését a következ példa mutatja be: Tömbméret int tombmerete = egyiktomb.length;

28 Beépített alaptípusok JAVA nyelven Tömb, mint típus Deklaráció tombtipusa [] tombneve ; A tömbök is típusok, azaz szerepelhetnek tömb objektum létrehozási paramétereként: Deklaráció tipus [] [] matrix; Ezáltal két-, vagy többdimenziós tömböket is létre lehet hozni, a korlát a memória mérete (Kétdimenziós vektorok mátrixok)

29 Karakterláncok Karakterláncok Nagyon hasznos típus a karakterlánc String (objektum) Deklaráció String s; Értéket adni idéz jelek között megadott szöveggel lehet: Értékadás String s = "Szervusz világ"; Ha idéz jelet szeretnénk belevinni a szövegbe akkor: Idéz jelek egy karakterláncban String s = "Szervusz \"szép\" világ";

30 Karakterláncok Karakterláncok Hasonlóan a csomagoló típusokhoz a karakterláncok sem változtathatóak meg. Amikor új értéket adunk, akkor egy új jön létre ugyanazzal a névvel a memóriában. Karakterek száma egy Stringben: Karakterlánc mérete String s = "Szervusz világ"; int meret = s.length();

31 M veletek M veletek

32 M veletek számokon Egész típusokon végzett m veletek A következ m veletek értelmezettek egész típusokon: (Precedencia) Növelés, csökkentés: ++, -- Multiplikatív: *, /, % (Szorzás, Maradékos osztás, és maradékos osztás maradéka) Additív: +, - Bitenkénti eltolás: <<, >> (Balra, jobbra) Bitenkénti m veletek:, &,, (Negálás, és, vagy, kizáró vagy) Relációs: ==,!=, <, <=, >, >= Unáris: +, - (el jelek) Értékadás: A változónak új értéket ad. = (Kombinálható más m velettel: +=)

33 M veletek számokon Racionális típusokon végzett m veletek A következ m veletek értelmezettek racionális típusokon: (Precedencia) Növelés, csökkentés: ++, -- Multiplikatív: *, /, % (Szorzás, Osztás, és maradékos osztás maradéka) Additív: +, - Relációs: ==,!=, <, <=, >, >= Unáris: +, - (el jelek) Értékadás: A változónak új értéket ad. = (Kombinálható más m velettel: +=)

34 M veletek számokon Érdekességek Java esetén minden értéknek van valamilyen típusa a kódban. Példa egészre Példa valósra F Ha egészeket osztunk, egészet kapunk eredményül, ha valósakat, akkor valóst. Példa egészre 10 / 3 = 3 Példa valósra 10D / 3 =

35 M veletek logikai értéken Logikai típusokon végzett m veletek A következ m velek értelmezettek logikai típusokon: Tagadás:! Relációs: ==,!= Logikai és, vagy: &&, Értékadás: A változónak új értéket ad. = (Az érték true vagy false)

36 M veletek karakterláncokon Karakterláncokon végzett m veletek A következ m veletek értelmezettek karakterláncokon Értékadás: A változónak új értéket ad. = Összef zés: + Több különböz karakterláncot f z össze

37 Függvények

38 Bevezetés Függvények bevezetés Olyan (rész)programok, amelyeknek bemen paramétereik vannak m veleteket végeznek valamilyen eredménnyel kimenettel rendelkeznek Minden Java programban van egy függvény, a main függvény, ami a program elindulásakor kezd futni Ha a main függvény futása befejez dik, akkor a program is befejez dik A main további függvényeket hív(hat) meg, illetve a függvények is továbbiakat hívhatnak meg...

39 Bevezetés Függvények bevezetés Példa main függvényre public static void main(string [] arguments) { int i = 10; int negyzet = i*i; KIIR (negyzet); } Ez a program kiszámolja az i 2, az i = 10 és kiírja.

40 Függvényhívás részletei Függvényhívás Területszámítás public double terulet(double oldal, double magassag) { return (oldal * magassag) / 2; } public static void main(string [] arguments) { double side = 10; double height = 8; double eredmeny = terulet(side, height); } Ez a program egy háromszög területét számoló függvényt hív meg.

41 Függvényhívás részletei Függvényhívás Területszámítás public double terulet(double oldal, double magassag) { return (oldal * magassag) / 2; } public static void main(string [] arguments) { double side = 10; double height = 8; double eredmeny = terulet(side, height); } Figyeljük meg a függvényhívást!

42 Függvényhívás részletei Függvényhívás aktuális paraméterek Területszámítás public double terulet(double oldal, double magassag) { return (oldal * magassag) / 2; } public static void main(string [] arguments) { double side = 10; double height = 8; double eredmeny = terulet(side, height); } Figyeljük meg a függvény aktuális paramétereit!

43 Függvényhívás részletei Függvényhívás formális paraméterek Területszámítás public double terulet(double oldal, double magassag) { return (oldal * magassag) / 2; } public static void main(string [] arguments) { double side = 10; double height = 8; double eredmeny = terulet(side, height); } Figyeljük meg a függvény formális paramétereit!

44 Függvényhívás részletei Függvényhívás paraméterátadás Területszámítás public double terulet(double oldal, double magassag) { return (oldal * magassag) / 2; } public static void main(string [] arguments) { double side = 10; double height = 8; double eredmeny = terulet(10, 8); } Paraméterek behelyettesítése

45 Függvényhívás részletei Függvényhívás számítás Területszámítás public double terulet(double 10, double 8) { return (10 * 8) / 2; // = 40 } public static void main(string [] arguments) { double side = 10; double height = 8; double eredmeny = terulet(10, 8); } Eredmény kiszámítása

46 Függvényhívás részletei Függvényhívás visszatérési érték Területszámítás public double terulet(double 10, double 8) { return (10 * 8) / 2; // = 40 } public static void main(string [] arguments) { double side = 10; double height = 8; double eredmeny = 40; } Visszatérési érték

47 Függvényszignatúra Függvényszignatúra Függvényszignatúra visszatérésitipus fuggvenynev (parameterdeklarációk ) A visszatérés típusát hívják a függvény típusának is A függvény neve bármi, kivéve a nyelv fenntartott szavai A paramétereknél vessz vel elválasztott változódeklarációk A függvény szignatúra alapján használjuk a függvényt

48 Függvénytörzs Függvénytörzs A függvénytörzs m veleteket végez Használhatja a bemen paramétereket, új változókat,... Benne van egy return, amit a visszatérési típusnak megfelel kifejezés követ ez lesz a függvény visszatérési értéke Lehet több return is, például elágazás esetén A return utasítással befejez dik a függvény, még akkor is, ha van mögötte további utasítás Annak a függvénynek, aminek nincs visszatérési típusa, void a típusa Semmilyen típus, nem hozható létre bel le példány

49 Paraméterek Paraméterek Formális paraméterek a függvényszignatúrában vannak deklalrálva, új változók! Ezek a függvény hívásakor felveszik az aktuális paraméterek értékét (hogy hogyan azt kés bb) Tehát a formális és aktuális paraméter más-más terület a memóriában. A változónév azonban lehet ugyanaz! A visszatérési érték, a függvény befejeztekor, annak az értékadó utasításnak a jobb oldala lesz, amiben a függvény neve szerepelt A függvények aktuális paraméterei lehetnek további függvényhívások!

50 Változók láthatósága Változók láthatósága Egy változó láthatósági körének nevezzük azt a részt a programban, ahol az adott változó és általa képviselt memóriaterület elérhet, módosítható. Egy változó hatáskörének nevezzük azt a részt programban, ahol a változó deklarációja érvényben van. Egy függvényen belül deklarált változó csak a függvényen belül látható és arra terjed ki a hatásköre. Egy utasításblokkon belül deklarált változó hasonlóan viselkedik az el z höz. Ezeket lokális változónak hívjuk.

51 Változók láthatósága Változók láthatósága Léteznek globális változók is, amelyeket több függvényb l el lehet érni, használatuk azonban nem javasolt. Példa a hatáskörre int i = 10; int j = 100; { int i = 50; } i++; j++; Az els i-nek a teljes példára kiterjed a határköre, azonban a bels részben nem látható. A második i csak a bels részben látható és a hatásköre is ugyanaz. Nem engedi látni a küls i-t, elfedi azt Az j a programblokkon belül is látható!

52 Objektum Orientált Programozás

53 Valós világ modellezése Valós világ modellezése Az ember a világ megértéséhez modelleket épít, alábbi alapelvekkel Absztrakció az a szemléletmód, amelynek segítségével a valós világot leegyszer sítjük, úgy, hogy csak a lényegre, a cél elérése érdekében feltétlenül szükséges részekre összpontosítunk elvonatkoztatunk a számunkra pillanatnyilag nem fontos, közömbös információktól és kiemeljük az elengedhetetlen fontosságú részleteket Megkülönböztetés az objektumok a modellezend valós világ egy-egy önálló egységét jelöli az objektumokat a számunkra lényeges tulajdonságaik, viselkedési módjuk alapján megkülönböztetjük

54 Valós világ modellezése Valós világ modellezése Az ember a világ megértéséhez modelleket épít, alábbi alapelvekkel Absztrakció az a szemléletmód, amelynek segítségével a valós világot leegyszer sítjük, úgy, hogy csak a lényegre, a cél elérése érdekében feltétlenül szükséges részekre összpontosítunk elvonatkoztatunk a számunkra pillanatnyilag nem fontos, közömbös információktól és kiemeljük az elengedhetetlen fontosságú részleteket Megkülönböztetés az objektumok a modellezend valós világ egy-egy önálló egységét jelöli az objektumokat a számunkra lényeges tulajdonságaik, viselkedési módjuk alapján megkülönböztetjük

55 Valós világ modellezése Valós világ modellezése Osztályozás Az objektumokat kategóriákba, osztályokba soroljuk, oly módon, hogy a hasonló tulajdonságokkal rendelkez objektumok egy osztályba, a különböz vagy eltér tulajdonságokkal rendelkez objektumok pedig külön osztályokba kerülnek Az objektum-osztályok hordozzák a hozzájuk tartozó objektumok jellemz it, objektumok mintáinak tekinthet k Általánosítás, specializálás Az objektumok között állandóan hasonlóságokat vagy különbségeket keresünk, hogy ezáltal b vebb vagy sz kebb kategóriákba, osztályokba soroljuk ket

56 Valós világ modellezése Valós világ modellezése Osztályozás Az objektumokat kategóriákba, osztályokba soroljuk, oly módon, hogy a hasonló tulajdonságokkal rendelkez objektumok egy osztályba, a különböz vagy eltér tulajdonságokkal rendelkez objektumok pedig külön osztályokba kerülnek Az objektum-osztályok hordozzák a hozzájuk tartozó objektumok jellemz it, objektumok mintáinak tekinthet k Általánosítás, specializálás Az objektumok között állandóan hasonlóságokat vagy különbségeket keresünk, hogy ezáltal b vebb vagy sz kebb kategóriákba, osztályokba soroljuk ket

57 Valós világ modellezése Valós világ modellezése Példa Sok embernek van kutyája különböz névvel és jellemz tulajdonságokkal objektumok (példányok) A kutyák, mint egy állatfaj egyedei sok mindenben hasonlítanak is például mindegyik tud ugatni

58 Valós világ modellezése Valós világ modellezése Osztályhierarchia Állat Háziállat Vadállat Macska Kutya Tigris Emu Bodri Morzsi Floki

59 Az OOP elmélete Objektumok és állapotaik Az objektumorientált program egymással kommunikáló objektumok összessége, ahol minden objektumnak megvan a feladata Az objektum: Információt tárol, kérésre feladatokat hajt végre Bels állapota van, üzeneten keresztül lehet megszólítani Objektum = adattagok + m veletek (függvények) Felel s feladatainak korrekt elvégzéséért Az objektum állapota Mindig van egy állapota, amit a mez k (objektumhoz tartozó változók) pillanatnyi értékei írnak le Az objektum m veleteket hajt végre, melyek hatására állapota megváltozhat Két objektumnak ugyanaz az állapota, ha az adattagok értékei megegyeznek

60 Az OOP elmélete Objektumok és állapotaik Az objektumorientált program egymással kommunikáló objektumok összessége, ahol minden objektumnak megvan a feladata Az objektum: Információt tárol, kérésre feladatokat hajt végre Bels állapota van, üzeneten keresztül lehet megszólítani Objektum = adattagok + m veletek (függvények) Felel s feladatainak korrekt elvégzéséért Az objektum állapota Mindig van egy állapota, amit a mez k (objektumhoz tartozó változók) pillanatnyi értékei írnak le Az objektum m veleteket hajt végre, melyek hatására állapota megváltozhat Két objektumnak ugyanaz az állapota, ha az adattagok értékei megegyeznek

61 Az OOP elmélete Osztály, példány Osztály (class) Olyan objektumminta vagy típus, mely alapján példányokat (objektumokat) hozhatunk létre Példány (instance) Minden objektum születését l kezdve egy osztályhoz tartozik Életciklusa van megszületik, él, meghal Létrehozásához inicializálni kell speciális függvény, a neve konstruktor Változóknak kezd értéket ad Az objektum m ködéséhez szükséges tevékenységek végrehajtása

62 Az OOP elmélete Osztály, példány Osztály (class) Olyan objektumminta vagy típus, mely alapján példányokat (objektumokat) hozhatunk létre Példány (instance) Minden objektum születését l kezdve egy osztályhoz tartozik Életciklusa van megszületik, él, meghal Létrehozásához inicializálni kell speciális függvény, a neve konstruktor Változóknak kezd értéket ad Az objektum m ködéséhez szükséges tevékenységek végrehajtása

63 Az OOP elmélete Mez k, m veletek, láthatóság Példányváltozó Objektumpéldányonként helyet foglaló változó Osztályváltozó Osztályonként helyet foglaló változó Példányfüggvény (-metódus) Objektumpéldányokon dolgozó metódus Osztályfüggvény (-metódus) Osztályokon dolgozó metódus Láthatóság Lehet ség van arra, hogy bizonyos függvényeket, változókat azt osztályhasználó számára láthatatlanná tegyünk (információ elrejtésének alapelve)

64 Az OOP elmélete Mez k, m veletek, láthatóság Példányváltozó Objektumpéldányonként helyet foglaló változó Osztályváltozó Osztályonként helyet foglaló változó Példányfüggvény (-metódus) Objektumpéldányokon dolgozó metódus Osztályfüggvény (-metódus) Osztályokon dolgozó metódus Láthatóság Lehet ség van arra, hogy bizonyos függvényeket, változókat azt osztályhasználó számára láthatatlanná tegyünk (információ elrejtésének alapelve)

65 Az OOP elmélete Mez k, m veletek, láthatóság Példányváltozó Objektumpéldányonként helyet foglaló változó Osztályváltozó Osztályonként helyet foglaló változó Példányfüggvény (-metódus) Objektumpéldányokon dolgozó metódus Osztályfüggvény (-metódus) Osztályokon dolgozó metódus Láthatóság Lehet ség van arra, hogy bizonyos függvényeket, változókat azt osztályhasználó számára láthatatlanná tegyünk (információ elrejtésének alapelve)

66 Az OOP elmélete Mez k, m veletek, láthatóság Példányváltozó Objektumpéldányonként helyet foglaló változó Osztályváltozó Osztályonként helyet foglaló változó Példányfüggvény (-metódus) Objektumpéldányokon dolgozó metódus Osztályfüggvény (-metódus) Osztályokon dolgozó metódus Láthatóság Lehet ség van arra, hogy bizonyos függvényeket, változókat azt osztályhasználó számára láthatatlanná tegyünk (információ elrejtésének alapelve)

67 Az OOP elmélete Mez k, m veletek, láthatóság Példányváltozó Objektumpéldányonként helyet foglaló változó Osztályváltozó Osztályonként helyet foglaló változó Példányfüggvény (-metódus) Objektumpéldányokon dolgozó metódus Osztályfüggvény (-metódus) Osztályokon dolgozó metódus Láthatóság Lehet ség van arra, hogy bizonyos függvényeket, változókat azt osztályhasználó számára láthatatlanná tegyünk (információ elrejtésének alapelve)

68 Az OOP elmélete Örökl dés Az állat osztálynak vannak bizonyos tulajdonságai (mez i) és függvényei Ha elkészítjuk a háziállat osztályt, nyilvánvaló, hogy sok olyan tulajdonsága lesz, mint ami az állatnak Lehet ség van az OOP nyelvekben a háziállat osztályt az állat osztály leszármazottjaként létrehozni, ekkor az összes mez t és függvényt örökli a háziállat, ami az állatban megvolt Természetesen további függvényeket és mez ket vehetünk a háziállatba... (Az örökl dés, dinamikus kötés és polimorzmus (statikus és dinamikus típus) nagyon messzire elvinne minket, így elméletben többr l nem esik szó. Fontos megjegyezni azonban, hogy a fentebbiek alapelvek, ennél sokkal színesebb paletta áll rendelkezésre)

69 Az OOP gyakorlata Java-ban Java osztály Osztály létrehozása public class osztálynév extends szül [és még más] { public int mezonev; private String mezonev;... public osztályneve (paraméterek ) { // Konstruktor } public int fuggvenyneve (paraméterek ) {...}... }

70 Az OOP gyakorlata Java-ban Néhány lehetséges kulcsszó A mez k és függvények el tt néhány kulcsszó: public: mindenki számára elérhet private: csak az adott osztályban protected: csak az adott osztályban és leszármazottjaiban nincs kulcsszó: adott osztályban, leszármazottjaiban és a csomagban static-kal jelöljük az osztálymez t illetve függvényt Ha egy mez final, akkor nem módosítható Ha egy osztály final, akkor nem örökölhet bel le tovább (Van még: abstract, synhronized, volatile, native... )

71 Az OOP gyakorlata Java-ban Java osztály Kutya osztály public class Kutya extends Allat { public String nev; public String fajta; public Integer eletkor; private Date [] oltasok_ideje; private String [] oltasok_neve; public Kutya () { oltasok_ideje = new Date[10]; oltasok_neve = new String[10]; }

72 Az OOP gyakorlata Java-ban Java osztály Kutya osztály public void ugat() { } public void megy() { } public void oltastkap(string s, Date mikor) { } }

73 Az OOP gyakorlata Java-ban UML diagram +Név: String +Fajta: String +Életkor: Integer #Oltások ideje: Date [] #Oltások neve: String [] +ugat(): void +megy(): void Kutya +oltástkap(mikor:date,mit:string): void

74 Java objektumok Java Objektum Az el z kutya osztály, mint típus az alábbiak szerint deklarálható Deklaráció Kutya bodri; Ez még csak deklaráció, a tényleges példány létrehozása a new kulcsszóval történik. Példányosítás bodri = new Kutya(); Ekkor a memóriában létrejön egy új Kutya objektum, valamint lefut annak a konstruktora. Miért m ködik ez így?

75 Java objektumok Java Objektum Az el z kutya osztály, mint típus az alábbiak szerint deklarálható Deklaráció Kutya bodri; Ez még csak deklaráció, a tényleges példány létrehozása a new kulcsszóval történik. Példányosítás bodri = new Kutya(); Ekkor a memóriában létrejön egy új Kutya objektum, valamint lefut annak a konstruktora. Miért m ködik ez így?

76 Java objektumok Java Objektum Amikor az Object osztály bármely leszármazottját (legyen az tömb, String, Double, Kutya... ) deklaráljuk, akkor a változó, ami lefoglalásra kerül a memóriában egy referenciát (memóriacímet) tartalmaz értékként Az referencia alapértelmezésben null! Azaz a változó képes egy adott típusú objektumra hivatkozni, de éppen nem hivatkozik egyre sem Ahhoz hogy hivatkozzon létre kell hozni egy új példányt, vagy egy meglév hivatkozást kell átadni értékként (egy meglév példányt) Példányosítás Kutya morzsi = new Kutya(); Kutya rex = morzsi;

77 Java objektumok Java Objektum A második miatt egyetlen Kutya példány van a memóriában, csak két névvel is hivatkozhatunk rá: morzsi és rex Egy objektumváltozó értéke Java-ban egy referencia a memóriában!

78 Java objektumok Java Objektum Egy objektumpéldány mez it és tagfüggvényeit a következ módon lehet elérni, meghívni Tagfüggvények, mez k bodri.ugat(); String kutyaneve = bodri.nev; Természetesen ez csak megfelel látható mez kre és függvényekre igaz. Egy osztály osztálymez it és függvényeit az osztály nevén keresztül célszer elérni Osztálymez Kutya.ALAPÉRTELMEZETTUGATÁSIHANGERŽ

79 Java objektumok Java Objektum Egy objektumpéldány mez it és tagfüggvényeit a következ módon lehet elérni, meghívni Tagfüggvények, mez k bodri.ugat(); String kutyaneve = bodri.nev; Természetesen ez csak megfelel látható mez kre és függvényekre igaz. Egy osztály osztálymez it és függvényeit az osztály nevén keresztül célszer elérni Osztálymez Kutya.ALAPÉRTELMEZETTUGATÁSIHANGERŽ

80 Referencia következményei Következmények Java nyelven, amikor függvényt hívunk, az aktuális paraméter értéke átmásolódik a formális paramétert jelent változóba. (Létrejön(nek) a függvényszignatúra szerinti új változó(k), és az értékük az lesz, ami a függvényhíváskor az aktuális paraméter volt.) Objektumok esetén ez a referencia lesz! Nem jön létre másolat az objektumról, hanem pontosan ugyanazon az objektumon dolgozunk, mint ami az aktuális paraméter. (Primitívek esetén létrejön másolat és a másolaton dolgozunk.) Csomagolók esetén nincs másolat, mivel azonban változtatáskor új jön létre, a tényleges hatás ugyanaz, mint a primitívek esetén.

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

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

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit

Részletesebben

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok 2012. október 18. Ismétlés El z órai anyagok áttekintése Ismétlés Specikáció Típusok, kifejezések, m veletek Adatok ábrázolása a memóriában Vezérlési szerkezetek Függvények Osztályok, objektumok Paraméterátadás

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 é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

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

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

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

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

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

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. október 11. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja

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

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

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. március 3. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja Miért

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

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez Pásztor Attila Algoritmizálás és programozás tankönyv az emeltszintű érettségihez 3. ADATTÍPUSOK...26 3.1. AZ ADATOK LEGFONTOSABB JELLEMZŐI:...26 3.2. ELEMI ADATTÍPUSOK...27 3.3. ÖSSZETETT ADATTÍPUSOK...28

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

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

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

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 2. előadás Szintaktikai alapok Alapvető típusok, ismétlés C# típus.net típus Méret (byte) Leírás byte System.Byte 1Előjel nélküli 8 bites egész szám (0..255) char

Részletesebben

Programozás alapjai. 10. előadás

Programozás alapjai. 10. előadás 10. előadás Wagner György Általános Informatikai Tanszék Pointerek, dinamikus memóriakezelés A PC-s Pascal (is) az IBM PC memóriáját 4 fő részre osztja: kódszegmens adatszegmens stackszegmens heap Alapja:

Részletesebben

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,

Részletesebben

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása Tömbök kezelése Példa: Vonalkód ellenőrzőjegyének kiszámítása A számokkal jellemzett adatok, pl. személyi szám, adószám, taj-szám, vonalkód, bankszámlaszám esetében az elírásból származó hibát ún. ellenőrző

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

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

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

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2019. augusztus 29. Feladat: írjuk ki az els 10 természetes szám négyzetét! #i n c l u d e i n t main ( v o i d ) { p r

Részletesebben

A C programozási nyelv III. Pointerek és tömbök.

A C programozási nyelv III. Pointerek és tömbök. A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,

Részletesebben

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,

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

Programozás I gyakorlat

Programozás I gyakorlat Programozás I. - 9. gyakorlat Sztringkezelés, mutatók Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Rendszer- és Számítástudományi Tanszék Utolsó frissítés: November 2, 2009 1 tar@dcs.vein.hu Tar

Részletesebben

A C programozási nyelv III. Pointerek és tömbök.

A C programozási nyelv III. Pointerek és tömbök. A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,

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

A C# programozási nyelv alapjai

A C# programozási nyelv alapjai A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet

Részletesebben

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

Programozási nyelvek II.: JAVA, 4. gyakorlat Programozási nyelvek II.: JAVA, 4. gyakorlat 2017. október 2-6. Programozási nyelvek II.: JAVA, 4. gyakorlat 1 / 29 A 4. gyakorlat tematikája Tömbök A java.util.arrays osztály A String osztály StringBuilder

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

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

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

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

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

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606 Dr. Bécsi Tamás 2. előadás Console I/O bővebben Lásd mintaprogram 2015.09.21. Számítástechnika I. 2. Előadás 2 Számábrázolásról

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

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

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

8. gyakorlat Pointerek, dinamikus memóriakezelés

8. gyakorlat Pointerek, dinamikus memóriakezelés 8. gyakorlat Pointerek, dinamikus memóriakezelés Házi ellenőrzés Egy számtani sorozat első két tagja A1 és A2. Számítsa ki a sorozat N- dik tagját! (f0051) Egy mértani sorozat első két tagja A1 és A2.

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

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

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

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 2. gyakorlat Függvények Általános prototípus Módosítószavak Láthatóság: public, protected, private. Ha nem definiált, akkor úgynevezett package-private láthatóság. Lehet abstract

Részletesebben

A C# PROGRAMOZÁSI NYELV

A C# PROGRAMOZÁSI NYELV A C# PROGRAMOZÁSI NYELV 2010.02.23. Bevezetés C# nyelv jellemzői 2 Kis és NAGY betű érzékeny Minden utasítást pontos vessző zár. Utasítás zárójel a:,. .NET Framework keretrendszerek 3 Microsoft.NET Framework

Részletesebben

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok 2009. november 13. Ismétlés El z órai anyagok áttekintése Ismétlés Specikáció Típusok, kifejezések, m veletek, adatok ábrázolása, típusabsztakció Vezérlési szerkezetek Függvények, paraméterátadás, rekurziók

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

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

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ási nyelvek II.: JAVA, 4. gyakorlat

Programozási nyelvek II.: JAVA, 4. gyakorlat Programozási nyelvek II.: JAVA, 4. gyakorlat 2017. október 2-6. Programozási nyelvek II.: JAVA, 4. gyakorlat 1 / 32 A 4. gyakorlat tematikája Tömbök A java.util.arrays osztály A String osztály A StringBuffer

Részletesebben

Programozás III. - NGB_IN001_3

Programozás III. - NGB_IN001_3 Programozás III. - az objektumorientált programozásba Varjasi Norbert Széchenyi István Egyetem Informatika Tanszék Programozás III. - 1. el adás institution-log Tartalom 1 El adások és gyakorlatok Zárthelyi

Részletesebben

Szoftvertechnológia alapjai Java előadások

Szoftvertechnológia alapjai Java előadások Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?

Részletesebben

Kifejezések. Kozsik Tamás. December 11, 2016

Kifejezések. Kozsik Tamás. December 11, 2016 Kifejezések Kozsik Tamás December 11, 2016 Kifejezések Lexika Szintaktika Szemantika Lexika azonosítók (változó-, metódus-, típus- és csomagnevek) literálok operátorok, pl. + zárójelek: (), [], {},

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

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

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok Adatszerkezetek és algoritmusok Felsőfokú szakirányú továbbképzés Egyetemi jegyzet 2010 2 Tartalomjegyzék 1. Bevezetés a programozásba 9 1.1. Algoritmusok...................................... 9 1.1.1.

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

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010 Programozási technikák Pál László Sapientia EMTE, Csíkszereda, 2009/2010 Előadás tematika 1. Pascal ismétlés, kiegészítések 2. Objektum orientált programozás (OOP) 3. Delphi környezet 4. Komponensek bemutatása

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á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

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

Programozás módszertan

Programozás módszertan Programozás módszertan p. Programozás módszertan Operátorok túlterhelése a C++ nyelvben Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA TANSZÉK Bevezetés Programozás

Részletesebben

1. Egyszerű (primitív) típusok. 2. Referencia típusok

1. Egyszerű (primitív) típusok. 2. Referencia típusok II. A Java nyelv eszközei 1. Milyen eszközöket nyújt a Java a programozóknak Korábban már említettük, hogy a Java a C nyelvből alakult ki, ezért a C, C++ nyelvben járatos programozóknak nem fog nehézséget

Részletesebben

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és Függvénysablonok Gyakorlatorientált szoftverfejlesztés C++ nyelven Visual Studio Community fejlesztőkörnyezetben

Részletesebben

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o Miért Java? széleskörben elterjedt Micro Edition - beágyazott rendszerek, régi telefonok Standard Edition - PC, android ezen alapul Enterprise Edition - vállalati programok, web service-ek multiplatform

Részletesebben

Bevezetés a programozásba. 9. Előadás: Rekordok

Bevezetés a programozásba. 9. Előadás: Rekordok Bevezetés a programozásba 9. Előadás: Rekordok ISMÉTLÉS Függvényhívás #include #include #include #include using using namespace namespace std; std; double double terulet(double

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

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

Objektumorientált Programozás VI.

Objektumorientált Programozás VI. Objektumorientált Programozás Metódusok Paraméterek átadása Programozási tételek Feladatok VI. ÓE-NIK, 2011 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő

Részletesebben

Programozás II. labor

Programozás II. labor Programozás II. labor 1. rész Programozási tételek Öröklődés Interfészek Eseménykezelés Kivételkezelés Visszalépéses keresés Programozás II. Programozási tételek OOP alapok ismétlése Öröklődés Öröklődés

Részletesebben

1. Jelölje meg az összes igaz állítást a következők közül!

1. Jelölje meg az összes igaz állítást a következők közül! 1. Jelölje meg az összes igaz állítást a következők közül! a) A while ciklusban a feltétel teljesülése esetén végrehajtódik a ciklusmag. b) A do while ciklusban a ciklusmag után egy kilépési feltétel van.

Részletesebben

Smalltalk 3. Osztályok létrehozása. Készítette: Szabó Éva

Smalltalk 3. Osztályok létrehozása. Készítette: Szabó Éva Smalltalk 3. Osztályok létrehozása Készítette: Szabó Éva Metaosztály fogalma Mint korában említettük, a Smalltalkban mindent objektumnak tekintünk. Még az osztályok is objektumok. De ha az osztály objektum,

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

C programozási nyelv Pointerek, tömbök, pointer aritmetika

C programozási nyelv Pointerek, tömbök, pointer aritmetika C programozási nyelv Pointerek, tömbök, pointer aritmetika Dr. Schuster György 2011. június 16. C programozási nyelv Pointerek, tömbök, pointer aritmetika 2011. június 16. 1 / 15 Pointerek (mutatók) Pointerek

Részletesebben

Programozas 1. Strukturak, mutatok

Programozas 1. Strukturak, mutatok Programozas 1 Strukturak, mutatok Strukturak Tömb: több egyforma típusú változó együttese Struktúra: több különböző típusú de logikailag egybetartozó változó együttese, amelyet az egyszerű kezelhetőség

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

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

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r Programozás I. Széchenyi István Egyetem, Gy r 2014. november 16. Áttekintés kel kapcsolatos fogalmak deklaráció Több, kompatibilis változat is elképzelhet. Meg kell el znie a fv. hívását. Mindenképp rögzíti

Részletesebben

Bevezetés a programozásba Előadás: A const

Bevezetés a programozásba Előadás: A const Bevezetés a programozásba 2 6. Előadás: A const ISMÉTLÉS Interface - Implementation struct Particle { int x,y; unsigned char r,g,b; void rajzol(); }; }; void Particle::rajzol() { gout

Részletesebben

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real

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

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. Programozás III CSOMAGOK Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. A Java is csomagok halmaza: csomagokban van a fejlesztő környezet és az osztálykönyvtárak is: rt.jar fájl

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

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

Programozás C++ -ban 2007/7

Programozás C++ -ban 2007/7 Programozás C++ -ban 2007/7 1. Másoló konstruktor Az egyik legnehezebben érthető fogalom C++ -ban a másoló konstruktor, vagy angolul "copy-constructor". Ez a konstruktor fontos szerepet játszik az argumentum

Részletesebben

C++ programozási nyelv

C++ programozási nyelv C++ programozási nyelv Gyakorlat - 13. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. december A C++ programozási nyelv Soós Sándor 1/10 Tartalomjegyzék Objektumok

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

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

Objektumorientált paradigma és programfejlesztés Bevezető

Objektumorientált paradigma és programfejlesztés Bevezető Objektumorientált paradigma és programfejlesztés Bevezető Vámossy Zoltán vamossy.zoltan@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Ficsor Lajos (Miskolci Egyetem) prezentációja alapján

Részletesebben

Programozás I. - 11. gyakorlat

Programozás I. - 11. gyakorlat Programozás I. - 11. gyakorlat Struktúrák, gyakorlás Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Rendszer- és Számítástudományi Tanszék Utolsó frissítés: November 16, 2009 1 tar@dcs.vein.hu Tar

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

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

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos OOP I. Egyszerő algoritmusok és leírásuk Készítette: Dr. Kotsis Domokos 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

Részletesebben