Technologie JavaBeans

Rozměr: px
Začít zobrazení ze stránky:

Download "Technologie JavaBeans"

Transkript

1 Technologie JavaBeans doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / Miroslav.Benes@vsb.cz Obsah Historie Komponentový model Typy komponent Scénáře použití Struktura komponenty Vlastnosti, metody, události Enterprise JavaBeans PTE - JavaBeans 2 Něco z historie 500 před n. l. Pythagoras založil bratrstvo vyznávající reinkarnaci, vegetariánství, mystický význam čísel a odmítání fazolí (beans) jako potravy (obsahují duše zemřelých) 850 n. l. arabský pasák koz Kaldi zjistil, že se jeho stádo chová divně a objevil kávu a účinky kofeinu. Konec 17. století pěstování kávových zrn na ostrově Java, spojení názvu s kávou obecně 1995 jazyk Oak firmy Sun má problémy s názvem, zvolen název Java a spojení produktů s kávou Komponentový model Architektura komponent Komponenty stavební bloky Kontejnery kombinace komponent do struktur Principy manipulace a komunikace s komponentami z vnějšího prostředí Introspekce Zpracování událostí Persistence PTE - JavaBeans 3 PTE - JavaBeans 4 1

2 Cíle modelu JavaBeans Write once, run anywhere, reuse everywhere Přidávání funkcí bez nutnosti přepisovat úplně všechno Provádění na všech platformách a v distribuovaném prostředí Použití v různých scénářích aplikacích, jiných komponentách, dokumentech, www stránkách, nástrojích pro vývoj aplikací, Typy komponent Vizuální komponenty Mají vizuální reprezentaci zabírající prostor v okně aplikace Příklad: tlačítko, tabulka, rolovací seznam Podpora ve vizuálních nástrojích Nevizuální komponenty Příklad: časovač, databázové spojení, kontrola pravopisu, PTE - JavaBeans 5 PTE - JavaBeans 6 Scénáře použití paleta komponent Využití grafického návrhového prostředí Rozložení komponent v okně aplikace Nastavení vlastností komponent Barva, typ písma, klávesová zkratka, Využití editorů vlastností (property editor) Propojení komponent a zápis metod pro zpracování událostí Testování Vytvoření instalace aplikace včetně komponent okno aplikace editor vlastnosti PTE - JavaBeans 7 PTE - JavaBeans 8 2

3 Scénáře použití Použití v ručně psaném programu Vytvoření instancí komponent a nastavení jejich rozměrů a pozice Nastavení vlastností komponent Vytvoření metod pro zpracování událostí Registrace metod pro zpracování událostí Testování Vytvoření instalace aplikace včetně komponent Příklad private void jbinit() throws Exception { jlabel1.settext("zadejte heslo:"); this.getcontentpane().setlayout(flowlayout1); jtextfield1.setminimumsize(new Dimension(80,21)); jtextfield1.setpreferredsize(new Dimension(80,21)); jtextfield1.settext(""); jbutton1.settext("ok"); this.getcontentpane().setbackground(color.orange); this.setforeground(color.black); this.getcontentpane().add(jlabel1, null); this.getcontentpane().add(jtextfield1, null); this.getcontentpane().add(jbutton1, null); PTE - JavaBeans 9 PTE - JavaBeans 10 Struktura komponenty Příklad komponenty - čítač Vlastnosti (properties) Přístup prostřednictvím přístupových metod (čtení, zápis hodnoty), ne přímo Metody (methods) Operace nad komponentami Události (events) Vazby mezi komponentami Counter int value void clear() void increment() vlastnosti metody PTE - JavaBeans 11 PTE - JavaBeans 12 3

4 Přístupové metody public class Counter { private int val; public int getvalue() { return val; public void setvalue(int val) { this.val = val; Přístupové metody public int getvalue() int value public void setvalue( int val) Vlastnost hodnota typu int PTE - JavaBeans 13 PTE - JavaBeans 14 Přístupové metody Vlastnosti určené pouze pro čtení Mají pouze metodu getxxx() Vlastnosti určené pouze pro zápis Mají pouze metodu setxxx() Vlastnosti typu boolean Metoda pro čtení se může jmenovat isxxx() public boolean isempty(); Indexované vlastnosti public int getvalue(int index) int value[] public void setvalue(int index, int val) PTE - JavaBeans 15 PTE - JavaBeans 16 4

5 Speciální vlastnosti Vázané vlastnosti (bound properties) Generují událost PropertyChange, pokud se mění jejich hodnota Vlastnosti s omezením (constrained prop.) Generují událost VetoableChange, pokud se mění jejich hodnota Změna hodnoty může být zakázána Použití vlastností komponent Atributy objektů ve skriptovacích jazycích JavaScript, VBScript Programový přístup přes veřejné přístupové metody Přístup přes formuláře (property sheets) v návrhových prostředích Čtení a zápis do perzistentní paměti PTE - JavaBeans 17 PTE - JavaBeans 18 Metody Za metody komponenty se považují všechny veřejné (public) metody třídy public void clear() { val = 0; public void increment() { val++; Události Zdroj událostí Objekt, který generuje události Spravuje seznam registrovaných posluchačů Posluchač (listener) Objekt, který chce být o události informován Musí se registrovat u zdroje událostí Musí implementovat dohodnuté rozhraní PTE - JavaBeans 19 PTE - JavaBeans 20 5

6 Události Zpracování událostí registrovaní posluchači Zdroj události vznik události registrace addeventlistener Informace o události EventObject e EventListener Posluchač Posluchač Posluchač nastalaudalost(e) 1. Posluchač se zaregistruje u zdroje událostí (např. u tlačítka, na jehož stisknutí čeká) 2. Uživatel stiskne tlačítko vznikne událost 3. Zdroj události (tlačítko) projde seznam registrovaných posluchačů, a každému z nich oznámí vznik události: Zavolá dohodnutou metody rozhraní posluchače Metodě předá informace o události (podtřída java.util.eventobject) PTE - JavaBeans 21 PTE - JavaBeans 22 Informace o události public class CounterEvent extends java.util.eventobject { // konstruktor public CounterEvent(Counter source) { super(source); Posluchač interface CounterEventListener extends java.util.eventlistener { // čítač byl vynulován void reset(counterevent e); // byla překročena maximální hodnota void limitreached(counterevent e); PTE - JavaBeans 23 PTE - JavaBeans 24 6

7 Posluchač class MyListener implements CounterEventListener { public void reset(counterevent e) { System.out.println( Čítač vynulován ); public void limitreached(counterevent e) { System.out.println( Překročen limit ); Registrace posluchače class Counter { public void addcounterlistener( CounterListener listener) { // registrace posluchače public void removecounterlistener( CounterListener listener) { // zrušení registrace posluchače PTE - JavaBeans 25 PTE - JavaBeans 26 Registrace posluchače class MyListener implements CounterEventListener { void run() { Counter counter = new Counter(); counter.addcounterlistener(this); counter.clear(); public void reset(counterevent e) { public void limitreached(counterevent e) { Adaptér Rozhraní EventListener pro konkrétní komponentu může obsahovat mnoho metod Chceme-li reagovat jen na některé události: Musíme implementovat prázdné reakce na ostatní události, nebo použijeme adaptér jako bázovou třídu a implementujeme jen zvolené metody Adaptér implementuje implicitní odezvu na všechny události PTE - JavaBeans 27 PTE - JavaBeans 28 7

8 Adaptér class CounterAdapter implements CounterEventListener { public void reset(counterevent e) { public void limitreached(counterevent e) { Adaptér Counter counter = new Counter(); // použití anonymní vnitřní třídy counter.addcounterlistener( new CounterAdapter { // předefinujeme pouze metodu reset public void reset(counterevent e) { System.out.println( Reset! ); ); PTE - JavaBeans 29 PTE - JavaBeans 30 Enterprise JavaBeans (EJB) Technologie pro vytváření rozsáhlejších programových komponent Entity Beans - data Session Beans - synchronní operace Message Beans - asynchronní operace Odkazy Využívají se např. v informačních systémech PTE - JavaBeans 31 PTE - JavaBeans 32 8