Bánsághi Anna

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

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

Átírás

1 ESEMÉNYVEZÉRELT PROGRAMOZÁS Bánsághi Anna 1. ELŐADÁS - C# ÁTTEKINTÉS Bánsághi Anna 1 of 84

2 TEMATIKA I. C# ÁTTEKINTÉS II. WPF III. Modern UI 2015 Bánsághi Anna 2 of 84

3 I. C# ÁTTEKINTÉS Szoftver keretrendszer A C# lényegi elemei A C# program Érték- és referencia típusok Típuskonstrukciók 6. Változók, paraméterek 7. Utasítások, kifejezések, operátorok 8. Generikusok 9. Kivételkezelés 10. Attribútumok 11. XML dokumentáció 2015 Bánsághi Anna 3 of 84

4 1. SZOFTVER KERETRENDSZER 1980-ban jelent meg a SmallTalk, az első tisztán objektumorienált nyelv minden elem objektum és egyben egy osztály példánya az osztályok teljes származtatási hierarchiában helyezkednek el virtuális gépen futó teljesen hordozható kód memóriafelügyelet, szemétgyűjtés 2015 Bánsághi Anna 4 of 84

5 SZOFTVER KERETRENDSZER a programkönyvtárak és a virtuális gép együttese, mely tartalmazza a fejlesztéshez szükséges gépfüggetlen API-kat és felügyeli a programok futásának folyamatát 2015 Bánsághi Anna 5 of 84

6 FORDÍTÁS ÉS FUTTATÁS a programnyelvi kód egy alacsonyszintű, gépfüggetlen köztes nyelvre fordul, ez a köztes nyelvű kód a köztes nyelvű kód hordozhatóságát, gyorsaságát, hibamentességét, memóriafelügyeletét a virtuális gép, és azon belül a futattó környezet biztosítja, amely platformfüggő gépi kódot állít elő az ellenőrzött és biztonságos gépi kódot az operációs rendszer futtatja 2015 Bánsághi Anna 6 of 84

7 2015 Bánsághi Anna 7 of 84

8 .NET NET KERETRENDSZER virtuális gép: Common Language Runtime (CLR) köztes nyelv: Common Intermediate Language (CIL) egységes típusrendszer: Common Type System (CTS) teljes körű programkönyvtár: Framework Class Library (FCL) 2015 Bánsághi Anna 8 of 84

9 kliens-szerver alkalmazások (ASP.NET), relációs adatbáziskezelés (ADO.NET), kódbiztonság: Code Access Security (CAS) grafikus felhasználói felület (WinForms), Microsoft SQL Server integráció technológiák egységesítése: grafikus felhasználói felület (WPF), szolgáltatás orientált üzenetkezelés (WCF), folyamatkezelés (WWF), biztonságos adatkezelés (Windows CardSpace) nyelvbe ágyazott adatbázis lekérdezések (LINQ), funkcionális programozás, AJAX támogatás párhuzamos lekérdezések (PLINQ), nyelvi szintű párhuzamosítás (TPL), szerződés alapú programozás platform független alkalmazás architektúra (Windows Runtime), grafikus felhasználói felület (Modern UI) 2015 Bánsághi Anna 9 of 84

10 GRAFIKUS FELHASZNÁLÓI FELÜLETEK Windows Forms (WinForms) az elsőként kifejlesztett felület, amely raszteres grafikára épül, és teljes mértékben processzor által vezérelt Windows Presentation Foundation (WPF) a később kifejlesztett felület, mely vektoros grafikára épül, célja a 3D gyorsítókártyák lehetőségeinek kihasználása Modern UI hordozható eszközökre szánt, egyszerűsített, letisztult felület, amely a WPF architektúrára épít 2015 Bánsághi Anna 10 of 84

11 2. A C# LÉNYEGI ELEMEI a C# egy általános célú, típusbiztos, objektumorientált nyelv célja a programozói produktivitás elősegítése, ezért az egyszerűség, a kifejezőerő és a teljesítmény hármasa között egyensúlyoz platform-független, de legjobban a.net keretrendszerben működik 2015 Bánsághi Anna 11 of 84

12 OBJEKTUMORIENTÁLTSÁG az OO paradigma három fő pillére (egységbezárás, származtatás, polimorfizmus) mellett a C# nyelv specialitásai: egységes típusrendszer új típuskonstrukciós eszközök (interface, delegate) új tagfüggvények (tulajdonság, esemény, indexelő) 2015 Bánsághi Anna 12 of 84

13 EGYSÉGES TÍPUSRENDSZER a C# alapvető építőeleme az adatokat és az azokon végezhető műveleteket egységbezáró típus minden típus egyetlen közös ősből (System.Object) származik, ezért minden típus rendelkezik bizonyos alapvető funkciókkal, pl. a ToString metódussal tetszőleges típus példánya string-é konvertálható 2015 Bánsághi Anna 13 of 84

14 SYSTEM.OBJECT TAGJAI var objektum = new Object(); Type tipus = objektum.gettype(); foreach( MemberInfo tag in tipus.getmembers() ) { Console.WriteLine( tag ); Boolean Equals(System.Object) Boolean Equals(System.Object, System.Object) Int32 GetHashCode() System.Type GetType() System.String ToString() Boolean ReferenceEquals(System.Object, System.Object) Void.ctor() 2015 Bánsághi Anna 14 of 84

15 ÚJ TÍPUSKONSTRUKCIÓS ESZKÖZÖK a hagyományos OO paradigma szerint az egyetlen típuskonstrukciós eszköz az osztály deklarálása (class) a C#-ban más típuskonstrukciók is vannak, például az interfész, mely annyiban különbözik az osztálytól, hogy csupán deklarálja a tagokat, de nem implementálja azokat az interfészek a többszörös öröklődés kiváltására használhatók 2015 Bánsághi Anna 15 of 84

16 ÚJ TAGFÜGGVÉNYEK a műveletek nemcsak metódusokat, hanem tulajdonságokat és eseményeket is magukba foglalnak a tulajdonság valamely objektum állapotának egy darabkáját testesíti meg az esemény az objektum állapotváltozásáért felelős 2015 Bánsághi Anna 16 of 84

17 TÍPUSBIZTOSSÁG egy példányhoz csak a típusán megvalósított műveleteken keresztül férhetünk hozzá, ezzel őrizve meg a példány belső konzisztenciáját a C# statikusan típusos nyelv, azaz fordítási időben kerül kikényszerítésre a típusbiztosság a C# erősen típusos nyelv is, azaz az objektumokat deklarálnunk kell, illetve csak a típuson megengedett műveletek hajthatók végre 2015 Bánsághi Anna 17 of 84

18 MEMÓRIAGAZDÁLKODÁS a C# programok az automatikus memóriagazdálkodást a futtató környezetre bízzák a CLR tartalmaz egy szemétgyűjtő algoritmust, mely időről időre felszabadítja a referencia nélküli memóriaszeleteket nincs szükség explicit (programozó által kezdeményezett) memóriafelszabadításra a mutató típus megmaradt, de csak unsafe blokkon belül használható 2015 Bánsághi Anna 18 of 84

19 PLATFORMOK a C# tipikusan Windows platformokon futó programok írására alkalmas több platformon futó alkalmazásokhoz a Java-t érdemes választani 2015 Bánsághi Anna 19 of 84

20 WINDOWS RUNTIME a Windows 8-ban megjelentek az érintőképernyős Metro stílusú alkalmazások a mobil és az érintőképernyős grafikus alkalmazások fejlesztéséhez szükséges könyvtárakat tartalmazza a WinRT 2015 Bánsághi Anna 20 of 84

21 3. A C# PROGRAM a program logikai tagolását az egymásba ágyazható biztosítják névterek a program fizikai tagolását az assembly -k biztosítják, melyek tartalmazhatnak típusokat, típusok megvalósítását, valamint más assembly-kre történő referenciákat alkalmazás könyvtár ASSEMBLY FAJTÁK belépési ponttal rendelkezik,.exe kiterjesztésű nincs belépési pontja, általában.dll kiterjesztésű 2015 Bánsághi Anna 21 of 84

22 ALKALMAZÁS FUTTATÁS az alkalmazás futása egy különálló alkalmazás tartományban történik, melybe minden hivatkozott típus és osztálykönyvtár betöltődik ha egy alkalmazást több példányban futtatunk, akkor minden példánynak saját alkalmazás tartománya jön létre, ahova a hivatkozott típusok és osztálykönyvtárak külön-külön betöltődnek így az egyes alkalmazások futása teljesen szeparált módon történik ugyanazon vagy más alkalmazások futásától 2015 Bánsághi Anna 22 of 84

23 BELÉPÉSI PONT az alkalmazás indítás akkor történik, amikor a futtató környezet meghív egy speciális metódust, az alkalmazás belépési pontját, a statikus Main metódust habár létezik a metódusnevek túlterhelése, a Main metódusból kizárólag egyetlen létezhet egy alkalmazáson belül ha az alkalmazás olyan könyvtárakat tölt be, melyek szintén tartalmaznak Main metódust, akkor kívülről kell megadni, hogy melyik lesz az alkalmazás belépési pontja a futtató környezet mindig látja a Main metódust, annak láthatóságától függetlenül 2015 Bánsághi Anna 23 of 84

24 ALKALMAZÁS TERMINÁLÁSA az alkalmazás terminálása visszaadja a vezérlést a futtató környezetnek a terminálás előtt az alkalmazás objektumain automatikusan lefutnak a destruktorok, hacsak nem hívtuk meg explicite a szemétgyűjtő eljárást, például a GC.SuppressFinalize metódussal 2015 Bánsághi Anna 24 of 84

25 AUTOMATIKUS MEMÓRIAKEZELÉS amikor egy objektum létrejön, akkor lefoglalódik számára egy memóriaszelet, lefut a konstruktor, és az objektum élővé válik ha egy objektum vagy bármely része elérhetetlenné válik futási időben, akkor az objektum megsemmisítésre lesz kijelölve ha egy objektum megsemmisítésre lett jelölve, akkor valamikor később lefut a destruktora amint az objektum destruktora lefutott vagy az objektum sérülése miatt nem tudott lefutni, akkor az objektum gyűjtésre lesz kijelölve valamikor később a szemétgyűjtő felszabadítja azokat a memóriaszeleteket, ahol gyűjtésre kijelölt objektumok helyezkednek el 2015 Bánsághi Anna 25 of 84

26 DEKLARÁCIÓK a program építőköveit, elemeit deklarálnunk kell a C# program névterekbe szervezett, ahol egy névtéren belül lehetnek típus deklarációk és beágyazott névtér deklarációk névtér deklaráció típus deklarációk: namespace osztály deklaráció class rekord deklaráció struct interfész deklaráció interface felsorolási típus deklaráció enum delegált deklaráció delegate 2015 Bánsághi Anna 26 of 84

27 TAGOK a névterek és a különféle típusok tagokból épülnek fel, melyeket az adott elem utáni pont és a tag nevével érünk el valamely típus tagjait vagy a típus deklarációban adjuk meg, vagy származtatjuk az őstípusból a konstruktorokat és a destruktorokat kivéve minden tag öröklődik az öröklött tagok nem feltétlenül érhetők el a származtatott típusban, ez függ az ősben megadott láthatóságtól public, protected, internal, protected internal, private 2015 Bánsághi Anna 27 of 84

28 SZIGNATÚRA ÉS TÚLTERHELÉS a metódusok, a példány konstruktorok, az indexelők és az operátorok szignatúrájuk alapján azonosíthatók be szignatúra = metódus/operátor neve + formális paraméterek típusa és fajtája * az egyedileg beazonosítható szignatúra teszi lehetővé a fenti tagok túlterhelését osztályokban, rekordokban és interfészekben a visszatérési típus és a params módosító nem része a szignatúrának * formális paraméterek fajtája: érték, referencia, output, tömb 2015 Bánsághi Anna 28 of 84

29 HATÓKÖRÖK egy név hatóköre az a programrész, ahonnan az adott néven deklarált elem elérhető a hatókörök egymásba ágyazhatók, és egy belső hatókörben használt név felüldefiniálja a külső hatókörben használt nevet, így a külső név rejtett lesz a belső hatókörben névtéren, osztályon, rekordon vagy felsorolási típuson belül deklarált tag - a deklarálás helyétől függetlenül - elérhető ugyanazon típus egy másik tagján belül adott nevet mindig el lehet érni a minősítők megadásával 2015 Bánsághi Anna 29 of 84

30 MINŐSÍTETT NEVEK class A { namespace X { class B { class C { // A // X // X.B // X.B.C namespace Y { class D { // X.Y // X.Y.D namespace X.Y { class E { // X.Y // X.Y.E 2015 Bánsághi Anna 30 of 84

31 NEVEK ELREJTÉSE EGYMÁSBA ÁGYAZÁSSAL class A { void F() { int i = 1; // lokális változó, elfedi az i tagot this.i = 5; // az i tag elérhető a this minősítővel void G() { i = 1; int i = 0; // az i tag deklarálása utoljára történik, // de hatóköre a teljes A osztályra kiterjed NEVEK ELREJTÉSE SZÁRMAZTATÁSSAL class A { public void F() { class B : A { new public void F() { // az A.F tag elfedett a new módosítóval 2015 Bánsághi Anna 31 of 84

32 4. TÍPUSOK érték közvetlenün tartalmazza az adatot struct, enum, bool, integral, floating-point két azonos értékű adatot tároló változó két különböző adatot jelent, így az egyik változón végzett művelet semmilyen haátssal nincs a másik változóban tárolt adatra referencia az adatra mutató referenciát tartalmazza class, interface, array, delegate két referencia mutathat ugyanazon objektumra, így az egyik referencián keresztül végrehajtott művelet eredeménye a másik referencián keresztül is érzékelhető mutató csak unsafe környezetben használható a szemétgyűjtő nem működik rajta 2015 Bánsághi Anna 32 of 84

33 2015 Bánsághi Anna 33 of 84

34 2015 Bánsághi Anna 34 of 84

35 ÉRTÉKTÍPUSOK egy értéktípusú változó értéket tárol, nem lehet null vagy referencia változóhoz történő hozzárendelés esetén létrejön az érték egy újabb másolata minden értéktípus a System.ValueType-ból származik az értéktípusok lezártak (sealed), tehát nem lehet belőlük származtatni az értéktípusok implicite rendelkeznek paraméternélküli konstruktorral, mely a változókat inicializálja a struct típusoknak nem lehet paraméternélküli konstruktort deklarálni, mivel az már létezik implicite az egyszerű típusok két néven érhetők el, például int és System.Int Bánsághi Anna 35 of 84

36 TÍPUSKONSTRUKCIÓS ESZKÖZÖK enum nevesített konstansokat tartalmazó típus. Minden felsorolt típus valamely egész típuson (kivéve char) alapul struct felhasználói értéktípusok létrehozására 2015 Bánsághi Anna 36 of 84

37 REFERENCIA TÍPUSOK egy referencia típusú változó referenciát tárol, mely egy adott típus egy példányára, azaz egy objektumra mutat a null minden esetben azt jelzi, hogy az objektum nem létezik változóhoz történő hozzárendelés esetén a referencia másolódik le, nem az objektum az object egy álnév a System.Object típusra, minden C#-beli típus ősére két object típusú kifejezés pontosan akkor egyenlő, ha ugyanarra az objektumra mutatnak vagy mindkettő null két string típusú kifejezés pontosan akkor egyenlő, ha minden karakterpozícióban megegyeznek vagy mindkettő null 2015 Bánsághi Anna 37 of 84

38 TÍPUSKONSTRUKCIÓS ESZKÖZÖK class adattagokat és tagfüggvényeket tartalmazó típusok deklarálására való. Támogatja az egyszeres öröklődést interface egy szerződést definiál. Az az osztály vagy rekord, mely megvalósít egy interfészt, be kell hogy tartsa ezt a szerződést. Támogatja a többszörös öröklődést delegate egy vagy több alprogram vagy metódus összekapcsolására szolgáló adatszerkezet. Egy delegate hívásakor a listájában lévő összes metódus meghívódik a megadott paraméterre array azonos típusú elemek tárolására szolgáló adatszerkezet. A deklaráció az elemek megadásával történik 2015 Bánsághi Anna 38 of 84

39 BOXING ÉS UNBOXING a C#-ban az egységes típusrendszer központi fontosságú minden típus, még az értéktípusok is a System.Object leszármazottai tehát bármely értéktípuson értelmezett a ToString metódus vagy egészeken a MaxValue tulajdonság ez egy kis zavart eredményez, hiszen az értéktípusok lényege, hogy a hatékony kezelés érdekében kizárólag értéket tárolnak, nincsenek adattagjaik vagy tagfüggvényeik a megoldást a boxing művelet jelenti, amely tetszőleges értéktípusnak megengedi, hogy úgy viselkedjen mint egy referencia típus 2015 Bánsághi Anna 39 of 84

40 BOXING amellett, hogy a memóriában megtalálható a változó az értékével, a CLR karbantart a változónak egy "dobozt", amely tartalmazza az eredeti változó adatait, és minden olyan további információt, ami ahhoz szükséges, hogy a változó referencia típusként tudjon működni úgy tűnhet, hogy drága dolog az egységes típusrendszer, valójában azonban a fordító nagyon jól optimalizál 2015 Bánsághi Anna 40 of 84

41 BOXING PÉLDA static void Main() { // a 3 egy int értéktípusú konstans, // ám itt objektumként hivatkozunk rá, meghívjuk a ToString metódusát Console.WriteLine( 3.ToString() ); 2015 Bánsághi Anna 41 of 84

42 BOXING ÉS UNBOXING MANUÁLISAN static void Main() { int x = 10; object xbox = x; // az x változó értéktípus // xbox az x bedobozolt másolata // Console.WriteLine( Object v ) hívódik meg Console.WriteLine( "x értéke: {0", xbox ); // Console.WriteLine( int v ) hívódik meg Console.WriteLine( "x értéke: {0", x ); static void Main() { object box = 10; int x = (int)box; // a box referencia típus, és egy objektumra mutat // x a box kidobozolt értéke, értéktípus 2015 Bánsághi Anna 42 of 84

43 5. TÍPUSKONSTRUKCIÓK értéktípusok deklarálására struct enum referencia típusok deklarálására array class interface delegate 2015 Bánsághi Anna 43 of 84

44 STRUCT kis, egyszerű adatszerkezetek deklarálására megvalósíthatnak interfészt nincs közöttük öröklődés, implicite lezártak (sealed) a static vagy const mezőket kivéve nem lehet inicializálni a mezőket nem definiálható paraméter nélküli konstruktor vagy destruktor definiálhatók paraméteres konstruktorok a new operátor nélkül is példányosíthatók a ValueType.Equals metódussal hasonlítható össze, hogy két példány azonos értékű mezőkkel rendelkezik-e 2015 Bánsághi Anna 44 of 84

45 STRUCT DEKLARÁLÁSA [attribútumok] módosítók struct Név : interfészek { tag_deklarációk (alapértelmezetten private hozzáférésűek) módosítók new, public, protected, internal, private 2015 Bánsághi Anna 45 of 84

46 // a Pont adatszerkezetet tartalmazó rekord struct Pont { public double x, y; // a mezők általában publikusak // nem jellemzők a tulajdonságok (get, set) public Pont( double x, double y ) { // két paraméteres konstruktor this.x = x; this.y = y; // a Main belépési pontot tartalmazó osztály class PontTeszt { static void Main() { var p1 = new Pont( 2, 3 ); Pont p2; p2.x = 2; p2.y = 3; // változó deklarálása és inicializálása // változó deklarálása Console.WriteLine( p1.equals(p2) ); // a mezők érték szerint összehasonlítása 2015 Bánsághi Anna 46 of 84

47 ENUM felsorolható elemek deklarálására csak class-ba vagy struct-ba ágyazható az első elem értéke alapértelmezettan a 0, a többié 1-gyel növekszik inicializálással a fenti sorrend felüldefiniálható az alapértelmezett egész alaptípus az int 2015 Bánsághi Anna 47 of 84

48 ENUM DEKLARÁLÁSA [attribútumok] módosítók enum Név : alaptípus { tag_deklarációk (kizárólag public hozzáférésűek) módosítók new, public, protected, internal, private alaptípus byte, sbyte, short, ushort, int, uint, long, ulong 2015 Bánsághi Anna 48 of 84

49 enum Színek { Piros, Zöld, Kék class FelsoroltTeszt { static void Main() { Színek szin = Színek.Piros; int sorszam = (int)szin; Console.WriteLine( "{0 {1", szin, sorszam ); // Piros Bánsághi Anna 49 of 84

50 // Flags attribútum használata, kiiratásnál a ToString metódus másképp működik [Flags] enum Napok : byte { // az alaptípus byte-ra állítva Hétfő = 1, // az értékek 2 hatványai a bitműveletek miatt Kedd = 2, Szerda = 4, Csütörtök = 8, Péntek = 16, Szombat = 32, Vasárnap = 64 class FelsoroltTeszt { static void Main() { Napok hétvége = Napok.Szombat Napok.Vasárnap; // bitenkénti VAGY operátor Console.WriteLine( hétvége ); // Szombat, Vasárnap 2015 Bánsághi Anna 50 of 84

51 ARRAY azonos típusú elemek tárolására egy tömb lehet egy- vagy többdimenziós, illetve egyenetlen a dimenziók száma és elemszáma deklaráláskor rögzítődik, és nem változhat meg az értéktípusú elemeket tartalmazó tömb 0-kal, míg a referencia típusú elemeket tartalmazó tömb null elemekkel inicializálódik az egyenetlen tömb elemei tömbök, azaz referencia típusú elemek, így null-lal inicializálódnak egy n elemű tömb indextartománya 0 és n-1 közé esik minden tömb a System.Array őstípus valamely leszármazottjának példánya, tehát objektum 2015 Bánsághi Anna 51 of 84

52 TÖMBÖK MINT OBJEKTUMOK using System.Linq; public static void Main() { // 2-dimenziós tömb, azaz mátrix var t1 = new int[2, 4] { {1,2,3,4, {5,6,7,8 ; // egyenetlen tömb var t2 = new int[2][] { new int[] {1,2, new int[] {3,4,5 ; Console.WriteLine( t1[0,1] ); Console.WriteLine( t2[0][1] ); Console.WriteLine( "A tömb {0 dimenziós", t1.rank ); Console.WriteLine( "Az első rész-tömb elemeinek összege {0", t2[0].sum() ); 2015 Bánsághi Anna 52 of 84

53 CLASS komplex felhasználói típusok létrehozására a nem-statikus osztályokból példányosítással hozhatók létre az objektumok (new), és az egyes objektumok állapota változik meg valamely tag hívásával egy tipikus C# programban különféle objektumok kommunikálnak egymással a statikus osztályok nem példányosíthatók, és mivel nincs objektum, melyen keresztül elérhetők lennének a tagok, ezért magán az osztályon keresztül érjük el a tagokat az Object.Equals metódussal hasonlítható össze, hogy két, azonos típusú példány ugyanazon a memóriacímen helyezkedik-e el (a referenciák megegyeznek) egy osztály példányait a mezők értéke alapján összehasonlítandó, felül kell definiálni vagy az Object.Equals metódust, vagy az == és!= operátorokat 2015 Bánsághi Anna 53 of 84

54 CLASS DEKLARÁLÁSA [attribútumok] módosítók class Név : ősosztály, interfészek { tag_deklarációk (alapértelmezetten private hozzáférésűek) módosítók new, public, protected, abstract, sealed internal, private, 2015 Bánsághi Anna 54 of 84

55 // a Pont adatszerkezetet tartalmazó osztály class Pont { public double X { get; set; // általában tulajdonságokat használunk public double Y { get; set; // mezők helyett public Pont() { // felüldefiniálható paraméter nélküli konstruktor this.x = this.y = 0; public Pont( double x, double y ) { this.x = x; this.y = y; // a Main belépési pontot tartalmazó osztály class PontTeszt { static void Main() { Pont p1 = new Pont( 2, 3 ); // objektum példányosítása és inicializálása Pont p2 = p1; // p2 egy álnév az előzőleg létrehozott objektumra Console.WriteLine( p1.equals(p2)); // referenciák összehasonlítása 2015 Bánsághi Anna 55 of 84

56 CLASS - SZÁRMAZTATÁS más osztályok viselkedésének újrafelhasználására, kiterjesztésére, módosítására szolgál újrafelhasználás a példány konstruktorokat, a statikus konstruktorokat és a destruktorokat kivéve minden ősosztálybeli tag implicite öröklődik, így azok implementálás nélkül újra felhasználhatók a származtatott osztályban kiterjesztés a származtatott osztályban új tagokat lehet deklarálni, így az ősosztály egy kiterjesztett változatát kapjuk módosítás az öröklött tagok elfedhetők vagy felüldefiniálhatók (újra implementálhatók), így módosítva az ősosztálybeli tagok jelentését 2015 Bánsághi Anna 56 of 84

57 SZÁRMAZTATÁS JELLEMZŐI egy osztálynak csak egyetlen közvetlen őse lehet, bár maga a származtatás tranzitív művelet: A B B C A C tetszőleges ősosztálybeli tag elfedhető (new) a származtatott osztályban, bár a polimorfizmus megszűnik az ősosztálybeli virtual tagok felüldefiniálhatók (override) a származtatott osztályban az absztrakt osztályok nem példányosíthatók, és a metódusok csak szignatúrával szerepelnek, implementáció nélkül az ősosztálybeli absztrakt tagokat kötelező felüldefiniálni az első közvetlen, nem-absztrakt származtatott osztályban az interfész hasonlít egy kizárólag absztrakt metódusokat tartalmazó absztrakt osztályra, melyet implementálni kell az interfészt megvalósító osztályban a származtatott osztály minden ősbeli tagot örököl, viszont csak a nem private tagokhoz fér hozzá 2015 Bánsághi Anna 57 of 84

58 POLIMORFIZMUS JELLEMZŐI jelentése: többalakúság fordítási és futási idejű típus egy származtatott osztálybeli objektum a program futásának bizonyos pontjain viselkedhet úgy, mintha ősosztálybeli objektum volna. Ilyenkor az objektum fordítási idejű típusa különbözik az objektum futási idejű típusától korai és késői kötés az ősben definiált vagy implementált virtuális metódusok felüldefiniálhatók a leszármazottban, azaz saját definíció és implementáció adható. Futás alatt a CLR a futási idejű típus alapján hívja meg a metódusokat, tehát fordítási időben az ős metódusát hívjuk, míg futási időben a leszármazottét 2015 Bánsághi Anna 58 of 84

59 származtatás felüldefiniálás felüldefiniálása elfedés TAGOK TÖBBALAKÚSÁGA az ős tagjainak átvétele minden módosítás nélkül az ősosztálybeli virtual vagy abstract tagok nem virtuális tagok elfedése új implementációval 2015 Bánsághi Anna 59 of 84

60 FELÜLDEFINIÁLÁS, ELFEDÉS mezők nem lehetnek virtuálisak, csak a tulajdonságok, metódusok, események, indexelők az ősosztálybeli implementáció megmarad, a közvetlen ős tagja hívható a base kulcsszóval ha A B és B C, és B-ben felüldefináltunk egy A-beli virtuális tagot, az a C szempontjából virtuális, tehát felüldefiniálható C-ben ha C-ben meg akarjuk akadályozni a B-ben felüldefiniált tag újbóli felüldefiniálását, azt a sealed módosítóval jelezzük ha meg akarjuk szüntetni az ős és a leszármazott közötti virtuális hívást, akkor a leszármazottban a new módosítóval fedjük el az ősosztálybeli tagot 2015 Bánsághi Anna 60 of 84

61 public class A { public virtual void Egyik() { public virtual void Masik() { public virtual void Harmadik() { public virtual void Negyedik() { public class B : A { public override void Egyik() { // új funkcionalitás... public override void Masik() { // új funkcionalitás... base.masik(); // A.Egyik felüldefiniálása // A.Masik felüldefiniálása // A.Masik hívása public sealed override void Harmadik() { // A.Harmadik lezárása // új funkcionalitás... public new void Negyedik() { // új funkcionalitás... // A.Negyedik elfedése 2015 Bánsághi Anna 61 of 84

62 INTERFACE olyan, mint egy absztrakt ősosztály, nem tartalmaz implementációt az interfészt megvalósító osztálynak vagy rekordnak implementálnia kell az interfész tagjait nem példányosítható tagjai lehetnek események, metódusok, indexelők, tulajdonságok egy osztály vagy rekord egy vagy több interfészt is megvalósíthat az explicite megvalósított tagok publikusak és nem-statikusak kell hogy legyenek 2015 Bánsághi Anna 62 of 84

63 INTERFACE DEKLARÁLÁSA [attribútumok] módosítók interface Név : interfészek { tag_deklarációk (kizárólag public hozzáférésűek) módosítók new, public, protected, internal, private 2015 Bánsághi Anna 63 of 84

64 FONTOSABB BEÉPÍTETT INTERFÉSZEK IEnumerable, IEnumerable<T> esetén IDisposable IQueryable<T> INotifyPropertyChange foreach és LINQ használata using utasítással használt erőforrások esetén lekérdezhető adatforrások kéréseihez IComparable<T>, IComparer<T> grafikus felületek adatkötéseihez IEquatable<T>, IEqualityComparer<T> egyenlőség-vizsgálatokhoz IList<T>, ICollection<T> IDictionary<K, T> általánosított rendezésekhez általánosított változékony gyűjteményekhez gyűjteményekben való keresésekhez 2015 Bánsághi Anna 64 of 84

65 PONTOK RENDEZÉSE class Pont : IComparable<Pont> { public double X { get; set; public double Y { get; set; public Pont( double x, double y ) { this.x = x; this.y = y; // a System.IComparable.CompareTo<T> metódus megvalósítása public int CompareTo( Pont that ) { if( that == null ) return 1; // a System.Double.CompareTo megvalósított metódusok hívása return this.x.compareto( that.x ) + this.y.compareto( that.y ); // a System.Object.ToString metódus felüldefiniálása public override string ToString() { return "(" + this.x.tostring() + "," + this.y.tostring() + ")"; 2015 Bánsághi Anna 65 of 84

66 class Teszt { static void Main() { List<Pont> pontok = new List<Pont>(); pontok.add( new Pont(1, 2)); pontok.add( new Pont(2, 3)); pontok.add( new Pont(1, 1)); // a List generikus típus Sort metódusát hívjuk, mely // az imént megvalósított Pont.CompareTo metódust használja pontok.sort(); foreach( var pont in pontok ) { Console.WriteLine( pont ); // a Pont.ToString metódus hívása 2015 Bánsághi Anna 66 of 84

67 DELEGATE arra szolgálnak, hogy metódusokat adhassunk át paraméterként más metódusoknak a delegált deklaráció egy függvény-szignatúra típust definiál egy delegált példány egységbezár egy hívási listát, melyben egy vagy több, azonos szignatúrájú és visszatérési típusú metódus referencia található egy delegált példány hívása során az argumentumain meghívódnak a listában található metódusok 2015 Bánsághi Anna 67 of 84

68 DELEGATE DEKLARÁLÁSA [attribútumok] módosítók delegate visszatérési_típus Név ( formális_paraméterek ); módosítók new, public, protected, internal, private 2015 Bánsághi Anna 68 of 84

69 class Szoveg { public string Mondat { get; set; public Szoveg( string mondat ) { this.mondat = mondat; public void Kettospont() { this.mondat = this.mondat.replace( ' ', ':' ); public void Nagybetus() { this.mondat = this.mondat.toupper(); public void Kisbetus() { this.mondat = this.mondat.tolower(); 2015 Bánsághi Anna 69 of 84

70 // delegált deklaráció a megfelelő visszatérési típussal és szignatúrával delegate void AtalakitoDelegate(); class Teszt { static void Main() { var szoveg = new Szoveg( "Delegált teszt" ); // delegált típusú referencia létrehozása AtalakitoDelegate atalakito; // a "szoveg" objektum néhány metódusát felvesszük a delegált metódusok közé atalakito = szoveg.kettospont; atalakito += szoveg.nagybetus; // meghívjuk a delegáltat, melyhez hozzá van rendelve // a "szoveg" objektum és annak néhány metódusa atalakito(); Console.WriteLine( szoveg.mondat ); // DELEGÁLT:TESZT 2015 Bánsághi Anna 70 of 84

71 PÉLDA 1. Tegyük fel, hogy egy netes vásárlást megvalósító alkalmazáson dolgozunk, és feladatunk a kosárban található áruk ellenértékenek számítása. A számítás egyik lépése a kedvezmények kalkulációja. class Kosar { public void Feldolgozas() { int kedvezmeny = 5; // a feldolgozás során beállítjuk a kedvezményt //... class KosarTeszt { static void Main() { var kosar = new Kosar(); kosar.feldolgozas(); // külső programból hívódik meg a Feldolgozás metódus 2015 Bánsághi Anna 71 of 84

72 2. Egy idő utána az üzlet oldaláról kérés érkezik, hogy a délelőtti vásárlásokra nagyobb kedvezményt adjunk Módosítjuk tehát a Feldolgozás metódust class Kosar { public void Feldolgozas() { int kedvezmeny = 5; if( DateTime.Now.Hour < 12 ) { kedvezmeny = 10; // Bánsághi Anna 72 of 84

73 3. A következő héten újabb kérés érkezik az üzlet oldaláról, hogy módosítsunk a kedvezmények számításán Ekkor arra gondolunk, hogy jó lenne a kedvezmény kalkulációt delegálni oda, ahol kitalálják class KosarTeszt { static void Main() { var kosar = new Kosar(); // paramétere egy int típusú értékkel kosar.feldolgozas( 5 ); // paramétere egy kulcs-érték párokat tartalmazó asszociatív tömb kosar.feldolgozas( new Dictionary ); // paramétere egy kedvezményt számító metódus kosar.feldolgozas( kedvezmenykalkulacio ); 2015 Bánsághi Anna 73 of 84

74 DELEGATE DEKLARÁCIÓ, PÉLDÁNYOSÍTÁS, HÍVÁS delegate int KedvezmenyDelegate(); // delegált típus deklarálása class KosarTeszt { static void Main() { // delegált explicit példányosítása, és egy metódus hozzárendelése var delegalt_1 = new KedvezmenyDelegate( class.method ); // delegált implicit példányosítása, és egy metódus hozzárendelése KedvezmenyDelegate delegalt_2 = class.method; var kosar = new Kosar(); // a delegált példány paraméterként való átadása kosar.feldolgozas( delegalt_1 ); class Kosar { public void Feldolgozas( KedvezmenyDelegate kedvezmenyszamitas ) { // a delegált példányhoz rendelt metódusok hívása int kedvezmeny = kedvezmenyszamitas(); 2015 Bánsághi Anna 74 of 84

75 delegate int KedvezmenyDelegate(); class Kalkulacio { public static int Szamitas() { int kedvezmeny = 5; if( DateTime.Now.Hour < 12 ) { kedvezmeny = 10; else if( DateTime.Now.Hour < 20 ) { kedvezmeny = 15; return kedvezmeny; class Kosar { public void Feldolgozas( KedvezmenyDelegate kedvezmenyszamitas ) { int kedvezmeny = kedvezmenyszamitas(); class KosarTeszt { static void Main() { var kosar = new Kosar(); KedvezmenyDelegate delegalt = Kalkulacio.Szamitas; kosar.feldolgozas( delegalt ); 2015 Bánsághi Anna 75 of 84

76 NÉVTELEN PÉLDÁNYOSÍTÁS minden objektum létrehozható név nélkül is, ekkor a kódban nem tudunk hivatkozni rá var pont = new Pont(); // nevesített Pont objektum new Pont(); // név nélküli Pont objektum // nevesített delegáltak példányosítása var delegalt_1 = new KedvezmenyDelegate( Kalkulacio.Szamitas ); KedvezmenyDelegate delegalt_2 = Kalkulacio.Szamitas; kosar.feldolgozas( delegalt_1 ); // explicit // implicit // név nélküli delegáltak példányosítása kosar.feldolgozas( new KedvezmenyDelegate( Kalkulacio.Szamitas )); // explicit kosar.feldolgozas( Kalkulacio.Szamitas ); // implicit 2015 Bánsághi Anna 76 of 84

77 GENERIKUS ACTION ÉS FUNC OSZTÁLYOK ha.net 1.1-et használnánk, meg is állhatnánk, de a.net 3.5-re kiforrott a generikusok és az Action és a Func osztályok technikája mindenhol, ahol delegate típusú paramétert várunk, ott használható a megfelelő szignatúráju Func vagy Action ez azt jelenti, hogy a fenti példában nincs szükség a delegate típusra, helyette használhatjuk a Func<int>-et kosar.feldolgozas( new KedvezmenyDelegate( Kalkulacio.Szamitas )); // explicit kosar.feldolgozas( new Func<int>( Kalkulacio.Szamitas )); // explicit kosar.feldolgozas( Kalkulacio.Szamitas ); // implicit 2015 Bánsághi Anna 77 of 84

78 class Kalkulacio { public static int Szamitas() { int kedvezmeny = 5; if( DateTime.Now.Hour < 12 ) { kedvezmeny = 10; else if( DateTime.Now.Hour < 20 ) { kedvezmeny = 15; return kedvezmeny; class Kosar { public void Feldolgozas( Func<int> kedvezmenyszamitas ) { int kedvezmeny = kedvezmenyszamitas(); class KosarTeszt { static void Main() { var kosar = new Kosar(); kosar.feldolgozas( Kalkulacio.Szamitas ); 2015 Bánsághi Anna 78 of 84

79 4. Tegyük fel, hogy a menedzsment újra módosít a kedvezmények számításán, és bevezet egy "különleges" státuszt, ami a kosár tartalma alapján határozott meg 2015 Bánsághi Anna 79 of 84

80 class Kalkulacio { public static int Szamitas( bool kulonleges ) { int kedvezmeny = 5; if( kulonleges ) { kedvezmeny = 40; else if( DateTime.Now.Hour < 12 ) { kedvezmeny = 10; else if( DateTime.Now.Hour < 20 ) { kedvezmeny = 15; return kedvezmeny; class Kosar { public void Feldolgozas( Func<bool, int> kedvezmenyszamitas ) { int kedvezmeny = kedvezmenyszamitas( true ); class KosarTeszt { static void Main() { var kosar = new Kosar(); kosar.feldolgozas( Kalkulacio.Szamitas ); 2015 Bánsághi Anna 80 of 84

81 NÉVTELEN FÜGGVÉNYEK.NET 3.5-ben a delegate kulcsszó két jelentéssel bír 1. függvény-szignatúra típus deklarálására (ahogy eddig) 2. helyben kifejtett névtelen függvény deklarálására tovább finomítva a kódot, ahelyett, hogy létrehoznánk egy új osztályt a kedvezmények számítására, használhatunk névtelen függvényeket is, megelőzve a névtereink elszennyeződését // Func<string, int> szignatúrájú névtelen függvény explicit példányosítása new Func<string, int> delegate(string s) { Console.WriteLine( s ); return 0; // Func<string, int> szignatúrájú névtelen függvény implicit példányosítása delegate(string s) { Console.WriteLine( s ); return 0; 2015 Bánsághi Anna 81 of 84

82 class Kosar { public void Feldolgozas( Func<bool, int> kedvezmenyszamitas ) { int kedvezmeny = kedvezmenyszamitas( true ); class KosarTeszt { static void Main() { var kosar = new Kosar(); kosar.feldolgozas( delegate( bool kulonleges ) { int kedvezmeny = 5; if( kulonleges ) { kedvezmeny = 40; else if( DateTime.Now.Hour < 12 ) { kedvezmeny = 10; else if( DateTime.Now.Hour < 20 ) { kedvezmeny = 15; return kedvezmeny; )); 2015 Bánsághi Anna 82 of 84

83 LAMBDA KIFEJEZÉSEK a delegált névtelen metódusok haszna a.net beépített metódusainál kézzelfogható, viszont a mi kódunk tovább egyszerűsíthető a delegált névtelen függvényt lecserélhetjük egy megfelelő paraméterekkel rendelkező lambda kifejezésre delegate(string s) { Console.WriteLine( s ); return 0; s => { Console.WriteLine( s ); return 0; 2015 Bánsághi Anna 83 of 84

84 class Kosar { public void Feldolgozas( Func<bool, int> kedvezmenyszamitas ) { int kedvezmeny = kedvezmenyszamitas( true ); class KosarTeszt { static void Main() { var kosar = new Kosar(); kosar.feldolgozas( kulonleges => { int kedvezmeny = 5; if( kulonleges ) { kedvezmeny = 40; else if( DateTime.Now.Hour < 12 ) { kedvezmeny = 10; else if( DateTime.Now.Hour < 20 ) { kedvezmeny = 15; return kedvezmeny; ); 2015 Bánsághi Anna 84 of 84

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

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

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

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

Eseményvezérelt alkalmazások fejlesztése II. A.NET keretrendszer és a C# programozási nyelv. Objektumorientált programozási nyelvek A Smalltalk nyelv

Eseményvezérelt alkalmazások fejlesztése II. A.NET keretrendszer és a C# programozási nyelv. Objektumorientált programozási nyelvek A Smalltalk nyelv Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése II A.NET keretrendszer és a C# programozási nyelv Objektumorientált programozási nyelvek A Smalltalk nyelv 1980-ban

Részletesebben

Programozás 2., I. kötet Az objektumorientált paradigma alapjai

Programozás 2., I. kötet Az objektumorientált paradigma alapjai TÁMOP-4.1.1.F-14/1/KONV-2015-0009 A GÉPÉSZETI ÉS INFORMATIKAI ÁGAZATOK DUÁLIS ÉS MODULÁRIS KÉPZÉSEINEK KIALAKÍTÁSA A PÉCSI TUDOMÁNYEGYETEMEN Achs Ágnes Szendrői Etelka Programozás 2., I. kötet Az objektumorientált

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

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

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

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

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

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

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

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

JAVA PROGRAMOZÁS 3.ELŐADÁS

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

Részletesebben

Programozás C++ -ban 2007/4

Programozás C++ -ban 2007/4 Programozás C++ -ban 2007/4 1. Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több szempontból is hasznos

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

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia Öröklés ism. Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia Szeberényi Imre BME IIT Egy osztályból olyan újabb osztályokat származtatunk, amelyek rendelkeznek

Részletesebben

117. AA Megoldó Alfréd AA 117.

117. AA Megoldó Alfréd AA 117. Programozás alapjai 2. (inf.) pót-pótzárthelyi 2011.05.26. gyak. hiányzás: kzhpont: MEG123 IB.028/117. NZH:0 PZH:n Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti,

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

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

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

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

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

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

Emlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás.

Emlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás. Emlékeztető: a fordítás lépései Forrás-kezelő (source handler) Szimbólumtábla-kezelés Fordítóprogramok előadás (A, C, T szakirány) Lexikális elemző (scanner) Szintaktikus elemző (parser) Szemantikus elemző

Részletesebben

PHP5 Új generáció (2. rész)

PHP5 Új generáció (2. rész) PHP5 Új generáció (2. rész)...avagy hogyan használjuk okosan az osztályokat és objektumokat PHP 5-ben. Cikksorozatom elõzõ részében képet kaphattunk arról, hogy valójában mik is azok az objektumok, milyen

Részletesebben

.NET Microsoft.Net Framework

.NET Microsoft.Net Framework 1.oldal.NET Microsoft.Net Framework Előadás jegyzet Előadó: Pócza Krisztián ELTE,2008.NET Framework alapjai Hasznos tudnivalók A jegyzet Pócza Krisztián.NET Framework és Programozása I. című előadása alapján

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

A C++ öröklés. (Előfeltétel: 12. tétel ismerete)

A C++ öröklés. (Előfeltétel: 12. tétel ismerete) Az öröklés fogalma: A C++ öröklés (Előfeltétel: 12. tétel ismerete) olyan alapvető programozási technika, amely lehetővé teszi, hogy a már meglévő osztályainkból újakat tudunk származtatni, valamint az

Részletesebben

3. Gyakorlat Ismerkedés a Java nyelvvel

3. Gyakorlat Ismerkedés a Java nyelvvel 3. Gyakorlat Ismerkedés a Java nyelvvel Parancssori argumentumok Minden Java programnak adhatunk indításkor paraméterek, ezeket a program egy tömbben tárolja. public static void main( String[] args ) Az

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 1. Előadás 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 Tanszék www.kjit.bme.hu A tantárgyi

Részletesebben

Bevezetés a programozásba 2

Bevezetés a programozásba 2 Bevezetés a programozásba 2 7. Előadás: STL konténerek, sablonok http://digitus.itk.ppke.hu/~flugi/ Vector int int main() { vector v(10); int int sum=0; for for (int i=0;i

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

C# gyorstalpaló. Készítette: Major Péter

C# gyorstalpaló. Készítette: Major Péter C# gyorstalpaló Készítette: Major Péter Adattípusok Logikai változó Egész szám (*: előjel nélküli) Lebegőponto s szám Típus Típusnév másképpen (egyenértékű) Helyigény (bit) Példa bool Boolean 8 (!) true,

Részletesebben

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 11. előadás 2014.05.12. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Adatszerkezetek

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

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI) Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 8. előadás (ASP.NET WebAPI) 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto A webszolgáltatás

Részletesebben

Vizuális és eseményvezérelt programozás BMF NIK

Vizuális és eseményvezérelt programozás BMF NIK Vizuális és eseményvezérelt programozás BMF NIK A.NET keretrendszer Definíció Vázlatos felépítés A köztes nyelv és a.net futtatókörnyezet Menet közbeni fordítás és optimalizálás Egységes típusrendszer

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

Eseményvezérelt alkalmazások fejlesztése II 1. előadás. A.NET keretrendszer és a C# programozási nyelv. A.NET keretrendszer Eredete

Eseményvezérelt alkalmazások fejlesztése II 1. előadás. A.NET keretrendszer és a C# programozási nyelv. A.NET keretrendszer Eredete Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése II 1. előadás és a C# programozási nyelv 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

Részletesebben

1.1 Szakdolgozat témája... 2. 1.2 A Program célja... 2. 1.4 A használt technológiák ismertetése... 2. 2 A program megtervezése...

1.1 Szakdolgozat témája... 2. 1.2 A Program célja... 2. 1.4 A használt technológiák ismertetése... 2. 2 A program megtervezése... 1 Bevezető... 2 1.1 Szakdolgozat témája... 2 1.2 A Program célja... 2 1.3 Fejlesztői környezet... 2 1.4 A használt technológiák ismertetése... 2 2 A program megtervezése... 4 2.1 Az ablak kinézetének megtervezése:...

Részletesebben

Access adatbázis elérése OLE DB-n keresztül

Access adatbázis elérése OLE DB-n keresztül Access adatbázis elérése OLE DB-n keresztül Készítsünk egy grafikus felülető alkalmazást, ami lehetıvé teszi egy Access adatbázisban tárolt hallgatói adatok (EHA, Név, e-mail cím) lekérdezését (összes

Részletesebben

II. Programozási technológiák

II. Programozási technológiák II. Programozási technológiák 1 II.1 A gépi kódú program Az algoritmuslépések kódja + memória címek. II.2 Programkészítő programok MOV AX,1234h ;0B8h 34h 12h - szám (1234h) az AX reg.-be MUL WORD PTR [5678h]

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

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015 Objektumorientált programozás Pál László Sapientia EMTE, Csíkszereda, 2014/2015 2. ELİADÁS Visual Basic bevezetı Visual Basic.NET nyelvi elemek 2 Visual Basic.NET programozási nyelv Nyelvi elemek: Általában

Részletesebben

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

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

Részletesebben

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ási nyelvek Java

Programozási nyelvek Java Objektum-orientált szemlélet - Egységbe zárás (incapsulation) - Információ elrejtés - Öröklődés altípusosság dinamikus kötés Öröklődés Programozási nyelvek Java - kiterjesztem, kibővítem, megváltoztatom

Részletesebben

C# feladatok gyűjteménye

C# feladatok gyűjteménye C# feladatok gyűjteménye Készítette: Fehérvári Károly I6YF6E Informatika tanár ma levelező tagozat 1) Feladat: ALAPMŰVELETEK Készítsünk programot, amely bekér két egész számot. Majd kiszámolja a két szám

Részletesebben

Entity Framework alapú adatbáziselérés

Entity Framework alapú adatbáziselérés Entity Framework alapú adatbáziselérés Dr. Johanyák Zsolt Csaba http://johanyak.hu A gyakorlat célja Model-first megközelítéssel Entity-Framework modell létrehozása, majd ebből adatbázis generálása LocalDB-ben.

Részletesebben

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II. 2014 1 / 19

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II. 2014 1 / 19 PHP II. WEB technológiák Tóth Zsolt Miskolci Egyetem 2014 Tóth Zsolt (Miskolci Egyetem) PHP II. 2014 1 / 19 Tartalomjegyzék Objektum Orientált Programozás 1 Objektum Orientált Programozás Öröklődés 2 Fájlkezelés

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

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

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

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése II 12. előadás Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto A jegyzet az ELTE Informatikai Karának 2014.

Részletesebben

RIA Rich Internet Application

RIA Rich Internet Application Áttekintés RIA Rich Internet Application Komplex felhasználói felülettel rendelkező web-alkalmazások Bevezető Flex áttekintés ActionScript Felhasználói felület tervezése Események Szerver oldali szolgáltatásokkal

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

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat Szimuláljuk különféle élőlények túlélési versenyét. A lények egy pályán haladnak végig, ahol váltakozó viszonyok vannak. Egy lénynek

Részletesebben

A.NET Framework és programozása C# nyelven. Kedd 16-17 30 I104

A.NET Framework és programozása C# nyelven. Kedd 16-17 30 I104 A.NET Framework és programozása C# nyelven Kedd 16-17 30 I104 Feltételek I104 Visual Studio 2013 Letölthető http://msdn.mik.uni-pannon.hu oldalról Aki saját gépet hoz, annak javasolt a legújabb verzió

Részletesebben

Származtatási mechanizmus a C++ nyelvben

Származtatási mechanizmus a C++ nyelvben Származtatási mechanizmus a C++ nyelvben Miskolci Egyetem Általános Informatikai Tanszék CPP2 / 1 Az öröklődés s fogalma 1. Egy osztály deklarálható valamely más osztály(ok) leszármazottjaként. Az deklaráció

Részletesebben

Bevezetés a C++ programozási nyelvbe

Bevezetés a C++ programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék Bevezetés a C++ programozási nyelvbe Oktatási segédlet Összeállította: Ficsor Lajos 2001. 1. A C++ programozási nyelv története A C++ programozási nyelv

Részletesebben

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

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

Részletesebben

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

A hierarchikus adatbázis struktúra jellemzői

A hierarchikus adatbázis struktúra jellemzői A hierarchikus adatbázis struktúra jellemzői Az első adatbázis-kezelő rendszerek a hierarchikus modellen alapultak. Ennek az volt a magyarázata, hogy az élet sok területén első közelítésben elég jól lehet

Részletesebben

STL. Algoritmus. Iterátor. Tároló. Elsődleges komponensek: Tárolók Algoritmusok Bejárók

STL. Algoritmus. Iterátor. Tároló. Elsődleges komponensek: Tárolók Algoritmusok Bejárók STL Elsődleges komponensek: Tárolók Algoritmusok Bejárók Másodlagos komponensek: Függvény objektumok Adapterek Allokátorok (helyfoglalók) Tulajdonságok Tárolók: Vektor (vector) Lista (list) Halmaz (set)

Részletesebben

C# versus Java. Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 3. Bedők Dávid v0.4

C# versus Java. Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 3. Bedők Dávid v0.4 C# versus Java Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 3 Bedők Dávid 2016.10.01. v0.4 Azonosságok I. Curly-bracket nyelvek ({}) C, C++, PHP, JavaScript, stb.) ProgrammingTheorem

Részletesebben

15. Programok fordítása és végrehajtása

15. Programok fordítása és végrehajtása 15. Programok fordítása és végrehajtása Programok fordítása és végrehajtása. (Fordítás és interpretálás, bytecode. Előfordító, fordító, szerkesztő. A make. Fordítási egység, könyvtárak. Szintaktikus és

Részletesebben

A.NET keretrendszer (.NET Framework) három alapvetõ összetevõbõl áll:

A.NET keretrendszer (.NET Framework) három alapvetõ összetevõbõl áll: Bevezetés Üdvözöljük a C# adatbázis-programozás mesteri szinten tanfolyamán! Amint az Olvasó bizonyára tudja, a technológiai forradalom következõ lépcsõje elkerülhetetlenül a.net felület lesz. A.NET erõssége,

Részletesebben

Információs Technológia

Információs Technológia Információs Technológia (Struktúra, mutatók, függvényhívás) Fodor Attila Pannon Egyetem Műszaki Informatika Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010 október 14/21. Struktúra

Részletesebben

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

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

Részletesebben

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

Információs Technológia

Információs Technológia Információs Technológia A C programozási nyelv (Típusok és operátorok) Fodor Attila Pannon Egyetem Műszaki Informatika Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010 szeptember

Részletesebben

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

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu Programozás III. Varjasi Norbert varjasin@sze.hu 1 A java virtuális gép (JVM) Képzeletbei, ideális számítógép. Szoftveresen megvalósított működési környezet. (az op. rendszer egy folyamata). Feladata:

Részletesebben

Programozás. 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. február 25. Osztályok C++ osztályok Bevezetés Objektum-orientáltság

Részletesebben

Bevezetés a C++ programozásba

Bevezetés a C++ programozásba Bevezetés a C++ programozásba A program fogalma: A program nem más, mint számítógép által végrehajtható utasítások sorozata. A számítógépes programokat különféle programnyelveken írhatjuk. Ilyen nyelvek

Részletesebben

Delegátumok C#-ban Krizsán Zoltán iit

Delegátumok C#-ban Krizsán Zoltán iit Krizsán Zoltán Események kezelése Nem kell vizuális felületnek letnek lennie. segíts tségével valósíthatja meg a.net. 2 Típusos fv.. pointer Biztonságos kódkk dkészítés s miatt tiltott a pointer aritmetika

Részletesebben

OOP #14 (referencia-elv)

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

Részletesebben

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

Ismerjük meg a Monót!

Ismerjük meg a Monót! Ismerjük meg a Monót! A Mono haszna például abban áll, hogy segítségével a Linux képessé válik a Microsoft.NET rendszerével való munkára. Amennyiben írtunk már valaha Linux-munkafelületen futtatható programot,

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

Szoftverprototípus készítése. Szoftverprototípus készítése. Szoftverprototípus készítése 2011.10.23.

Szoftverprototípus készítése. Szoftverprototípus készítése. Szoftverprototípus készítése 2011.10.23. Szoftverprototípus készítése Dr. Mileff Péter A prototípus fogalma: a szoftverrendszer kezdeti verziója Mi a célja? Arra használják, hogy bemutassák a koncepciókat, kipróbálják a tervezési opciókat, jobban

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

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string Resource Objects Adatforrás elemeket hivatkozás (referencia, mutató) segítségével használhatunk, ezek karakterláncok (stringek), képek, azonosítók vagy akár fájlok is lehetnek A mappastruktúra egységesen

Részletesebben

4. Öröklődés. Programozás II

4. Öröklődés. Programozás II 4. Öröklődés Programozás II Mielőtt belevágunk Egy Tárgy típusú objektumokat tároló tömb i. elemében tároljunk el egy új tárgyat Rossz módszer: tomb[i].setnev( uj.getnev() ); tomb[i].setertek( uj.getertek()

Részletesebben

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

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

Részletesebben

C# feladatgyűjtemény Kovács Emőd, Radványi Tibor, Király Roland, Hernyák Zoltán

C# feladatgyűjtemény Kovács Emőd, Radványi Tibor, Király Roland, Hernyák Zoltán C# feladatgyűjtemény Kovács Emőd, Radványi Tibor, Király Roland, Hernyák Zoltán C# feladatgyűjtemény Kovács Emőd, Radványi Tibor, Király Roland, Hernyák Zoltán Publication date 2011 A tananyag a TÁMOP-4.1.2-08/1/A-2009-0046

Részletesebben

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

Programozás BMEKOKAA146. Dr. Bécsi Tamás 7. előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 7. előadás AZ OOP alapelvei Egységbezárás(Encapsulation) Az adatokat es a hozzájuk tartozó eljárásokat egyetlen egységben (osztályban) kezeljük. Az osztály adatmezői

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

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens Hozzunk létre egy ASP.NET Empty Web Site projektet! A projekt neve legyen WCFAPP1. Ez

Részletesebben

Kalapácsvetés 2016 szöveges

Kalapácsvetés 2016 szöveges Kalapácsvetés 2016 Ebben a feladatban a 2016. évi nyári olimpiai játékokon az atlétika férfi kalapácsvetés döntőjének eredményeit kell feldolgoznia. A döntő 6 dobási sorozatból állt, de a 3. sorozat után

Részletesebben

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere 2012. április 10. A PROGAMOZÁS ALAPJAI 1 Vitéz András egyetemi adjunktus BME Híradástechnikai Tanszék vitez@hit.bme.hu Miről lesz ma szó? alaki szabályok használata - mintapélda használata - mintapélda

Részletesebben

1. Az adatbázis fogalma, fontosabb összetevÿi, felhasználási módjai

1. Az adatbázis fogalma, fontosabb összetevÿi, felhasználási módjai 4. tétel Az egyed-kapcsolat modell 1. Az adatbázis fogalma, fontosabb összetevÿi, felhasználási módjai 1.1. Adatbáziskezelÿ rendszer (DBMS - DataBase Management System) A DBMS komplex SW-HW rendszer, mely

Részletesebben

Szervlet-JSP együttműködés

Szervlet-JSP együttműködés Java programozási nyelv 2007-2008/ősz 10. óra Szervlet-JSP együttműködés Kérés továbbítás technikái legradi.gabor@nik.bmf.hu szenasi.sandor@nik.bmf.hu Szervlet-JSP együttműködés Témakörök Osztálykönyvtár

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

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

Programozás 3. Dr. Iványi Péter

Programozás 3. Dr. Iványi Péter Programozás 3. Dr. Iványi Péter 1 Egy operandus művelet operandus operandus művelet Operátorok Két operandus operandus1 művelet operandus2 2 Aritmetikai műveletek + : összeadás -: kivonás * : szorzás /

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

Webszolgáltatások kommunikációs overhead-jének becslése

Webszolgáltatások kommunikációs overhead-jének becslése Webszolgáltatások kommunikációs overhead-jének becslése Simon Balázs, sbalazs@iit.bme.hu Dr. Goldschmidt Balázs, balage@iit.bme.hu Dr. Kondorosi Károly, kondor@iit.bme.hu Budapesti Műszaki Egyetem, Irányítástechnika

Részletesebben