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

Hasonló dokumentumok
Már megismert fogalmak áttekintése

Interfészek. PPT 2007/2008 tavasz.

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

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

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások

C++ programozási nyelv

OOP #14 (referencia-elv)

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

OOP. Alapelvek Elek Tibor

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

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?

Bevezetés a Python programozási nyelvbe

OOP és UML Áttekintés

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

ELTE SAP Excellence Center Oktatóanyag 1

Rekurzió. Működése, programtranszformációk. Programozás II. előadás. Szénási Sándor.

Programozási alapismeretek 4.

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Komponens alapú programozás Bevezetés

Programozás III. - NGB_IN001_3

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

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Grafikus felhasználói felületek, eseménykezelés

OOP: Java 8.Gy: Abstract osztályok, interfészek

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

Programozás II. előadás

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

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Objektumorientált paradigma és a programfejlesztés

Java programozási nyelv 4. rész Osztályok II.

Programozás módszertan p.1/46

Gyakorlati vizsgatevékenység A

Mutatók és mutató-aritmetika C-ben március 19.

JAVA PROGRAMOZÁS 2.ELŐADÁS

Optimalizációs stratégiák 1.

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

C++ programozási nyelv

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

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

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

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

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

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

Programozási technológia

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

Angolul: Extreme Programming, röviden: XP Agilis módszertan. Más módszertanok bevált technikáinak extrém módú (nagyon jó) használata

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

Programozási nyelvek Java

Bevezetés a programozásba előadás: Öröklődés

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

Regionális forduló november 18.

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

COMET webalkalmazás fejlesztés. Tóth Ádám Jasmin Media Group

Grafikus felhasználói felületek. Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Dr.

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

Kivételkezelés a C++ nyelvben Bevezetés

Eseménykezelés Java környezetben, AWT alapok

Szoftver-technológia II. Szoftver újrafelhasználás. (Software reuse) Irodalom

van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk

Objektumorientált paradigma és programfejlesztés Bevezető

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később).

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

ELTE SAP EXCELLENCE CENTER Oktatóanyag. Sas László: ABAP Objects Objektumorientált ABAP

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

CORBA Áttekintés. Mi a CORBA? OMG and OMA. Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

Adattárház kialakítása a Szövetkezet Integrációban, UML eszközökkel. Németh Rajmund Vezető BI Szakértő március 28.

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

Java programozási nyelv

Objektum orientált kiterjesztés A+ programozási nyelvhez

Kommunikáció. Távoli eljáráshívás. RPC kommunikáció menete DCE RPC (1) RPC - paraméterátadás. 3. előadás Protokollok. 2. rész

Vállalati információs rendszerek I, MIN5B6IN, 5 kredit, K. 4. A meghirdetés ideje (mintatanterv szerint vagy keresztfélében):

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

Komponens modellek. 3. Előadás (első fele)

Osztályok, objektumok

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

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

Objektumorientált szoftverfejlesztés alapjai

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

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

Globális operátor overloading

Dokumentáció. 1. Beadandó feladat

Objektum orientált programozás Bevezeté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.

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

Java felhasználói felület

ESEMÉNY VEZÉRELT ALKALMAZÁSOK FEJLESZTÉSE I. Bevezetés. Készítette: Gregorics Tibor

Smart Pointer koncepciója

Pénzügyi algoritmusok

Absztrakció. Objektum orientált programozás Bevezetés. Általános Informatikai Tanszék Utolsó módosítás:

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

Java és web programozás

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

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

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

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

Átírás:

Eseménykezelés előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar

Függvénymutatókkal Származtatással Interfészekkel Egyéb nyelvi elemekkel Eseménykezelés

3 Komponens alapú programozás Komponens egy független egység Jól elhatárolható a környezetétől és más komponensektől Magába zárja az általa nyújtott szolgáltatásokat A komponens felhasználójának nem kell ismernie a működését Komponens interfésze A komponens funkcióihoz csak az interfészen keresztül lehet hozzáférni Egy komponens akár több interfészt is biztosíthat a külfönéle kliensek számára Eseménykezelés Általában a kliens próbál hozzáférni a komponens funkcióihoz, de elképzelhető, hogy bizonyos esetekben a komponensnek kell kommunikációt kezdeményeznie Amennyiben kétirányú kommunikációra van szükség, ezt technikailag biztosítani kell a komponens módosítása nélkül

4 Függvénymutatók A napjainkban használt (Neumann-elvű) architektúrák esetén a programok kódja azonos memóriában (és azonos módon) tárolódik az adatokkal Ez alapján technikailag egyszerűen megoldható, hogy egy mutató ne egy változóra, hanem egy függvény belépési címére mutasson Hagyományos nyelveknél ezzel lehetett megoldani a visszahívásokat (callback) Előnyei Hatékony (gyors) Hátrányai Bonyolult Nincs ellenőrzés (fordítás, futtatás közben) Nagy a hibalehetőség (hibás kód, rosszindulatú kód stb.) a : 8 bites szám függvény Növel(k) k k + 1 Növel k függvény vége 01011011101100110010101 01010101010101010001010 11010111010110101101010 00110101000111001010111 01000011100010101111000 11010100101011111100001 01101110110011001010101 01010101010101000101011 01011101011010110101000 11010100011100101011101 00001110001010111100011 01010010101111110000101 10111011001100101010101 01010101010100010101101 01110101101011010100011 01010001110010101110100 00111000101011110001101 01001010111111000010110 11101100110010101010101 01010101010001010110101 11010110101101010001101 01000111001010111010000 11100010101111000110101 00101011111100001011011

Függvénymutatókkal Származtatással Interfészekkel Egyéb nyelvi elemekkel Eseménykezelés

6 Eseménykezelés származtatással Az eseményeket küldő osztály rendelkezik olyan (alapesetben absztrakt vagy üres) metódusokkal, amelyeket az esemény bekövetkeztekor mindig meghív Az események kezeléséhez szükséges egy leszármazott osztály készítése, majd ott ezen metódusok implementálása A módszer többféleképpen megoldható Minden eseményt egy metódus kezel Minden eseményhez külön metódus tartozik Előnyei Jól illeszkedik az OOP szemlélethez Hátrányai Sok, gyakran minimális kóddal rendelkező osztály definiálását igényli Gomb +Lenyomás( ) +EseményKezelő( ) HelloGomb +EseményKezelő( ) Az esemény forrása és az eseményhez tartozó kezelő nem függetlenek (pl. ugyanaz a kezelő több helyen?)

Függvénymutatókkal Származtatással Interfészekkel Egyéb nyelvi elemekkel Eseménykezelés

8 Eseménykezelés interfészekkel Az eseménykezelésben résztvevő típusok Esemény támogató interfész Eseményt küldő osztály (tárol egy vagy több, az interfészt megvalósító objektumreferenciát) Eseményt kezelő osztály (megvalósítja ezt az interfészt) Eseménykezelés lépései Eseménykezelő osztály definiálása Eseménykezelő objektum példányosítása Eseménykezelő objektum regisztrálása Esemény bekövetkezte esetén a forrás az interfészen keresztül meghívhatja a kezelő metódusát Előnyei Az esemény forrása és kezelője egymástól függetlenek Gomb -kezelő(k) : IGombKezelő +Feliratkozás(IGombKezelő) +Leiratkozás(IGombKezelő) +Lenyomás( ) IGombKezelő <<interface>> IGombKezelő +LenyomásKezelő( ) GombKezelő +LenyomásKezelő( ) 1 forrás N kezelő, N forrás 1 kezelő, N forrás N kezelő (általában az eseménykezelő metódus paramétere a forrás objektum) Az interfész több metódust is tartalmazhat (lenyom, lenyit stb.)

Függvénymutatókkal Származtatással Interfészekkel Egyéb nyelvi elemekkel Eseménykezelés

10 Eseménykezelés metódusreferenciákkal Alapelve hasonló a függvénymutatóknál megismert módszerhez (legalábbis a programozó számára a metódusreferenciák kezelése hasonlónak tűnik) Lényeges különbségek Csak objektumok metódusaira tudunk hivatkozni Metódusreferencia értékadásánál szigorú típusellenőrzésen kell átesnie a metódusnak (paraméterek típusa, visszatérési érték) Az eseménykezelés architektúrája megfelel az OOP alapelveinek Előnyei Könnyen olvasható kód, nincs szükség új osztály definiálására (vagy interfészek megvalósítására) az események kezeléséhez Példány és osztály metódusok egyaránt értékül adhatók Eseménykezelés nyelvi szintű támogatásából eredő előnyök (pl. regisztráció, eseménykezelők tárolása stb.)

11 Irodalomjegyzék Javasolt/felhasznált irodalom Nyékyné Gaizler Judit: Java 2 útikalauz programozóknak 1.3, ELTE TTK Hallgatói alapítvány, Budapest J. Richter: CLR via C# 2nd edition, Microsoft press, 2006