Vizuális, eseményvezérelt programozás X. V 1.0

Hasonló dokumentumok
Vizuális és eseményvezérelt programozás BMF NIK

Vizuális, eseményvezérelt programozás XI.

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

A szerzõrõl... xi Bevezetés... xiii

.NET (Dot-NET) #1 (Bevezetés)

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

.NET Microsoft.Net Framework

Podoski Péter és Zabb László

OOP #14 (referencia-elv)

Programozási nyelvek Java

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

Már megismert fogalmak áttekintése

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

Objektumorientált Programozás III.

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

Operációs rendszerek. Az NT folyamatok kezelése

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Utolsó módosítás:

Osztályok. 4. gyakorlat

Könyvtári címkéző munkahely

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

Objektumorientált programozás C# nyelven

Konstantinusz Kft 2009

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

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Interfészek. PPT 2007/2008 tavasz.

Bevezetés a Programozásba II 4. előadás. Adattípusok hordozhatósága

.NET LINUX ALATT. OpenDEVEL Kft

Objektumorientált programozás C# nyelven

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Előszó A Windows alkalmazásfejlesztés rövid története A Windows életútja A Windows 8 paradigmaváltása... 16

Objektumorientált Programozás VI.

OPERÁCIÓS RENDSZEREK I. BEVEZETÉS Koczka Ferenc -

JAVA PROGRAMOZÁS 2.ELŐADÁS

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

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

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

A.NET Framework és programozása C# nyelven. Kedd I104

Adatbázis és szoftverfejlesztés elmélet

Operációs rendszerek III.

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

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

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

Smart Pointer koncepciója

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.

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

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Flex: csak rugalmasan!

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

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Adatstruktúrák, algoritmusok, objektumok

C++ programozási nyelv Konstruktorok-destruktorok

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

Utolsó módosítás:

Programozási nyelvek Java

Több platform egy kódbázis Tanulságok a Tresorittól. Budai Péter, vezető fejlesztő

Programozás. Bevezetés. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

INFORMATIKAI ALAPISMERETEK

Objektumorientált Programozás V.

C++ programozási nyelv

Teljesítmény Mérés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Teljesítmény Mérés / 20

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

iphone és Android két jó barát...

Szoftvertechnológia alapjai Java előadások

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Objektumorientált Programozás VI.

Bevezetés a Python programozási nyelvbe

ISA szimulátor objektum-orientált modell (C++)

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

Microsoft SQL Server telepítése

A.NET Micro Framework portolása beágyazott soft-core processzorra. Fejér Attila (A96MDM)

Iman 3.0 szoftverdokumentáció

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

Programozás III A JAVA TECHNOLÓGIA LÉNYEGE. Többlépcsős fordítás JAVA PLATFORM. Platformfüggetlenség

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Tartalomjegyzék. Előszó... 10

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

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

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

OOP. #6 (VMT és DMT) v :33:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

OOP. Alapelvek Elek Tibor

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Az operációs rendszer szerkezete, szolgáltatásai

Programozási nyelvek JAVA EA+GY 1. gyakolat

Objektumorientált programozás C# nyelven

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

Mi egy csapat vagyunk, az Olvasó és én

Virtualizáció. egy hardveren több virtuális rendszer működik egyszerre, virtuális gépekben futó önálló vendég (guest) operációs rendszerek formájában

Interfészek. Programozás II. előadás. Szénási Sándor.

Objektumorientált Programozás IV.

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

C++ programozási nyelv

Automatikus memóriagazdálkodás a.net-ben 2. rész

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Virtualizációs Technológiák Bevezetés Kovács Ákos Forrás, BME-VIK Virtualizációs technológiák

Átírás:

Vizuális, eseményvezérelt programozás X. V 1.0 ÓE-NIK, 2011 1

Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges, de nem elégséges feltétele a sikeres zárthelyinek, illetve vizsgának. Sikeres zárthelyihez, illetve vizsgához a jelen bemutató tartalmán felül a kötelező irodalomként megjelölt anyag, a gyakorlatokon szóban, illetve a táblán átadott tudnivalók ismerete, valamint a gyakorlatokon megoldott példák és az otthoni feldolgozás céljából kiadott feladatok önálló megoldásának képessége is szükséges. V 1.0 2

Mi a.net keretrendszer? A.NET keretrendszer (.NET Framework ) egy önálló programozási környezet az operációs rendszer szintje felett, amely új absztrakciós rétegként ékelődik be a szoftveralkalmazások és az operációs rendszer közé. Ezt az absztrakciós réteget szokás virtuális gép -nek is nevezni, amely saját, nyelvi szinten objektumorientált programozási felületet megvalósító utasításkészlettel rendelkezik A.NET keretrendszerre írt programok számára ez az utasításkészlet érhető el, futtatásukat pedig a keretrendszer végzi és felügyeli (ebből következően a.net programok futtatásához szükség van a keretrendszerre is). Maga a keretrendszer elvileg bármely operációs rendszerre elkészíthető, ami a megírt programok számára a platformfüggetlenség lehetőségét kínálja fel. V 1.0 3

A köztes nyelv és a.net futtatókörnyezet A.NET alapú alkalmazások által használható utasításkészlet az ún. köztes nyelv utasításaiból áll A köztes nyelv elnevezése Intermediate Language vagy IL, emellett szokás CIL ( Common Intermediate Language ) vagy MSIL ( Microsoft Intermediate Language ) néven is hivatkozni rá. A magasabb szintű.net nyelveken (C#, Visual Basic.NET stb.) írt programokat erre a nyelvre fordítja le a megfelelő fordítóprogram (így ún. köztes kód jön létre) Futtatáskor a köztes kódot menet közben ellenőrzi és fordítja le az ún. futtatókörnyezet a tényleges hardverplatformon használt, a processzoron közvetlenül futtatható gépi kódra ( natív kód ) A futtatókörnyezet a keretrendszer része, a neve Common Language Runtime Execution Engine, vagy röviden CLR. A keretrendszer által ellenőrzött és kézben tartott köztes kódú programot felügyelt kód -nak ( managed code ) nevezzük. A natív gépi kódra lefordított, immár ellenőrzött és biztonságos programkódot az operációs rendszer futtatja a hardveren V 1.0 4

C# fordítóprogram.net futtatókörnyezet A.NET keretrendszerre C# nyelven megírt forráskód A forráskód lefordítása után előállt köztes (IL) kód Amennyiben az elkészült programot x86 processzoron futtatjuk, az alábbi natív gépi kód készül el, majd fut le V 1.0 5

Menet közbeni fordítás és optimalizálás A köztes kód natív gépi kódra való fordítását a menet közbeni fordító ( JIT fordító, angolul JIT compiler vagy just-in-time compiler ) végzi el A JIT fordító minden metódust az első híváskor fordít le natív gépi kódra. A fordítás eredményét eltárolja, így ezt követően a metódus újabb hívásai esetén már nincs szükség fordításra, ilyenkor a már lefordított gépi kód fut. Ebből következően a programok indításánál és az egyes metódusok első végrehajtásánál komoly sebességveszteség lép fel, ami azonban később, a program futása közben eltűnik. Az OOP általános jellemzője a metódushívások igen nagy száma és gyakori ismétlődése, így ez a megoldás teljesítmény szempontjából is jól illeszkedik az OOP paradigmához. Az első hívás sebességveszteségének ellensúlyozására előfordítás végezhető. A menet közbeni fordítás lehetőséget ad a kód optimalizálására is. V 1.0 6

A.NET egységes típusrendszere A.NET keretrendszer egységesen, a köztes nyelv szintjén rögzít bizonyos nyelvi tulajdonságokat és típusokat Ezek a tulajdonságok az IL (tehát a köztes kód) szintjén valósulnak meg, így minden olyan magasabb szintű nyelvre érvényesek, amelyhez létezik a.net keretrendszert támogató, IL kódot készítő fordítóprogram. Az egységes típusrendszer neve angolul Common Type System vagy röviden CTS A típusrendszer legfontosabb jellegzetességei: a) Objektumorientált felépítés, interfészek intenzív alkalmazása b) Nyelvfüggetlenség (a magasabb szintű nyelvek tekintetében) c) Szigorú típuskezelés d) Értéktípusok és referenciatípusok egyértelmű megkülönböztetése e) Átfogó kivételkezelés f) Attribútumok koncepciója V 1.0 7

Automatikus memóriakezelés Objektumorientált rendszerekben az egyes típusok (osztályok) példányosításához és használatához memóriára van szükség A.NET programozási környezetben a referenciatípusok memóriakezelésének főbb lépései a következők: 1. A típus egy példányához szükséges memória lefoglalása A C# nyelvben például a new operátor használatakor. 2. A lefoglalt memóriában tárolandó kezdőértékek beállítása, a példány használható állapotba hozása Ezt a feladatot mindig a típus megfelelő konstruktora hajtja végre. 3. A típusból létrejött példány életciklusának fő részeként a következő lépés a hozzá tartozó tagok használata, akár többször egymás után ismételve 4. A példány használatának befejezésekor szükség lehet állapotmódosításra vagy az általa használt erőforrások korábbi állapotának visszaállítására Ezt a feladatot általában a típus destruktora/dispose() függvénye hajtja végre. 5. A típusból létrehozott példány által használt memória felszabadítása A.NET automatikus memóriakezelője vállalja magára ezt a teendőt. V 1.0 8

Automatikus memóriakezelés A szemétgyűjtő ( garbage collector ) A.NET memóriakezelője a lefoglalás és a felszabadítás lépéseit automatikusan elvégzi A két leggyakoribb programozói hiba a nem használt memóriaterületek felszabadításának elfelejtése, illetve a már felszabadított memória újbóli használata. Ezeket a hibákat a.net felügyelt memóriakezelése kiküszöböli. A memóriakezelő azokat a memóriaterületeket szabadítja fel, amelyeket már egyetlen osztály egyetlen példánya sem használ A memóriakezelőnek azt a részét, amely a felszabadítható memóriaterületek megkeresését és a felszabadítás műveletét végzi, szemétgyűjtőnek nevezzük. A szemétgyűjtő külön szálon fut, és bizonyos feltételek fennállása esetén felébred, hogy memóriát szabadítson fel. Mivel ez komoly erőforrásigényű művelet, igen bonyolult algoritmusok biztosítják, hogy erre a lehető leggyorsabban és optimális időpontokban, csak szükség esetén kerüljön sor. A szemétgyűjtő algoritmus a System.GC osztály Collect() metódusán keresztül is meghívható. V 1.0 9

Automatikus memóriakezelés Destruktorok A destruktorok feladata hagyományosan a fenti 4. lépés, tehát a típus által használt erőforrások korábbi állapotának visszaállítása A.NET típusrendszerében erre az automatikus memóriakezelés következtében ritkán van szükség, ezért a.net programozási nyelveiben csak speciális helyzetekre szokás destruktort készíteni. A destruktor valójában egy Finalize() nevű metódus, amelyet például a C# fordító nem enged meghívni még a típus saját kódjából sem, megakadályozandó, hogy a programozók elfelejtsék kezelni a kivételeket vagy elfelejtsék meghívni az őstípus destruktorát. Mivel a szemétgyűjtő futása a program szemszögéből nézve nem determinisztikus, nem lehet előre tudni, hogy a már nem használt objektumokon mikor fut le a típus destruktora Előfordulhat, hogy egy-egy típusnál nem célszerű vagy nem gazdaságos megvárni, amíg szükség lesz szemétgyűjtésre (például szűkös grafikai vagy adatbázis-erőforrások használata esetén). Megoldás: IDisposable interfész megvalósítása (Dispose() metódus) V 1.0 10

Automatikus memóriakezelés A felügyelt memória ( managed heap ) [A] Felügyelt memóriaterület A B C D E F G H I J K Következő objektum helye Hivatkozások Mezők Paraméterek Helyi változók CPU regiszterek A C G K Destruktorhívásra váró objektumok listája ( freachable queue ) Destruktorhívást igénylő objektumok listája ( finalization queue ) V 1.0 11

Automatikus memóriakezelés A felügyelt memória ( managed heap ) [A] Felügyelt memóriaterület (egy szemétgyűjtési ciklus után) A C D F G H I K Következő objektum helye Hivatkozások Mezők Paraméterek Helyi változók CPU regiszterek G K A C Destruktorhívásra váró objektumok listája ( freachable queue ) Destruktorhívást igénylő objektumok listája ( finalization queue ) V 1.0 12

A.NET keretrendszer vázlatos felépítése.net keretrendszer ASP.NET osztálykönyvtár Windows Forms osztálykönyvtár Vezérlők.NET alapú alkalmazások Memóriakezelés Webszolgáltatások Vezérlők Grafikai eszközök Egyéb szolgáltatások.net osztálykönyvtár (Framework Class Library) ADO.NET IO Management Messaging Net... Reflection Remoting Security Threading XML....NET futtatókörnyezet (Common Language Runtime) JIT fordító Egységes típusrendszer Verziókezelés Programkód ellenőrzése Kompatibilitási réteg Operációs rendszer V 1.0 13

A.NET osztálykönyvtárai A.NET osztálykönyvtárai különböző névterekben több ezer előre megírt osztályt tartalmaznak, amelyek széles körű beépített funkcionalitást tesznek elérhetővé ASP.NET osztálykönyvtár Windows Forms osztálykönyvtár Vezérlők Webszolgáltatások Vezérlők Grafikai eszközök Egyéb szolgáltatások.net osztálykönyvtár (Framework Class Library) ADO.NET IO Management Messaging Net... Reflection Remoting Security Threading XML... V 1.0 14

A.NET osztálykönyvtárai Fontosabb beépített névterek System alapvető típusok minden alkalmazáshoz System.Collections gyűjtemények, vermek, sorok, listák, hasítótáblák... System.Diagnostics alkalmazások hibakeresésének támogatása System.Drawing kétdimenziós rajzolófunkciók System.IO adatfolyam-alapú fájlkezelés, könyvtárak kezelése System.Net hálózati kommunikáció System.Reflection metaadatok és típusok futási idejű vizsgálata System.Runtime.Remoting típusok és példányaik távoli elérése System.Runtime.Serialization objektumok tárolása és visszaállítása System.Security adatok és erőforrások védelme System.Threading többszálú aszinkron programozás, párhuzamos erőforráselérés System.XML XML sémák és XML formátumú adatfolyamok feldolgozása V 1.0 15

A.NET osztálykönyvtárai Fontosabb támogatott alkalmazástípusok Windows-alapú grafikus felülettel rendelkező programok Windows 2000, XP és Vista alkalmazások Windows-alapú konzolos alkalmazások Parancssoros ablakon keresztül kommunikáló programok Komponensek és osztálykönyvtárak Tetszőleges osztályok, vezérlők és komponensek gyűjteményei Háttérben futó rendszerszolgáltatások Felhasználói felület nélküli, a géppel együtt induló háttérszolgáltatások XML webszolgáltatások Távolról, http és https protokollon keresztül hívható metódusok Webes felülettel rendelkező programok Weboldalak és portálok V 1.0 16