Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék

Hasonló dokumentumok
Áttekintés. Tartalom. Mi is az a Bean?

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Komponens alapú programozás Bevezetés

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

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

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

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

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

Java I. A Java programozási nyelv

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

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

A Java EE 5 plattform

Komponens alapú fejlesztés

Szoftvertechnológia alapjai Java előadások

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

Bevezető. Servlet alapgondolatok

Swing GUI készítése NetBeans IDE segítségével

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Programozási technológia

eseményvezérelt megoldások Vizuális programozás 5. előadás

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

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

Concurrency in Swing

OOP #14 (referencia-elv)

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

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

Segédanyag: Java alkalmazások gyakorlat

Collections. Összetett adatstruktúrák

Generikus Típusok, Kollekciók

JAVA webes alkalmazások

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

é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

Már megismert fogalmak áttekintése

Java programozási nyelv 7. rész Java osztálykönyvtár 1.

JavaBeans. Java tutorial. Komponens-elvu programoza s. Off-the-shelf. Megoldas Java modra. O sszeszerele s

Osztott alkalmazások fejlesztési technológiái Áttekintés

Komponensek együttműködése web-alkalmazás környezetben. Jónás Richárd Debreceni Egyetem T-Soft Mérnökiroda KFT

Webalkalmazás fejlesztés Java EE környezetben NetBeans segítségével: JavaServer Faces 1.2 AJAX

ELTE SAP Excellence Center Oktatóanyag 1

Java RMI Áttekintés. A Java RMI. A Java RMI architektúrája. Ficsor Lajos. Általános Infromatikai Tanszék Miskolci Egyetem 1.

OOP és UML Áttekintés

Web-fejlesztés NGM_IN002_1

JAVA SE/ME tanfolyam tematika

A WEB programozása - JSP1 dr.gál Tibor őszi félév

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

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

Programozási nyelvek II.: JAVA

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

STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1

Grafikus felhasználói felületek. Abstract Window Toolkit, a java.awt és java.awt.event csomagok

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

A Java Persistence API PersistenceAPI / 3

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

OOP: Java 8.Gy: Gyakorlás

Programozási technológia

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

BME MOGI Gépészeti informatika 8.

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

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Java programozási nyelv 6. rész Java a gyakorlatban

Abstract osztályok és interface-ek. 7-dik gyakorlat

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

JNDI - alapok. Java Naming and Directory Interface

Java RMI Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. javarmi / 1

S01-7 Komponens alapú szoftverfejlesztés 1

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

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

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?

webalkalmazások fejlesztése elosztott alapon

libgdx alapok, első alkalmazás

Java Programozás 11. Ea: MVC modell

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

A SZOFTVERTECHNOLÓGIA ALAPJAI

4. rész: Java Enterprise Edition bevezetı. Bakay Árpád dr. NETvisor kft (30)

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Java és web programozás

Programozási nyelvek Java

Programozási alapismeretek 4.

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

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Objektumorientált programozás C# nyelven

ZH mintapélda. Feladat. Felület

Java I. A Java programozási nyelv

Segédanyag: Java alkalmazások gyakorlat

Overview. Service. Application Activity Activity 2 Activity 3. Fragment. Fragment. Fragment. Frag ment. Fragment. Broadcast Receiver

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

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

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

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

Sorosítás (szerializáció) és helyreállítás. 1. Bináris sorosítás és helyreállítás Szükséges névterek Attribútumok. 1.3.

A C++ szigorúbban kezeli a típuseltéréseket, mint a C nyelv Lehetséges típuskonverziók:

Swing. (A javax.swing csomag)

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

A feladatok megoldásához felhasználandó osztályok leírásait az alábbi URL-en találja meg:

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

MVC. Model View Controller

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Név: Neptun kód: Pontszám:

Átírás:

A JavaBeans komponens modell Áttekintés Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék Ez a tananyag felhasználja a TEMPUS S_JEP-12495-97 Network Computing Chapter 8 Developing of Network Computing Applications Component Based System Development (Lajos Ficsor) egyes részeit, magyar nyelvre fordítva Utolsó módosítás: 2007. 10. 09. A JavaBeans komponens modell

Mi is az a Bean? Tartalom A JDK, mint komponens framework A Bean modell legfontosabb jellemzői Tervezési idejű és futásidejű Bean-ek Tervezési minták Bean készítése Hogyan működik? Ficsor Lajos A JavaBeans komponens modell JavaBeans / 2

Mi is az a Bean? A JavaBeans specifikáció egy Java alapú komponens architektúra Java komponens készítők és komponens felhasználók számára A Bean black-box komponens. Lehet látható vagy nem látható. A Bean egy ZIP formátumú archív file, amely tartalmaz: Java osztályokat Szerializált objektumok halmazát Opcionálisan HTML help file-t, lokalizációs információkat, ikont és egyéb erőforrásokat Opcionálisan egy manifest file-t Ficsor Lajos A JavaBeans komponens modell JavaBeans / 3

Mi is az a Bean? (folyt. folyt.) A JavaBean-ek (főként) a prezentációs rész komponensei Reprezentálhatnak GUI elemeket (a swing komponensek is bean-ek) Azonos címtérben helyezkednek el a kliensükkel ("lokális" komponensek) A kliensük képezi a konténerüket, azaz a működtető környezetüket, amely minden erőforrást biztosít számukra Eseményeket küldenek a konténerüknek Ficsor Lajos A JavaBeans komponens modell JavaBeans / 4

A Bean a programozó szempontjából BeanInfo Customizer Methods Events Properties Ficsor Lajos A JavaBeans komponens modell JavaBeans / 5

A JDK mint komponens frameworkf A JDK eszközeivel a fejlesztő képes: új Bean készítésére, előzmények nélkül új Bean készítésére már létező Bean-ek segítségével létező Bean-ek testreszabására alkalmazás készítésére tesztreszabott Bean-ekből Ficsor Lajos A JavaBeans komponens modell JavaBeans / 6

JDK Framework View of JavaBeans Visual Presentation Events Properties Introspection Persistence Customizer ORB Services Own Beans Ficsor Lajos A JavaBeans komponens modell JavaBeans / 7

Megjelenítés s (Visual( Presentation) Támogatja a komponensek elhelyezkedésének (visual layout) meghatározását Lehetővé teszi, hogy a komponensek vizuálisan együttműködjenek egymással Mindezeket az alábbiak felhasználásával valósítja meg: Java Foundation Classes (JFC) AWT 2-D grafika Swing komponensek Ficsor Lajos A JavaBeans komponens modell JavaBeans / 8

Események (Events( Events) A JavaBeans esemény modellje: event-delegation modell Ez ugyanaz a módszer, amit a JDK 1.1 az AWT számára bevezetett, de minden Bean használhatja Az események objektumok Egy komponens képes továbbítani (post) egy eseményt (esemény forrás) Más komponensek feliratkozhatnak (subscribe) egy esemény forráshoz Minden feliratkozott komponens (listeners) értesítést kap, amikor az esemény keletkezik (the event "fires") Ficsor Lajos A JavaBeans komponens modell JavaBeans / 9

Tulajdonságok (Properties( Properties) A Bean tulajdonságai: névvel ellátott attribútumok A programozó olvashatja és módosíthatja ezeket a tulajdonságokat egy tulajdonság szerkesztő (property editor) segítségével, ami egy vizuális fejlesztőeszköz része A prgram futásidőben is kezelheti a tulajdonságokat az interface "get" és "set" metódusai segítségével A tulajdonság változások eseményeket válthatnak ki A tulajdonság értékét, viselkedését lehet korlátozni Ficsor Lajos A JavaBeans komponens modell JavaBeans / 10

Feltárás s (Introspection( Introspection) Egy Bean környezete (konténere) képes információt szerezni a Bean tulajdonságairól és szolgáltatásairól Ehhez a készítés során elnevezési konvenciókat ("design patterns") kell betartani Egy vizuális fejlesztőeszköz képes arra, hogy a Bean testreszabható tulajdonságait felderítse Erre a célra minden Bean tartalmaz egy BeanInfo interfészt, amely ismeri a konvenciókat A komponens fejlesztője eltérhet a konvencióktól saját BeanInfo interfész definiálásával Ficsor Lajos A JavaBeans komponens modell JavaBeans / 11

Perzisztencia (Persistence) A Bean-ek a JDK szerializációs szolgáltatásait használják erre a célra A vizuális fejlesztőeszközök olyan komponenseket igényelnek, amelyek rendelkeznek perzisztens képességekkel Támogatja a verziókezelés egyszerű formáját Egy Bean soha nem tölt vissza egy régebbi verzió által írt állapotot Egy Bean sohasem írja ki az állapotát egy régebbi verzióval kompatibilis formában A Bean-ek JAR file-ok formájában terjeszthetők Ficsor Lajos A JavaBeans komponens modell JavaBeans / 12

Testreszabás (Customization) Biztosítja, hogy a Bean-ek külső eszközökkel kezelhetők (tulajdonságaik beállíthatók) legyenek A támogatás első szintje, hogy minden Bean rendelkezik property editor osztályokkal Ezek segítségével egy Bean tervezője vizuálisan szerkesztheti a tulajdonságok egy meghatározott részét (például font, szín stb.) Ficsor Lajos A JavaBeans komponens modell JavaBeans / 13

Testreszabás (folyt.) További lehetőséget adnak a Property sheet-ek. Ezek vizuális interfészek, amelyek csoportosítva mutatják a property editor segítségével kezelhető tulajdonságokat. Minden Bean rendelkezik egy beépített Costumizer interfésszel. Ezt saját verzióval implementálva a komponens tervezője tetszőleges tulajdonságot szerkeszthetővé tehet. Ficsor Lajos A JavaBeans komponens modell JavaBeans / 14

Tervezési idejű és s futásidej sidejű Bean-ek ek Egy Bean-nek egy szerkesztőben és egy futó alkalmazásban egyaránt működnie kell. A szerkesztő eszközön belüli működéshez számos többlet funkció szükséges. Design-Time Bean Bean classes Customizer class PropertyEditor class BeanInfo class BeanDescriptor classes Introspector class JAR + (.SER) Bean classes JAR + (.SER) Run-Time Bean Ficsor Lajos A JavaBeans komponens modell JavaBeans / 15

Bean készítésese A Bean egy olyan Java osztály, amely betartja az alábbi követelményeket Rendelkezik argumentum nélküli konstruktorral Implementálja a java.io.serializable interface-t. Betartja az elnevezési konvenciókat (design patterns) Ha a Bean egy vizuális komponens, valamelyik AWT osztályból kell származtatni. Célszerű thread safe módon implementálni, mert nem tudhatjuk előre, milyen módon fog futni Általában eseményekkel is kell foglalkoznia. Ficsor Lajos A JavaBeans komponens modell JavaBeans / 16

Tervezési minták k (Desing( Patterns) A JavaBeans architektúra szabványos elnevezési és típus konvenciókat specifikál a Bean azon metódusai számára, amelyek megmutatják a külvilágnak a Bean tulajdonságait, egyéb metódusait és az eseményeket. A Bean lehetőségeit ezek segítségével lehet kívülről feltárni. A komponens programozója megváltoztathatja ezeket a konvenciókat saját BeanInfo osztály implementálásával Ficsor Lajos A JavaBeans komponens modell JavaBeans / 17

Tervezési minták k (folyt.) Az alábbiakban XXX jelöli a fejlesztő által megadható azonosító-részt A <> zárójelpárban érvényes típusnevek vannak Alapvető konvenciók Egyszerű tulajdonság public <PropertyType> getxxx(); public void setxxx (<PropertyType> value) Ficsor Lajos A JavaBeans komponens modell JavaBeans / 18

Tervezési minták k (folyt.) Boolean tulajdonság public boolean isxxx(); public void setxxx(boolean value); Indexelt tulajdonság public <PropertyType>[] getxxx(); public void setxxx (<PropertyType>[] values) vagy public <PropertyType> getxxx(int index); public void setxxx (int index, <PropertyType> value) Ficsor Lajos A JavaBeans komponens modell JavaBeans / 19

Tervezési minták k (folyt.) Multicast esemény public void add<eventlistenertype> (<EventListenerType> a ) public void remove<eventlistenertype> (<EventListenerType> a ) Unicast esemény public void add<eventlistenertype> (<EventListenerType> a )throws java.util.toomanylistenersexception public void remove<eventlistenertype> (<EventListenerType> a ) Ficsor Lajos A JavaBeans komponens modell JavaBeans / 20

Tervezési minták k (folyt.) Módszerek A szokásos módon megadott public metódusok Ficsor Lajos A JavaBeans komponens modell JavaBeans / 21

Hogyan használhat lható egy Bean? Két módszer Egyszerű osztálynak tekintve, használhatjuk a példányai tulajdonságait elérő és egyéb és módszereit. Egy Bean eseményt generálhat, vagy eseményre figyelhet, azaz résztvevője lehet a Java esemény kezelési modelljének. Ficsor Lajos A JavaBeans komponens modell JavaBeans / 22

Az esemény kezelés Egy Bean lehet esemény forrás (eseményeket generálhat.) Egy Bean lehet esemény figyelő (listener). Minden figyelőt regisztrálni kell az esemény forrásnál. A regisztráció során átadja az eseménykezelője referenciáját az eseményforrásnak A források esemény objektumokat generálnak, és átadják azokat argumentumként a regisztrált figyelők esemény kezelőjének. Minden eseménytípushoz tartozik egy kezelő. Ficsor Lajos A JavaBeans komponens modell JavaBeans / 23

Az esemény kezelés s (folyt.) A folyamat szekvencia diagramja Listener addactionlistener(referencia) Bean Új figyelő regisztrálása actionperformed(objektum) Esemény kezelése removeactionlistener(referencia) Valami történik Esemény objektum létrehozása Figyelő eltávolítása a listáról Ficsor Lajos A JavaBeans komponens modell JavaBeans / 24

Tulajdonságok Egy tulajdonság egy setter/getter metódus párossal implementálódik Ha a páros valamelyike elmarad, csak olvasható vagy csak írható tulajdonságot definiálhatunk. Ficsor Lajos A JavaBeans komponens modell JavaBeans / 25

"Bounded properties" Kötött tt tulajdonágok Ha egy ilyen tulajdonság állapota megváltozik, az ezen tulajdonság változásához regisztrált figyelők eseményt kapnak. Segédosztályok vannak a kötött tulajdonságok létrehozásához és kezeléséhez. Ficsor Lajos A JavaBeans komponens modell JavaBeans / 26

Vétózható tulajdonságok "Constrained properties" A tulajdonság megváltozása előtt a regisztrált figyelők értesítést kapnak egy speciális esemény formájában. A tulajdonság csak akkor változik meg, ha egyetlen figyelő sem vétózta meg a változást. Segédosztályok vannak a vétózható tulajdonságok létrehozásához és kezeléséhez. Ficsor Lajos A JavaBeans komponens modell JavaBeans / 27

Egyszerű Bean példa package zib.hu.fabokzs.bean; import java.io.serializable; public class StrIntBean implements Serializable { // Properties private String strvalue; private int intvalue; Ficsor Lajos A JavaBeans komponens modell JavaBeans / 28

Egyszerű Bean példa (folyt.) // Konstruktorok public StrIntBean() { this.strvalue = new String(); this.intvalue = 0; } // StrIntBean() public StrIntBean(String strvalue, int intvalue) { setstrvalue(strvalue); setintvalue(intvalue); } // StrIntBean(String, int) Ficsor Lajos A JavaBeans komponens modell JavaBeans / 29

// Properties Egyszerű Bean példa (folyt.) public String getstrvalue() { return this.strvalue; } // getstrvalue() public void setstrvalue(string strvalue) { this.strvalue = strvalue; } // setstrvalue(string) Ficsor Lajos A JavaBeans komponens modell JavaBeans / 30

Egyszerű Bean példa (folyt.) public int getintvalue() { return this.intvalue; } // getintvalue() public void setintvalue(int intvalue) { this.intvalue = intvalue; } // setintvalue(int) } // class StrIntBean Ficsor Lajos A JavaBeans komponens modell JavaBeans / 31

Hivatkozások Robert Orfali, Dan Harkey: Client/Server Programming with JAVA and CORBA (2nd Ed.) John Wiley & Sons, Inc, 1998 Sok szerző: Java 2 útikalauz programozóknak 1.3 I. Kötet ELTE TTK Hallgatói Alapítvány, Budapest, 2001. java.sun.com: JavaBeans tutoriál Ficsor Lajos A JavaBeans komponens modell JavaBeans / 32