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

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

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

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

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

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

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

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

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

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

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

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

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

OOP. Alapelvek Elek Tibor

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

Részletesebben

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Java programozási nyelv

Java programozási nyelv Java programozási nyelv 2. rész Vezérlő szerkezetek 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/23 Tartalomjegyzék

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

Szoftvertechnolo gia gyakorlat

Szoftvertechnolo gia gyakorlat Szoftvertechnolo gia gyakorlat Dr. Johanyák Zsolt Csaba http://johanyak.hu 1. Dependency Injection (függőség befecskendezés) tervezési minta A tervezési minta alapgondolata az, hogy egy konkrét feladatot

Részletesebben

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

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

Részletesebben

Programozás II gyakorlat. 6. Polimorfizmus

Programozás II gyakorlat. 6. Polimorfizmus Programozás II gyakorlat 6. Polimorfizmus Típuskonverziók C-ben: void * ptr; int * ptr_i = (int*)ptr; Ez működik C++-ban is. Használjuk inkább ezt: int * ptr_i = static_cast(ptr); Csak egymással

Részletesebben

Oktatási segédlet 2014

Oktatási segédlet 2014 Oktatási segédlet 2014 A kutatás a TÁMOP 4.2.4.A/2-11-1-2012- 0001 azonosító számú Nemzeti Kiválóság Program Hazai hallgatói, illetve kutatói személyi támogatást biztosító rendszer kidolgozása és működtetése

Részletesebben

INFORMATIKAI ALAPISMERETEK

INFORMATIKAI ALAPISMERETEK Informatikai alapismeretek középszint 1021 ÉRETTSÉGI VIZSGA 2011. május 13. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ NEMZETI ERŐFORRÁS MINISZTÉRIUM

Részletesebben

Objektumorientált programozás C# nyelven III.

Objektumorientált programozás C# nyelven III. Objektumorientált programozás C# nyelven III. Kivételkezelés Tulajdonságok Feladatok Készítette: Miklós Árpád Dr. Kotsis Domokos Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és

Részletesebben

Információs Technológia

Információs Technológia Információs Technológia Rekurzió, Fa adatszerkezet Fodor Attila Pannon Egyetem Műszaki Informatika Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. november 18. Rekurzió Rekurzió

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

2011.11.29. JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

2011.11.29. JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése Tartalom Integrált fejlesztés Java platformon JUnit JUnit használata Tesztelési technikák Demo 2 A specifikáció alapján teszteljük a program egyes részeit, klasszikus V-modell szerint Minden olyan metódust,

Részletesebben

Egyirányban láncolt lista

Egyirányban láncolt lista Egyirányban láncolt lista A tárhely (listaelem) az adatelem értékén kívül egy mutatót tartalmaz, amely a következő listaelem címét tartalmazza. A láncolt lista első elemének címét egy, a láncszerkezeten

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

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 Láthatósági szintek Névterek és hatókörök Osztály szintő tagok Beágyazott osztályok

Részletesebben

Adatstruktúrák Algoritmusok Objektumok

Adatstruktúrák Algoritmusok Objektumok Adatstruktúrák Algoritmusok Objektumok A számítógépes problémamegoldás modellezésének módszerei. Programozási elvek és módszerek: imperatív, strukturált, moduláris, objektumorientált programozás. Programozási

Részletesebben

Programozás. Objektum Orientált Programozás (OOP) Alapfogalmak. Fodor Attila

Programozás. Objektum Orientált Programozás (OOP) Alapfogalmak. Fodor Attila Programozás Objektum Orientált Programozás (OOP) Alapfogalmak Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. február 18.

Részletesebben

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

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

Részletesebben

Fák 2009.04.06. Témakörök. Fa definíciója. Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa

Fák 2009.04.06. Témakörök. Fa definíciója. Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa Fák szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa Témakörök 2 Fa (Tree): csomópontok

Részletesebben

Alkalmazott Modul III 6. előadás. Objektumorientált programozás: öröklődés és polimorfizmus

Alkalmazott Modul III 6. előadás. Objektumorientált programozás: öröklődés és polimorfizmus Eötvös Loránd Tudományegyetem Természettudományi Kar Alkalmazott Modul III 6. előadás Objektumorientált programozás: öröklődés és polimorfizmus 2011.10.24. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

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

Fejlett programozási nyelvek C++ Iterátorok

Fejlett programozási nyelvek C++ Iterátorok Fejlett programozási nyelvek C++ Iterátorok 10. előadás Antal Margit 2009 slide 1 Témakörök I. Bevezetés II. Iterátor definíció III. Iterátorok jellemzői IV. Iterátorkategóriák V. Iterátor adapterek slide

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

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

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

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

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

Osztály és objektum fogalma

Osztály és objektum fogalma Osztály és objektum fogalma A C++ programozási nyelv I. CPP1/ 1 Az osztály (class) class: adatok és módszerek (method) (függvények) együttese, amely absztrakt adattípusként működik. objektum: egy osztály

Részletesebben

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein. Programozás C++ osztályok Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. április 8. Csak bázisosztályként használt/értelmezhető

Részletesebben

VB C++ C# JScript J# Common Language Specification. ADO.NET and XML. Base Class Library. Common Language Runtime. Operating System

VB C++ C# JScript J# Common Language Specification. ADO.NET and XML. Base Class Library. Common Language Runtime. Operating System P r o g r a m o z á s i n y e l v e k I I. C # E jegyzet másolata nem használható fel szabadon,az előadás anyagának kivonata. Ezen teljes jegyzetről,vagy annak bármely részéről bármely másolat készítéséhez

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

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem A számítástudomány alapjai Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem Bináris keresőfa, kupac Katona Gyula Y. (BME SZIT) A számítástudomány

Részletesebben

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

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

Részletesebben

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

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

Magas szintű programozási nyelvek 2 Előadás jegyzet

Magas szintű programozási nyelvek 2 Előadás jegyzet Magas szintű programozási nyelvek 2 Előadás jegyzet 1. Rendszerfejlesztés 0. lépés: Elemzés (analízis) 1. lépés: Tervezés a, technológia független rész b, technológia függő rész 2. lépés: Megvalósítás

Részletesebben

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása 1 Információk 2 A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin Elérhetőség mesko.katalin@tfk.kefo.hu Fogadóóra: szerda 9:50-10:35 Számonkérés időpontok Április 25. 9 00 Május 17. 9 00 Június

Részletesebben

Programozás C és C++ -ban

Programozás C és C++ -ban Programozás C és C++ -ban 2. További különbségek a C és C++ között 2.1 Igaz és hamis A C++ programozási nyelv a C-hez hasonlóan definiál néhány alap adattípust: char int float double Ugyanakkor egy új

Részletesebben

Web-technológia PHP-vel

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

Részletesebben

1. Alapok. #!/bin/bash

1. Alapok. #!/bin/bash 1. oldal 1.1. A programfájlok szerkezete 1. Alapok A bash programok tulajnképpen egyszerű szöveges fájlok, amelyeket bármely szövegszerkesztő programmal megírhatunk. Alapvetően ugyanazokat a at használhatjuk

Részletesebben

Bánsághi Anna anna.bansaghi@mamikon.net. 2014 Bánsághi Anna 1 of 31

Bánsághi Anna anna.bansaghi@mamikon.net. 2014 Bánsághi Anna 1 of 31 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 9. ELŐADÁS - OOP TERVEZÉS 2014 Bánsághi Anna 1 of 31 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív paradigma

Részletesebben

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

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

Részletesebben

Programozási Paradigmák. és Technikák

Programozási Paradigmák. és Technikák Programozási Paradigmák Láncolt Lista Generikus osztályok Láncolt Lista megvalósítása Bináris keresőfa (BST) BST megvalósítása Gráfok Dijkstra algoritmus Kruskal algoritmus és Technikák szabo.zsolt@nik.uni-obuda.hu

Részletesebben

Mindenki abból a három tantárgyból tesz szigorlatot, amelyet hallgatott.

Mindenki abból a három tantárgyból tesz szigorlatot, amelyet hallgatott. Szigorlati témakörök az Informatika (szigorlat) (BMEVIAU0181) c. tantárgyat felváltó Informatika (BMEGERIEEIS) tantárgyból az okleveles energetikai mérnökképzés (2N-0E) hallgatói számára 1. tantárgy: Programozás

Részletesebben

Számláló rendezés. Példa

Számláló rendezés. Példa Alsó korlát rendezési algoritmusokra Minden olyan rendezési algoritmusnak a futását, amely elempárok egymással való összehasonlítása alapján működik leírja egy bináris döntési fa. Az algoritmus által a

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

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1] Kupac adatszerkezet A bináris kupac egy majdnem teljes bináris fa, amely minden szintjén teljesen kitöltött kivéve a legalacsonyabb szintet, ahol balról jobbra haladva egy adott csúcsig vannak elemek.

Részletesebben

Magas szintű adatmodellek Egyed/kapcsolat modell I.

Magas szintű adatmodellek Egyed/kapcsolat modell I. Magas szintű adatmodellek Egyed/kapcsolat modell I. Ullman-Widom: Adatbázisrendszerek. Alapvetés. 4.fejezet Magas szintű adatmodellek (4.1-4.3.fej.) (köv.héten folyt.köv. 4.4-4.6.fej.) Az adatbázis modellezés

Részletesebben

Objektumorientált szoftverfejlesztés alapjai

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

Részletesebben

Algoritmusok és adatszerkezetek II.

Algoritmusok és adatszerkezetek II. Algoritmusok és adatszerkezetek II. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 3. Kiegyensúlyozott keresőfák A T tulajdonság magasság-egyensúlyozó

Részletesebben

Algoritmusok pszeudókód... 1

Algoritmusok pszeudókód... 1 Tartalomjegyzék Algoritmusok pszeudókód... 1 Abszolút érték... 1 Hányados ismételt kivonással... 1 Legnagyobb közös osztó... 2 Páros számok szűrése... 2 Palindrom számok... 2 Orosz szorzás... 3 Minimum

Részletesebben

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani. Vizuális programozás 1. A gyakorlat célja A gyakorlat célja a Könyvtár alkalmazás folytatása az előző gyakorlaton elkészített grafikus felület felhasználásával. Elsőként lemásoljuk az előző gyakorlat eredményeként

Részletesebben

Algoritmusok pszeudókód... 1

Algoritmusok pszeudókód... 1 Tartalomjegyzék Algoritmusok pszeudókód... 1 Abszolút érték... 1 Hányados ismételt kivonással... 1 Legnagyobb közös osztó... 1 Páros számok szűrése... 2 Palindrom számok... 2 Orosz szorzás... 2 Minimum

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

Tartalomjegyzék Algoritmusok - pszeudókód... 1 42

Tartalomjegyzék Algoritmusok - pszeudókód... 1 42 Tartalomjegyzék Algoritmusok - pszeudókód... 1 42 Abszolút érték...1 Hányados ismételt kivonással...1 Legnagyobb közös osztó... 1 2 Páros számok szűrése...2 Palindrom számok... 2 3 Orosz szorzás...3 Minimum

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

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával) Adatszerkezetek I. 7. előadás (Horváth Gyula anyagai felhasználásával) Bináris fa A fa (bináris fa) rekurzív adatszerkezet: BinFa:= Fa := ÜresFa Rekord(Elem,BinFa,BinFa) ÜresFa Rekord(Elem,Fák) 2/37 Bináris

Részletesebben

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1 Köszönetnyilvánítás Bevezetés Kinek szól a könyv? Elvárt előismeretek A könyv témája A könyv használata A megközelítés alapelvei Törekedjünk az egyszerűségre! Ne optimalizáljunk előre! Felhasználói interfészek

Részletesebben

Osztály öröklődés. Öröklődés és polimorfizmus. Programozás II. előadás. http://nik.uni-obuda.hu/prog2 Szénási Sándor. szenasi.sandor@nik.uni-obuda.

Osztály öröklődés. Öröklődés és polimorfizmus. Programozás II. előadás. http://nik.uni-obuda.hu/prog2 Szénási Sándor. szenasi.sandor@nik.uni-obuda. Osztály öröklődés Öröklődés és polimorfizmus 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 Öröklődés Polimorfizmus Osztályok

Részletesebben

Absztrakt adatstruktúrák A bináris fák

Absztrakt adatstruktúrák A bináris fák ciós lámpa a legnagyobb élettartamú és a legjobb hatásfokú fényforrásnak tekinthető, nyugodtan mondhatjuk, hogy a jövő fényforrása. Ezt bizonyítja az a tény, hogy ezen a területen a kutatások és a bejelentett

Részletesebben

INFORMATIKAI ALAPISMERETEK

INFORMATIKAI ALAPISMERETEK Informatikai alapismeretek középszint 0801 ÉRETTSÉGI VIZSGA 2009. május 22. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ OKTATÁSI ÉS KULTURÁLIS MINISZTÉRIUM

Részletesebben

INFORMATIKAI ALAPISMERETEK

INFORMATIKAI ALAPISMERETEK Informatikai alapismeretek emelt szint 1021 ÉRETTSÉGI VIZSGA 2011. május 13. INFORMATIKAI ALAPISMERETEK EMELT SZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ NEMZETI ERŐFORRÁS MINISZTÉRIUM

Részletesebben

Programozás III KIINDULÁS. Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg.

Programozás III KIINDULÁS. Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg. KIINDULÁS Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg. Programozás III Az egyszerűség kedvéért mindegyiket a nevük alapján regisztráljuk,

Részletesebben

Alkalmazott modul: Programozás

Alkalmazott modul: Programozás Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás Feladatgyűjtemény Összeállította: Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Frissítve: 2015.

Részletesebben

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t Ellenőrző kérdések 2. Kis dolgozat kérdései 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t 37. Ha t szintű indexet használunk,

Részletesebben

Programozási Paradigmák és Technikák

Programozási Paradigmák és Technikák Programozási Paradigmák és Technikák Öröklődés Interfészek Kivételkezelés Rekurzió Eseménykezelés Programozási Paradigmák és Technikák Öröklődés Öröklődés a C# nyelvben Öröklődés feladatok Gyakorló feladatok

Részletesebben

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Programozás I. 3. előadás Tömbök a C#-ban Metódusok C#-ban Egyszerű programozási tételek Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Szoftvertechnológia

Részletesebben

500. AA Megoldó Alfréd AA 500.

500. AA Megoldó Alfréd AA 500. Programozás alapjai 2. NZH 2010.05.13. gyakorlat: / Hiány:0 ZH:0 MEGOLD IB.027/51. Hftest: 0 Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti, hogy minden

Részletesebben

Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás A programozás történetének során folyamatosan alakultak ki szabályok, amelyek célja a programkód átláthatósága, hibalehetőségek kizárása, alkalmazások közös fejlesztésének

Részletesebben