Programozási paradigmák és technikák. Előadás: Hajnal Éva Gyakorlat: Burián Ágnes

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

Download "Programozási paradigmák és technikák. Előadás: Hajnal Éva Gyakorlat: Burián Ágnes"

Átírás

1 Programozási paradigmák és technikák Előadás: Hajnal Éva Gyakorlat: Burián Ágnes

2 Paradigma Egy tudományterület általánosan elfogadott nézetei (fogalmai, szakkifejezései) egy adott korszakban, időpontban. Egy szó összes ragozott alakjának rendszerezett leírása. (például igeragozási tábla)(lásd: Magyar Értelmező Kéziszótár) Egy mondat szakasz helyettesítésére alkalmas kifejezések osztálya, gyűjteménye (nem azonos értelmű, jelentésű (szinonímák), hanem azonos módon használható szavak). A paradigma a gondolkodásoknak, vélekedéseknek, értékeknek és módszereknek egy adott társadalom vagy szűkebben egy tudományos közösség minden tagja által elfogadott összegzését jelenti. 2

3 Adatbázisok Programnyelvek C#, Java, Assembly Adatszerkezetek Hogyan kell programot írni Algoritmusok Programozási paradigmák és technikák UML Alapismeretek Szoftver ismeretek Hogyan kell tervezni Informatikus tudása Hogyan kell dokumentálni Rendszertervezés Gazdasági ismeretek Hardver ismeretek 3

4 Tematika 1 Rekurzió: Fibonacci (rekurzív és nem rekurzív), QuickSort (rekurzív és nem rekurzív) 2 OO programozás C# nyelven Osztályok, objektumok. Konstruktor, destruktor, this. Beágyazott osztályok. Egyszerű típuskonverziók Mezők, metódusok. Átdefiniálás (overloading) Névterek. Láthatóság. Felbontott típusok (partial types) 3 Öröklés Többszörös öröklés lehetőségei a különböző nyelvekben. Konstruktorok az öröklésben. Hívási, végrehajtási sorrend. Paraméterezett őskonstruktor hívása. Különböző konstansok és inicializálásuk Metódusok elrejtése. Az ősosztály azonos nevű metódusának hívása. Öröklés és értékadás. Explicit típuskonverzió. Az Object.GetType(). Az is, as operátorok.. 4 Polimorfizmus Nem virtuális metódusok, elrejtés. Virtuális metódusok, felüldefiniálás. Futásidejű kötés, polimorfizmus. Virtuális Metódus Tábla. Konstruktorok, destruktorok feladata. Virtual, override, new, new virtual. Virtuális metódus elrejtése. A virtualitás újrakezdése. Statikus és virtuális metódusok. Lezárt metódus, lezárt osztály Delegált függvények 5 Absztrakt osztály és interfész. Absztrakt metódus. Absztrakt osztály Generikus osztályok Interfész. Metódusok implementációja. Láthatóság interfész esetén. Explicit implementált interfész. Absztrakt osztály vagy interfész. 6 Iterátorok. Kivételkezelés. Kivétel dobása, elkapása. Kezeletlen kivétel. Kivételek egymásba ágyazása. Az osztálykönyvtár és a kivételkezelés. Operátor overloading. Operátor. Átdefiniálható operátorok. Precedencia. Implicit, explicit Programozási paradigmák konverzió. és technikák 4

5 Dinamikus memóriakezelés. Verem/sor. Statikus megvalósítás, dinamikus megvalósítás ZH Gráfok, Gráfalgoritmusok 9 Szünet Láncolt listák létrehozása Láncolt listák bejárása. Keresés, beszúrás, törlés, hulladékgyűjtés. Fejelt listák. Kétirányú listák Fa adatszerkezetek. Fát reprezentáló adatstruktúrák. Adatmodell, eljárásmodell. Adatszerkezetek rendszerezése. Absztrakt társzerkezetek. Vektor, lista. Bináris fák. Megvalósításuk a memóriában. Bináris fák bejárása, keresés. Beszúrás, törlés. BST fák, AVL fák. Általánosított fák, piros-fekete fa, B-fa Rendezések. A rendező algoritmusok bonyolultsága. Radix rendezés. Kupacrendezés (HeapSort). Kupacrendezés bonyolultsága. Útvonalak hosszúsága, a Huffman algoritmus A tábla, mint adatszerkezet. Hasítás. Hasító függvények. Az összeütközések feloldása. Hasítás és keresőfák. Hasítás alkalmazásai 5

6 Követelmények Az aláírás megszerzésének feltétele: A két gépes ZH, és az elméleti ZH megírása, a házi feladat beadása. A ZH-k és házifeladatból megszerezhető pontok 50%-nak teljesítése, vagyis a megszerezhető 120 pontból minimum 60 pontot kell elérni. A vizsga jegy: A gyakorlatokon a 2., 3., 4., 5., 8., 10., 11., 12. héten egy-egy 5 pontos, a 6., 13. héten egy-egy 20 pontos gépes ZH megírása, a 13. héten 20 pontos önálló feladat beadása és ebből beszámoló. Az előadás anyagából a 8. héten egy 20 pontos elméleti ZH lesz. Összesen elérhető 120 pont. A vizsgán további 120 pont érhető el. A hozott pontszám a vizsga pontszámához hozzáadódik. Osztályozás: jeles jó közepes elégséges 6

7 Teszt (igaz-hamis) 1. Szintaktika a szabályok összesége, amely megszabja a forráskód felépítését. 2. A C# programnyelv nem különbözteti meg a kis- és a nagy betűket: Consol.WriteLine ugyanaz mint consol.writeline 3. Az if egy kulcsszó, azaz a forráskódban a saját meghatározott jelentésén kívül nem lehet másra használni. 4. //Ezt a programsort a C# fordítója nem fordítja le. 5. A C# erősen típusos nyelv, ami azt jelenti, hogy minden egyes változó típusának már fordítási időben ismertnek kell lennie. 6. Az int és a System.Int16 ugyanazt jelenti, egymással helyettesíthetők. 7. Egy változó abban a blokkban használható, amelyben definiálva lett. 8. if(a<n && a%2==0) és if(a<n & a%2==0) teljesen ugyanúgy hajtódik végre. 7

8 Teszt (igaz-hamis) 9. Az alábbi értékadás helyes: 10=++a; 10. Teljesen mindegy, hogy a programban mit írok: a++ vagy ++a, ugyanaz történik 11. int x=10; int y=3; int z=x/y; esetén z értéke 3, for (int i=0;i<10;i++){k } k utasítás 10-szer lesz végrehajtva 8

9 Programozási paradigmák Oszd meg és uralkodj paradigma A nagyobb feladat kisebb egymástól független részfeladatokra bontása Dinamikus programozás paradigma Ha a feladat nem bontható fel egymástól független részfeladatokra Az egymástól függő részfeladatok behatárolása, és a részeredmények tárolása 9

10 Függvények A függvény utasítások logikailag összefüggő csoportja, mely önálló névvel és visszatérési értékkel rendelkezik. Hívása printf( Hello ); Console.Clear(); Consol.WriteLine( Hello ); a=sin(x); Consol.WriteLine(sin(x)); Szerkezete Visszatérésiértéktípusa FüggvényNeve(paraméterlista) { Utasítások; Return visszatérési érték; } 10

11 Függvény végrehajtása, és definíciója static void terulet() { Console.WriteLine("Kérem a négyzet oldalát:"); int t = Int32.Parse(Console.ReadLine()); Console.WriteLine( t * t); } 1. Program belépési pontja (Entry point) static void Main(string[] args) { terulet(); Console.ReadLine(); } 11

12 Eljárás végrehajtása I. 12

13 Eljárás végrehajtása II. 13

14 Változók hatásköre A változók hatásköre az őket tartalmazó blokkra terjed ki. Ha több eljárás közt osztunk meg egy változót: Static módosítóval rendelkező eljáráshoz static módosítójú változót kell definiálni. 14

15 Függvény visszaadott értéke void int double Összetett adat pl. tömb Eljárás függvény 15

16 Paraméter átadás static void Kiiras(int a,int b) { Console.WriteLine("A {0}+{1}={2}",a,b,a+b); } 16

17 Függvény paraméterei Bemenő-Kimenő paraméterek Érték szerinti cím szerinti paraméter átadás Paraméterek, helyi változók tárolása 17

18 Átadott paraméter egyeztetése 18

19 Érték szerinti paraméter átadás 19

20 Cím szerinti paraméter átadás Átmenő, kimenő paraméter Ref, out 20

21 Paraméterátadás Szignatúra: függvény neve, és paraméterlistája az abban levő típusokkal Írhatunk azonos nevű függvényeket, ha a szignatúrájuk különböző. Polimorfizmus. Kérdés: Lehet-e egy programon belül definiálni az alábbi függvényeket? void mozgat(int x, int y); void mozgat (int x); void mozgat (int y); 21

22 File kezelés C#-an többszintű file kezelés létezik egymás mellett. Form alapú filekezelés (OpenFileDialog, SaveFileDialog) File-ok streamek, adatfolyamok Bináris file kezelés byte-ról byte-ra olvasható, írható a file XML fileok használata, szerializáció Konfigurációs file-ok használata 22

23 File kezelés Magas szintű file kezelés: a fileokat adatfolyamnak stream-nek tekintjük akárcsak a Console I/O-t. A stream a definíciója és a megnyitása után írható, olvasható. Használat végén be kell zárni!!!! System.IO névtér használata 23

24 //névtér megadása Using System.IO; File stream példa //FileStream megadása FileStream fs=new FileStream( c:\\eva\\text.txt, FileMode.Open); //Stream megadása olvasáshoz, íráshoz StreamWriter StreamReader rs=new StreamReader(fs); String s=rs.readline(); While(s!=null) { Console.WriteLine(s); s=rs.readline(); } rs.close(); fs.close(); 24

25 FileMode értékei Create CreateNew Open OpenOrCreate Append Truncate LÉTREHOZ (ha van törli) LÉTREHOZ (ha van akkor hiba) Megnyit (ha nincs akkor hiba) Megnyit, ha nincs létrehozza Megnyit hozzáfűzésre Megnyit és töröl 25

26 FileAccess értékei Read Write ReadWrite 26

27 A file vizsgálata Létezik-e File.Exists() Elértük-e a végét : a beolvasott sor értéke null 27

28 File-ba írás Using System.IO; StreamWriter sw=new c:\teszt.txt,filemode.open, FileAccess.Write, FileShare.None); For (int i=0; i<10;++i) { } sw.write(i.tostring()); sw.write( \n ); Sw.Close(); 28

29 Teszt Static int szamol(int a, double b) {return b/a;} 1. A szamol() egy eljárás 2. Az a és b formális paraméterek 3. Console.WriteLine( {0},szamol(5,6)); programsor helyes 4. Az int c=szamol(2,5) eredménye Cím szerinti paraméterátadás van a 4. feladatban 6. A Main függvénynek is lehet paramétere 7. Lehet készíteni static int szamol( int a, int b) fejlécű függvényt is ugyanebben a programban 8. A függvény szignatúrája a neve és paramétereinek típusa 29

30 Rekurzió fogalma A rekurzió a ciklusnál bonyolultabb programszerkezet, de ugyanarra való egy tevékenység ismételt végrehajtására. Rekurzió: Egy függvény saját magát hívja meg (közvetve, vagy közvetlenül). 30

31 Definíció (Specifikáció) 1. feladat: Számítsuk ki N faktoriálist Iteratív definíció Rekurzív definíció n! n i 1 i n 0 1 n 0 n! n *( n 1 1)! ha ha n 0 n 0 31

32 Rekurzió fogalma 1. feladat: Számítsuk ki N faktoriálist static int faktor(int n) { if (n == 0) return 1; int f=1; for (int i = 1; i <= n; i++) { f = f * i; } return f; } static int frek(int k) { if (k > 0) return k*frek(k-1); return 1; } 32

33 Kérdések 1. Hogy kerül ugyanazzal a kóddal megvalósított eljáráshoz mindig más bemenő érték? Bemenő érték problémája 2. Hogy kerül a hívó eljárásban a függvényérték felszínre? Értékvisszaadás problémája 3. Lokális a k változó. Melyik a sok közül? A lokális változók problémája 33

34 Rekurzív algoritmus készítése Közvetlen rekurzió: Ha az A algoritmus egyik lépése az A algoritmus végrehajtását írja elő. Közvetett rekurzió: Ha az A algoritmus egyik lépése a B algoritmus végrehajtása, a B algoritmus előírja az A algoritmus végrehajtását. Rekurzív algoritmusok végességének kritériumai Az algoritmusnak tartalmaznia kell egy alapesetet, amely közvetlenül megvalósítható Minden hivatkozásnál közelebb kell kerülni ehhez az alapesethez 34

35 Rekurzió alkalmazása a feladatmegoldásban Rekurzív specifikáció Nemrekurzív specifikáció Rekurzív algoritmus Nemrekurzív algoritmus Rekurzív programnyelv Nemrekurzív programnyelv Számítógép 35

36 2. Feladat A Fibonacci-számok Nyúlpár szaporodását írja le 0,1,1,2,3,5,8,13,21,34,55 Def: 0 ha n 0 Fib( n) 1 ha n 1 Fib( n 1) Fib( n 2) ha n 1 36

37 Faktoriális számítás sebességének vizsgálata N Iteratív Rekurzív 10 0,04 0,2 20 0,08 0, ,2 1, ,28 1,5 37

38 Rekurzió Iteráció Fibonacci sor, faktoriális számítás, Pascalháromszög 1. Rekurzió helyettesíthető iterációval 2. Az f(n-1), f(n-2) értékek tárolhatók tömbben Fib(N) F[0]=0, F[1]=1 Ciklus I=2 től N-ig F[I]=F[I-1]+F[I-2] Ciklus vége Fib=F[N] Eljárás vége 38

39 Jobbrekurzió Példa: Egy szöveg betűinek kiírása Betűk(X) Ha X nem üres akkor Ki: Első(X) Betűk(Elsőutániak(X)) Eljárás vége A rekurzív hívás a függvény végén van, utána már nincs szükség a függvény lokális változóira. A paraméterek az eredményt tartalmazzák, vagy a rekurzió szervezését segítik. 39

40 Balrekurzió Példa: Egy bekért számnál kisebb 2 hatványok kiírása visszafelé (Szöveg kiírása betűnként visszafelé) Hatványok(K,M) Ha K<=M akkor Hatványok(2*K,M); Ki:K Eljárás vége A Rekurzív hívás az eljárás elején van Sorozat megfordítása igényli, hogy az elemeket valamilyen adatszerkezetben tároljuk (verem, de lehet tömb is). 40

41 Nevezetes feladatok rekurzióra Hanoi tornyai Pascal háromszög Koch-fraktál Backtrack algoritmus 8 királynő problémája 41

42 Programtranszformációk Rekurzió-iteráció Elöltesztelő ciklus R_iteratív(x) Ciklus amig xxx S(x) Ciklus vége Eljárás vége R_rekurziv(x) Ha xxx akkor S(x) R_rekurziv(x) Elágazás vége Eljárás vége FeltételUtasításRekurzív hívás 42

43 Programtranszformációk Rekurzió-iteráció Hátultesztelő ciklus R_it(x) Ciklus s(x) Amíg xxx Ciklus vége Eljárás vége R_rek s(x) Ha xxx akkor R_rek(x) Eljárás vége UFR 43

44 Programtranszformációk Rekurzió-iteráció számlálós ciklus~előltesztelős i=kezdet Rek_it(i,n) Ciklus amíg i<=vég ciklusmag Ciklus vége Ha i<n ciklusmag Rek_it(i+1,n) Eljárás vége 44

45 Programtranszformációk ItElj(X) Y=g(X) ciklus amíg p(x,y) S(X,Y) ciklus vége X=h(X,Y) Eljárás vége Rek0Elj(X,Y) Ha p(x,y) akkor S(X,Y) Rek0Elj(X,Y) Eljárás vége Rek1Elj(X) Y=g(X) Rek0Elj(X,Y) X=h(X,Y) Eljárás vége 45

46 Iteráció rekurzió Miez Eljárás(A,X,K,E,V) K=(E+V)div 2 Ha A[K]<X akkor E=K+1 Ha A[K]>X akkor V(K-1) Ha A[K]!=X akkor Miez(A,X,K,E,V) Eljárás vége 46

47 Programozási tételek rekurzív megvalósítása:összegzés 1. Szumma(I,N) Ha I<=N akkor Szumma=A[I]+Szumma(I+1,N) Különben Szumma=0; Függvény vége 2. Szumma(N) Ha N>0 akkor Szumma=Szumma(N-1)+A(N) Különben Szumma=0 Függvény vége 47

48 A Quicksort rendezés Hoare (1960) Módszer: A() a rendezendő sorozat, X kulcs 1. Lépés: Válasszuk az első elemet kulcsnak. X=A(0) 2. Felosztás. A tömböt két részre bontjuk úgy, hogy egy K előtt ne legyen nála nagyobb, K után ne legyen nála kisebb elem 3. A K előtti, és a K utáni részt ugyanezzel a módszerrel külön-külön rendezzük. 48

49 Rendezés menete X= X= i j i j i j j< i X= j< i j= i K=j X= i j

50 Quick(A, E,V) Szétválogat(A,E,V,K) Ha K-E>1 akkor Quick(A,E,K-1) Ha V-K>1 akkor Quick(A, K+1,V) Eljárás vége Algoritmus Szétválogat1(A,E,V,K) K=E; J=V; I=E; X=A[J] Ciklus amíg J>I Ciklus amíg A[J]>X J=J-1 Ciklus vége Ciklus amíg A[I]<X i=i+1 Ciklus vége Ha J>I akkor csere(a[i],a[j]) K=J Ciklus vége Egyszerű szétválogatás sok cserével Szétválogat2(A,E,V,K) K=E; J=V; X=A[K] Ciklus amíg K<J és A[J]>=X J=J-1 Ciklus vége Ha K<J akkor A[K]=A[J]; K=K+1 Ciklus amíg K<J és A[K]<=X K=K+1 Ciklus vége Ha K<J akkor A[J]=A[K]; J=J-1 Elágazás vége Ciklus vége A[K]=X Eljárás vége X a helyére kerül az eljárásban 50

51 Quicksort rendezés jellemzői Rendezés stabilitása: Az azonos értékű elemek ugyanabban a sorrendben jelennek meg a kimeneti tömbben, ahogy a bemeneti tömbben szerepeltek. Quicksort nem stabil rendezés Keressünk példákat stabil rendezésekre! 51

52 Quicksort algoritmus időbonyolultsága Legjobb eset:o(n*log(n)) Legrosszabb eset:o(n 2 ) Átlagos eset:o(k*n*log(n)) n log 2 (n!) "n*log(n) "n 2 " , , ,

53 Quicksort iteratív algoritmusa veremmel Verem: eleje, vége Változók értékei: Eleje Vége Közepe

54 Gyorsrendezés iterációval verem segítségével lehet Quick(A,E,V) Verembe(0,0) Ciklus Ciklus Szétválogat(A,E,V,K) Ha V-K>1 akkor Verembe(K+1,V) V=K amíg V-E>0 Ciklus vége Veremből(E,V) Amíg E>0 Ciklus vége Eljárás vége 54

55 Teszt Készítsen rekurzív maximumkiválasztási algoritmust, és specifikációt! Készítsen rekurzív megszámolási algoritmust és specifikációt! 55

56 Objektum Orientált paradigma A szoftver krízis a szoftverfejlesztés válsága, miszerint egy hagyományos módszer (strukturált programozás) már nem képes az igényeknek megfelelő, minőségi szoftver előállítására. Cél: Olcsó Jó minőségű szoftver Szoftver elemek újrafelhasználhatósága Szoftver fejlesztés csapatmunkában (design és kód különválasztása) 56

57 Objektum definíció Elv: Legkisebb modul az objektum, melyben adatok és eljárások össze vannak zárva. Objektumok jellemzője: Egységbe zárás (Encapsulation) Felelősség Zártság Osztályozás Polimorfizmus Öröklődés Futás alatti kötés 57

58 Előzmények SIMULA67: Algol verzió, hajók modellezése objektumokkal 1969 Alan Kay egyetemista szakdolgozata az objektum orientált programozásról Xerox Smalltalk az első tiszta objektumorientált nyelv 80-as évek: OO paradigma általánosan elfogadottá vált 58

59 Objektum Elv: Legkisebb modul az objektum, melyben adatok és eljárások össze vannak zárva. Objektumok jellemzője: Zártság : a mezők tárolják az információt, a metódusok kommunikálnak a külvilággal. Az osztály változóit csak a metódusokon keresztül változtathatjuk meg. Felelősség Polimorfizmus Osztályozás Öröklődés Futás alatti kötés 59

60 UML feladata Egységesített modellező nyelv A program osztályainak és objektumainak megtervezését, és elemzését segítő modellező nyelv Jogilag is szabványos jelölésrendszer Grafikus nyelv, azaz a modellt diagramok segítségével ábrázolja Alkalmazható a vállalatok közötti információcsere eszközeként Nincs matematikailag bizonyítva a helyessége 60

61 UML Unified Modeling Language Rumbaugh Booch Jacobsen Az Objektumorientált rendszer saját feladattal bíró, egymással kommunikáló objektumok összesége. Felhasználói interfész Kontroll Implementáció objektum konténer Információ hordozó 61

62 Osztály fogalma Az osztály: Névvel ellátott típus, ami az adattagokat és a rajtuk végzett műveleteket egységben kezeli. Class Kutya { private int lábszám; private int kg; public int Ugat(paraméterek) {kód} } adatta g Metódus Felület: műveletek összesége UML Osztály -lábszám int -kg int + Ugat() 62

63 Programnyelvek csoportosítása Tiszta OO nyelv pl. C# - Programozás csak oo alapon képzelhető el. Minden komponens objektum. Feladat a saját osztályok elhelyezése a hierarchiában. Hibrid nyelvek pl. Turbo Pascal, C++ - kétféle paradigma mentén is elképzelhető a programozás. Objektum alapú nyelvek pl. 63

64 Objektum Az osztály példányosításával keletkezik Referencia típusú változó Kutya k=new Kutya(); Általában az Osztály nevét nagy kezdőbetűvel, az objektum nevét kis kezdőbetűvel írjuk 64

65 Láthatóságok - Privát- private csakis az osztályon belül elérhető # Védett protected hasonló mint a private, de a leszármazott osztályok módosíthatják + Nyilvános - public mindenki láthatja Zárt sealed Nem lehet örökítéssel továbbadni Belső internal Védett, belső protected internal Osztály szintű adat vagy metódus static 65

66 Adattagok módosítói const értékadás deklarációkor Minden példányban ugyanaz az értéke readonly értékadás konstruktorban Példányonként lehet más-más értéke 66

67 Átdefiniálás (overloading) Függvények túlterhelése Ugyanolyan nevű, de különböző szignatúrájú függvényeket létrehozhatunk osztályon belül is. 67

68 Konstruktor kötött a neve ugyanaz mint az osztály neve (C++, Java, C#) nincs visszatérési típusa fő feladata az objektum mezőinek inicializálása végrehajtódik, mielőtt bármely metódus meghívódhatna Túlterhelhető Egyik konstruktor hívhatja a másikat Másoló konstruktor 68

69 Destruktor Ezen metódusok gondoskodnak arról, hogy az objektum használatának befejeztekor az objektum által lefoglalt erőforrások (memória, file- ok, háttértároló, csatolt eszközök, stb.) felszabadításra kerüljenek. Destruktor neve ~jellel kezdődik, nincs visszatérési értéke és nincs paramétere, nincs hozzáférés módosítója Nincs destruktor túlterhelés A destruktorok meghívásának három módja lehet: a. explicit módon (programozó által // desktruktor jelleg)dispose b. implicit módon (objektum megszűnésekor (ref. számláló))null c. automatikusan (objektum nincs már használatban (garbage collector = gc))referencia elveszett 69

70 GC A destruktor automatikus meghívásának a folyamatát szemétgyűjtési algoritmusnak nevezzük (garbage collection, GC). A garbage collector az osztály Finalize függvényét hívja meg a destruktor függvényt a fordító egy Finalize függvényre alakítja Determinált destrukciós folyamatot az ún. Dispose metódus implementálásával oldhatjuk Programozási paradigmák meg. és technikák 70

71 Szemétgyűjtő algoritmus Nemdeterminisztikus GC működésbe lép, ha a processzor kihasználtsága csökken GC működésbe lép, ha a rendelkezésre álló memória lecsökken GC működésbe lép, ha hívjuk. A felszabadítás sorban történik 71

72 Dispose() használata bool disposed=false; protected void Dispose( bool disposing ) { if(!disposed ) {if (disposing) {// ide jön az erőforrás felszabadító kód } this.disposed=true; // nem kell több hívás ha van ősosztály, akkor annak dispose hívása base.dispose( disposing );//Ős destruktor hívása GC.SupressFinalize(this);///GC kikapcsolása } } 72

73 Tanács C#: Általában szükséges minden általunk létrehozott osztályhoz konstruktort/kat definiálni. C#: Általában nem szükséges desktruktort definiálni, megelégedhetünk az alapértelmezettel. 73

74 Tulajdonság public int X { get { return x; } set { this.x = value; } } Tulajdonság egy speciális függvény Nincs paramétere Használata értékadás formájú Set és get blokk Speciális változó value Figyelem X!=x Privát adattagok hozzáférhetők biztonságos módon Csak írható, csak olvasható tulajdonságok beállíthatók 74

75 Felbontott típusok (partial types) //file1.cs partial class PClass { public PClass() { } } //file2.cs partial class PClass { public void. }? Hol találkozhatunk felbontott típusokkal 75

76 Beágyazott osztályok Egy osztály tartalmazhat más osztályokat is. A beágyazott osztály hozzáfér az őt tartalmazó osztály minden adatához. Úgy viselkedik, mint egy lokális változó Pl. form és a rajta levő vezérlők class Outer {private class Inner //a beágyazott osztály nem látható { } } class Outer //de most már igen {public class Inner {} } Outer.Inner innerclass = new Outer.Inner(); //pélányosítás 76

77 Fogalmak Osztály Objektum Attributum Metódus Példányosítás Inicializálás Felület Tulajdonság Konstruktor Destruktor 77

78 Tanácsok Ha egy programelem önálló értelmezéssel, feladattal, tulajdonságokkal rendelkezik, akkor definiáljuk ezt az elemet önálló osztályként. Ha egy programrész adata önálló objektumként értelmezhető, akkor definiáljuk őt a kívánt osztálytípus objektumaként. Ha két osztály közös tulajdonságokkal rendelkezik, akkor használjuk az öröklés lehetőségét. Általában is elmondható, hogy ha a programokban az osztályok közös vonásokkal rendelkeznek, akkor törekedni kell univerzális bázisosztály létrehozására. Gyakran ezt absztrakt bázisosztálynak is nevezzük. Az osztályok definiálásakor kerüljük a nyitott (publikus) adatmezők használatát. 78

79 Öröklődés - Inheritance Egy, már létező típust terjeszthetünk ki, vagy bővíthetjük tetszőleges szolgáltatással. Az eredeti osztályt ősosztálynak nevezzük (szülő base class) Az továbbfejlesztett osztályt származtatott osztálynak (gyerek derived class) Egy ősből több származtatott osztályt készíthetünk (C++) vagy, Egy származtatott osztálynak egy őse van (C#), viszont lehetőség van interfész definiálásra. 79

80 Öröklés példa class utódnév: ősnév { // } ősnév utódnév 80

81 class ős { private int i; // privát mező protected int j; // protected mezőtag public int k; // publikus mezők public void f(int j) { i=j; }; } class utód: ős { }; 81

82 Öröklés típusai Más programnyelvben: public, protected, privát csak szűkíteni lehet a láthatóságot! C# - csak publikus öröklés, a mezők változatlan láthatósággal adódnak tovább 82

83 Konstruktor, destruktor végrehajtási sorrendje Konstruktor nem öröklődik, hanem hívódik Ős. konstruktor() // ha nincs direkt őskonstruktor hívás (base) Utód.konstruktor Utód.destruktor Ős.destruktor Paraméteres konstruktor hívása: utod(paraméterek):base(paraméterek) { } 83

84 Lezárt osztály Sealed kulcsszó Megtiltjuk, hogy új osztályt származtassunk belőle (public sealed class kutya:allat) Lezárt függvény - nem lehet a későbbiekben átdefiniálni public sealed override void eat(){} 84

85 Zárt osztály nem lehet belőle leszármaztatni sealed class végleges { public végleges() { Console.WriteLine( "A konstruktor" ); } class utód:végleges // fordítási hiba { } 85

86 Korai kötés A példányváltozó típusa fordítási időben rögzül Metódustábla e=m; e.kiir(); //Mi történik? m.kiir(); //?? A döntést a fordító még akkor meghozza, amikor a class elso osztályt fordítja le. A döntést később már nem másíthatja meg, hiába definiáljuk felül a visszaad metódust. 86

87 Korai kötés A példányváltozó típusa fordítási időben rögzül Metódustábla E e=new E(); H h=new H(); E ős és H az utód, vagy H ős és E az utód? e=h; e.kiir(); //Mi történik? h.kiir() 87

88 Késői kötés Az OOP viselkedését, hogy egy metódus belsejében szereplő másik metódushívás másmás viselkedést mutat (más-más tényleges eljárás hívás történik a futtatás során) sokalakúságnak, polimorfizmusnak nevezzük. A példányváltozó típusa futás alatt változhat virtual-override new - sealed 88

89 Késői kötés A példányváltozó típusa futás alatt változhat Virtuális metódus tábla virtual-override sealed-new 89

90 Késői kötés class elso { public virtual int visszaad() { return 1; } public void kiir() { System.Console.WriteLine("Érték={0}", visszaad()); } } class masodik:elso { override public int visszaad() { return 2; } } Elso a=new elso(); Mi kerül a képernyőre? masodik b = new masodik(); a.kiir(); b.kiir(); 90

91 Típuskonverzió Típus lekérdezése object.gettype() Is és as Típusazonosság lekérdezéséhez (is) if (a is object) Típuskonverzióhoz (as) referenciatípusnál Castolás (Button)sender Pl. (sender as Button) referencia és érték típusnál object Button 91

92 Absztrakt osztály megköveteljük, hogy a leszármazott osztály implementálja a metódust abstract class os {private int e; public abstract int szamol();} class szamolo:os { public szamolo():base(3) { } public override int szamol() { } } 92

93 TESZT Mit csinál az alábbi program? public new void Close() { i++; this.text = i.tostring(); System.Threading.Thread.Sleep(5000); if (i < 5) Close(); else { MessageBox.Show("Most zárom!"); base.close(); } } private void button1_click(object sender, EventArgs e) { this.close(); } 93

94 Öröklődés - Adattagok A származtatott osztály Tartalmazza (örökli) a public mezőket és fel is használhatja Tartalmazza (örökli) a protected mezőket és fel is használhatja Tartalmazza a private mezőket, a memóriaigénybe beszámít, de nem használhatja azokat. De!! Az örökölt metódusok használhatják a privát mezőket. 94

95 Példa class TPont{ private int x,y; public void Balra_tol(){if(x>0) x--;} } class Tkor:Tpont{ public void KorBalratol(){ Balra_tol(); //működik? } X--; } //működik?? 95

96 Új adatok a származtatott osztályban class elso {private int x; protected int y; public int z; } class masodik:elso { int x; //?? int y; //?? int z; //?? } vagy class masodik:elso { int x; //?? new int y; //?? new int z; //?? } new kulcsszóval jelezzük a fordítóprogramnak: szándékos átdefiniálás! 96

97 Örökölt mezők II. Nem lehetséges a típus megváltoztatása De new kulcsszóval újra bevezethetjük. Átdefiniálással a mezők hatáskörét változtatjuk meg. Az örökölt mezők hatásköre az ősosztály, az átdefiniált az utódra vonatkozik. class elso {private int x; protected int y; Public int z; } Class masodik:elso { int x; //?? new float y; //?? new double z; //?? } Régi mezők elérése minősített névvel: new float z; Public akarmi() { z=1.1; //float elso.z=1; //örökölt z } 97

98 Öröklődés - metódusok class elso { public int visszaad() { return 1;} public void kiir() { System.Console.WriteLine( érték:{0}, visszaad()) } } class masodik:elso { new public int visszaad(){return2;} } Class Test { Static void Main(){ Masodik a=new masodik(); a.kiir(); } } Mi kerül a képernyőre? 1 v 2 98

99 Örökölt metódusok II. A gyerekosztályban lehet ugyanolyan nevű metódust létrehozni Ha a paraméterezése ugyanaz, használni kell a new kulcsszót Ha a szignatúra nem ugyanaz akkor nem kell a new (overloading) Az új metódust az ős osztály metódusai nem látják 99

100 Virtuális Metódus Tábla (VMT) Késői kötésre csak a virtuális metódusok meghívásakor kerülhet sor. Ilyenkor a fordító nem egy konkrét eljáráshívást fordít le, hanem egy utasítássorozatot, amely futás közben egy keresést hajt végre, hogy meghatározza, melyik metódusverziót kell konkrétan meghívni. (az elérhető legfrissebbet) A nyilvántartást végzi a VMT A táblázatban a metódusok indításához szükséges információk vannak eltárolva (pl. a metódusok memóriacímei, amely alapján azokat el lehet indítani) Mindig egy osztályhoz tartozik VMT Algoritmus 1. Induláskor megegyezik az ős VMT-jével. 2. Virtual kulcsszóval bevezetett metódusok bekerülnek a VMT-be (a végére) 3. Ha override kulcsszóval felüldefiniáltunk egy létező virtuális metódust, akkor a VMT bejegyzés kicserélődik az új metódusra. 100

101 VMT Class elso VMT Int visszaad() Void kiir() Elso.visszaad() Elso.kiir() Class masodik VMT Int visszaad() Void kiir() Masodik.visszaad() Elso.kiir() Előny: A késői kötést feloldó programkód rövid, egyszerű, gyors Hátrány VMT tábla készítése fordítási idő A példányokhoz a VMT táblát hozzá kell rendelni - futási időben a konstruktor Memóriaigény 101

102 class elso { public virtual int metodus_ a() {... } public virtual int metodus_ d() {... } public void metodus_ c() { metodus_ a(); } } class masodik: elso { public override int metodus_ a() {... } public virtual int metodus_ b() {... } } class elso VMT. Int metodus_ a() elso. metodus_ a Int metodus_ d() elso. metodus_ d class masodik VMT Int metodus_ a() masodik. metodus_ a Int metodus_ d() elso. metodus_ d Int metodus_ b() masodik. metodus_ b 102

103 A késői kötés fordítása során olyan programkód kerül fordításra, amely a VMT táblázat alapján hozza meg a döntést, hogy melyik konkrét metódust kell meghívni. Az e.metodus_c() esetén az e példányhoz az class elso VMT tábla tartozik, hiszen az e példány az elso osztály egy példánya! Ezért a késői kötés a class elso VMT tábla szerint a metodus_a() hívás esetén az elso.metodus_a() metódust kell meghívni. A m.metodus_c() esetén az m példányhoz az class masodik VMT tábla tartozik, hiszen az m példány az masodik osztály egy példánya! Ezért a késői kötés a class masodik VMT tábla szerint a metodus_a() hívás esetén a masodik.metodus_a() metódust kell meghívni. 103

104 Dinamikus Metódus Tábla A szerepe megfelel a VMT-nek (késői kötés feloldását támogatni) Kevesebb memóriaigénye van, mint a VMT-nek Lassúbb a kezelése Felépítése: Hasonló, mint a VMT Osztályhoz van hozzárendelve A DMT induláskor üres Ha az osztályban bevezetünk egy új virtuális metódust a virtual kulcsszóval, akkor ezen metódus bekerül a táblázatba (a végére) Ha az osztályban felüldefiniáltunk egy már létező virtuális metódust az override kulcsszóval, akkor ez is bekerül a táblázatba 104

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

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

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

é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

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

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. #6 (VMT és DMT) v :33:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

OOP. #6 (VMT és DMT) v :33:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. OOP #6 (VMT és DMT) v1.0 2003.03.07. 19:33: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_06-1 - E jegyzet másolata

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

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája Adatszerkezetek Összetett adattípus Meghatározói: A felvehető értékek halmaza Az értékhalmaz struktúrája Az ábrázolás módja Műveletei Adatszerkezet fogalma Direkt szorzat Minden eleme a T i halmazokból

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

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

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

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 3. rész Tulajdonságok Indexelők Kivételkezelés 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

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

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

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

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

Informatika terméktervezőknek

Informatika terméktervezőknek Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások

Részletesebben

Bánsághi Anna anna.bansaghi@mamikon.net

Bánsághi Anna anna.bansaghi@mamikon.net ESEMÉNYVEZÉRELT PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 2. ELŐADÁS - C# ÁTTEKINTÉS - 2 2015 Bánsághi Anna 1 of 64 TEMATIKA I. C# ÁTTEKINTÉS II. WPF III. Modern UI 2015 Bánsághi Anna 2 of 64

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

Globális operátor overloading

Globális operátor overloading Programozás II. 9. gyakorlat Operátor overloading 2: Unáris operátorok, globálisan megvalósított operátorok, > operátorok Kivételkezelés, IO library Globális operátor overloading Előző alkalommal

Részletesebben

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter Adatszerkezetek Tömb, sor, verem Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot

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

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

OOP #1 (Bevezetés) v1.0 2003.03.07. 18:39:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

OOP #1 (Bevezetés) v1.0 2003.03.07. 18:39:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. OOP #1 (Bevezetés) v1.0 2003.03.07. 18:39: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_01-1 - E jegyzet másolata

Részletesebben

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek Tömb Ugyanolyan típusú elemeket tárol A mérete előre definiált kell legyen és nem lehet megváltoztatni futás során Legyen n a tömb mérete. Ekkor:

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

1. Bevezetés A C++ nem objektumorientált újdonságai 3

1. Bevezetés A C++ nem objektumorientált újdonságai 3 Előszó xiii 1. Bevezetés 1 2. A C++ nem objektumorientált újdonságai 3 2.1. A C és a C++ nyelv 3 2.1.1. Függvényparaméterek és visszatérési érték 3 2.1.2. A main függvény 4 2.1.3. A bool típus 4 2.1.4.

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

C++ programozási nyelv

C++ programozási nyelv C++ programozási nyelv Gyakorlat - 8. 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/12 Tartalomjegyzék Miért

Részletesebben

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek: A programozás alapjai 1 Dinamikus adatszerkezetek:. előadás Híradástechnikai Tanszék Dinamikus adatszerkezetek: Adott építőelemekből, adott szabályok szerint felépített, de nem rögzített méretű adatszerkezetek.

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

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

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

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

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

Adatszerkezetek 1. Dr. Iványi Péter

Adatszerkezetek 1. Dr. Iványi Péter Adatszerkezetek 1. Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot kódoltan tároljuk

Részletesebben

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

Bánsághi Anna 2014 Bánsághi Anna 1 of 35 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 4. ELŐADÁS - ADATFOLYAMOK KEZELÉSE 2014 Bánsághi Anna 1 of 35 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív

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

Programozás módszertan p.1/46

Programozás módszertan p.1/46 Programozás módszertan Öröklődés Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA ÉS ÁLTALÁNOS TECHNIKA TANSZÉK MAGYAR TUDOMÁNYOS AKADÉMIA SZÁMÍTÁSTECHNIKAI ÉS

Részletesebben

C# osztályok. Krizsán Zoltán

C# osztályok. Krizsán Zoltán C# osztályok Krizsán Zoltán Fogalma Önálló hatáskőrrel rendelkező, absztrakt adattípus, amely több, különböző elemet tartalmazhat. Minden esetben a heap-en jön létre! A programozó hozza létre, de a GC

Részletesebben

.Net adatstruktúrák. Készítette: Major Péter

.Net adatstruktúrák. Készítette: Major Péter .Net adatstruktúrák Készítette: Major Péter Adatstruktúrák általában A.Net-ben számos nyelvvel ellentétben nem kell bajlódnunk a változó hosszúságú tömbök, listák, sorok stb. implementálásával, mert ezek

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

Ö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

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

1. Öröklés Rétegelés Nyilvános öröklés - isa reláció Korlátozó öröklődés - has-a reláció

1. Öröklés Rétegelés Nyilvános öröklés - isa reláció Korlátozó öröklődés - has-a reláció 1. Öröklés Az objektum orientált tervezés fontos sarkköve, az osztályok viszonyainak a megtervezése. 1.1. Rétegelés c l a s s Address {..... c l a s s Name {..... c l a s s P e r s o n { Name name ; Address

Részletesebben

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok 2010. január 8. Bevezet El z órák anyagainak áttekintése Ismétlés Adatszerkezetek osztályozása Sor, Verem, Lengyelforma Statikus, tömbös reprezentáció Dinamikus, láncolt reprezentáció Láncolt lista Lassú

Részletesebben

Generikus Típusok, Kollekciók

Generikus Típusok, Kollekciók Generikus Típusok, Kollekciók Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 1 / 26 Tartalomjegyzék 1 Enumeráció 2 Generikus Típusok 3 Kollekciók System.Collections

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

Generikus osztályok, gyűjtemények és algoritmusok

Generikus osztályok, gyűjtemények és algoritmusok Programozási, gyűjtemények és algoritmusok bejárása Informatikai Kar Eötvös Loránd Tudományegyetem 1 Tartalom 1 bejárása 2 bejárása 2 Java-ban és UML-ben bejárása Az UML-beli paraméteres osztályok a Java

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

Rekurzió. Dr. Iványi Péter

Rekurzió. Dr. Iványi Péter Rekurzió Dr. Iványi Péter 1 Függvényhívás void f3(int a3) { printf( %d,a3); } void f2(int a2) { f3(a2); a2 = (a2+1); } void f1() { int a1 = 1; int b1; b1 = f2(a1); } 2 Függvényhívás void f3(int a3) { printf(

Részletesebben

Adatszerkezetek 7a. Dr. IványiPéter

Adatszerkezetek 7a. Dr. IványiPéter Adatszerkezetek 7a. Dr. IványiPéter 1 Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér () Nincsennek hurkok!!! 2 Bináris fák Azokat a

Részletesebben

Programozási technológia

Programozási technológia Programozási technológia Generikus osztályok Gyűjtemények Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Generikus osztályok Javaban az UML paraméteres osztályainak a generikus (sablon) osztályok felelnek

Részletesebben

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18 C# Nyelvi Elemei Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei 2013 1 / 18 Tartalomjegyzék 1 Object 2 Típusok 3 String 4 RegEx Tóth Zsolt (Miskolci Egyetem) C# Nyelvi

Részletesebben

JAVA SE/ME tanfolyam tematika

JAVA SE/ME tanfolyam tematika JAVA SE/ME tanfolyam tematika TANFOLYAM TEMATIKA: A JAVA MEGISMERÉSE Java története, miért készült, miért népszerű NETBEANS környezet telepítése, megismerése Programozási alapok java nyelven Változók,primitív

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

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

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

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 1. Előadás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási Tanszék www.kjit.bme.hu Programozás

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

BME MOGI Gépészeti informatika 4.

BME MOGI Gépészeti informatika 4. BME MOGI Gépészeti informatika 4. 1. feladat önálló feladatmegoldás Generáljon két 1 és 10 közötti véletlen egész számot, majd kiírja ezekre a számokra a tízes szorzótáblákat! Ha az első generált szám

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

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

Elemi adatszerkezetek

Elemi adatszerkezetek 2017/12/16 17:22 1/18 Elemi adatszerkezetek < Programozás Elemi adatszerkezetek Szerző: Sallai András Copyright Sallai András, 2011, 2014 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu

Részletesebben

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1

Részletesebben

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök Programozás alapjai II. (8. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT Speciális adatszerkezetek A helyes adatábrázolás választása, a helyes adatszerkezet

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

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

I. rész: A Microsoft Visual C# és a Microsoft Visual Studio 2005 bemutatása. 1. Üdvözöljük a C# világában! 3

I. rész: A Microsoft Visual C# és a Microsoft Visual Studio 2005 bemutatása. 1. Üdvözöljük a C# világában! 3 Köszönetnyilvánítás Bevezetés Honnan kezdjük a könyv olvasását? A könyvben használt konvenciók és egyéb jelölések Konvenciók Egyéb jelölések Online kiegészítő tartalom Technológiai frissítések Rendszerkövetelmények

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

Programozás alapjai II. (7. ea) C++

Programozás alapjai II. (7. ea) C++ Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1

Részletesebben

Web-programozó Web-programozó

Web-programozó Web-programozó Az Országos Képzési Jegyzékről és az Országos Képzési Jegyzékbe történő felvétel és törlés eljárási rendjéről szóló 133/2010. (IV. 22.) Korm. rendelet alapján. Szakképesítés, szakképesítés-elágazás, rész-szakképesítés,

Részletesebben

Algoritmusok és adatszerkezetek gyakorlat 07

Algoritmusok és adatszerkezetek gyakorlat 07 Algoritmusok és adatszerkezetek gyakorlat 0 Keresőfák Fák Fa: összefüggő, körmentes gráf, melyre igaz, hogy: - (Általában) egy gyökér csúcsa van, melynek 0 vagy több részfája van - Pontosan egy út vezet

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

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 3. rész Tulajdonságok Indexelık Kivételkezelés 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

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

Bánsághi Anna anna.bansaghi@mamikon.net

Bánsághi Anna anna.bansaghi@mamikon.net ESEMÉNYVEZÉRELT PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 1. ELŐADÁS - C# ÁTTEKINTÉS - 1 2015 Bánsághi Anna 1 of 84 TEMATIKA I. C# ÁTTEKINTÉS II. WPF III. Modern UI 2015 Bánsághi Anna 2 of 84

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

C#, OOP. Osztályok tervezése C#-ban

C#, OOP. Osztályok tervezése C#-ban C#, OOP Osztályok tervezése C#-ban OOP Létrehozás (creating) Megszüntetés (destroying) Túlterhelés (overlading) Felsorolás típus (enumerated types) 2 Hajó osztály Sailboat class using System; class Sailboat

Részletesebben

A programozás alapjai 1 Rekurzió

A programozás alapjai 1 Rekurzió A programozás alapjai Rekurzió. előadás Híradástechnikai Tanszék - preorder (gyökér bal gyerek jobb gyerek) mentés - visszaállítás - inorder (bal gyerek gyökér jobb gyerek) rendezés 4 5 6 4 6 7 5 7 - posztorder

Részletesebben

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

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606 Dr. Bécsi Tamás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási

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

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

Programozás II. 2. Dr. Iványi Péter Programozás II. 2. Dr. Iványi Péter 1 C++ Bjarne Stroustrup, Bell Laboratórium Első implementáció, 1983 Kezdetben csak precompiler volt C++ konstrukciót C-re fordította A kiterjesztés alapján ismerte fel:.cpp.cc.c

Részletesebben

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Vizuális és eseményvezérelt programozás , II. félév BMF NIK Vizuális és eseményvezérelt programozás 2006 2007, II. félév BMF NIK Eseménykezelés A képviselő( delegate ) Képviselők C# nyelvi megvalósítása Metódushívás képviselőn keresztül Az esemény ( event ) Esemény

Részletesebben

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás. Szénási Sándor

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás.  Szénási Sándor Láncolt listák Egyszerű, rendezett és speciális láncolt listák előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Láncolt

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

Szoftvertervezés és -fejlesztés I.

Szoftvertervezés és -fejlesztés I. Szoftvertervezés és -fejlesztés I. Operátorok Vezérlési szerkezetek Gyakorlás 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.

Részletesebben

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

Bánsághi Anna 2014 Bánsághi Anna 1 of 68 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 1. rész Osztályok és objektumok Mezık és metódusok Konstruktor és destruktor Névterek és hatókörök Láthatósági szintek Osztály szintő tagok Beágyazott osztályok

Részletesebben

Fordított és szkript nyelvek összehasonlító elemzése. Sergyán Szabolcs

Fordított és szkript nyelvek összehasonlító elemzése. Sergyán Szabolcs Fordított és szkript nyelvek összehasonlító elemzése Sergyán Szabolcs IEEE: The 2016 Top Programming Languages IEEE: The 2016 Top Programming Language (Enterprise) Kutatás-fejlesztésben használt nyelvek

Részletesebben

Adatszerkezetek 1. előadás

Adatszerkezetek 1. előadás Adatszerkezetek 1. előadás Irodalom: Lipschutz: Adatszerkezetek Morvay, Sebők: Számítógépes adatkezelés Cormen, Leiserson, Rives, Stein: Új algoritmusok http://it.inf.unideb.hu/~halasz http://it.inf.unideb.hu/adatszerk

Részletesebben

Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani

Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani Mi a legabsztraktabb típus a JAVA-ban? Object Mikor preferált interface-ek használata a konkrét típusok helyett? Ha egy osztály több interfacet is használhasson, vagy ha fvek implementálását a az osztályra

Részletesebben

Pénzügyi algoritmusok

Pénzügyi algoritmusok Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök

Részletesebben