TÉMATICKÝ OKRUH Softwarové inženýrství



Podobné dokumenty
Observer. Klasifikace. Alias. Smysl. Potřeba sledování změn objektu a notifikace. Obdoba systému událostí (C#, Java) vlastními prostředky

Java GUI události. Událostmi řízené programování. Zpracování = obsluha událostí

Události. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Implementace systémů HIPS: historie a současnost. Martin Dráb

1. Pro přihlášení k odběru novinek klikněte na tlačítko Registrace nového uživatele.

Implementace systémů HIPS: ve znamení 64bitových platforem. Martin Dráb

State. Známý jako. Účel. Použitelnost. Stav, Object for States. umožňuje objektu měnit svoje chování v závislosti na stavu objekt mění svou třídu

TÉMATICKÝ OKRUH Softwarové inženýrství

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

2 Tvorba interaktivních grafických programů

Návod k softwaru. Získání licence. vojtech.vesely@catania.cz

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

Common Object Request Broker Architecture

Svolávací systém Uživatelský manuál

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Úvod do počítačových sítí

Webové hlášení pracovišť vyšetřujících HIV o počtu provedených vyšetření

ZAMĚSTNANECKÝ PORTÁL nastavení a práce v ESO9 PAM

MVC (Model-View-Controller)

Technologie JavaBeans

Programátorská příručka

Podrobný postup pro doložení příloh k Finančnímu zdraví žadatele prostřednictvím Portálu farmáře

Návrhový vzor Factory v JAVA API

Autorizační systém Uživatelská příručka pro Samoobslužnou aplikaci

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

Replikace je proces kopírování a udržování databázových objektů, které tvoří distribuovaný databázový systém. Změny aplikované na jednu část jsou

Autorizační systém Uživatelská příručka pro Samoobslužnou aplikaci

ROZHRANÍ PRO ZPŘÍSTUPNĚNÍ A PREZENTACI ZNALOSTNÍ DATABÁZE INTERPI UŽIVATELSKÁ PŘÍRUČKA

1. Pro přihlášení k odběru novinek klikněte na tlačítko Registrace nového uživatele.

Zaměstnanecký portál nastavení a práce v ESO9 PAM

Specifikace softwarového díla & Časový plán implementace. pro. MEF Editor

Modul PrestaShop verze 1.6 Uživatelská dokumentace

01. HODINA. 1.1 Spuštění programu VB Prvky integrovaného vývojového prostředí. - pomocí ikony, z menu Start.

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Knihovna QT4 a moºnosti jejího vyuºití

Modul PrestaShop verze 1.7 Uživatelská dokumentace

Modul Periodická fakturace

Workshop SAP GRC AC Představení SAP GRC Access Control Josef Piňos, CONSIT s.r.o.

Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5

CineStar Černý Most Praha

MƏj úĭet Uživatelský manuál Verze 1.01/2010

Příručka pro použití portálu Klikni a daruj pro dárce

Podklad pro tvorbu ilayer typu

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

Jednoduchý uživatelský manuál k programu Cat s Paradise

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Portál Značení tabáku Uživatelská příručka pro registrované uživatele

Návod na instalaci HW certifikátu aplikace PARTNER24

ČSOB Business Connector

Aplikace objednávání svozů

Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM. Manuál pro editaci ŽS. Verze 1.

Manuál pro studenty. Obsah

Příručka pro uživatele ČSOB CEB s čipovou kartou v operačním systému Mac OS X

8. GRAFICKÉ UŽIVATELSKÉ ROZHRANÍ

Návod na připojení vlastního zařízení do WiFi sítě MMK-Staff

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

ucetni-program-pohoda.cz Uživatelský návod a nastavení Instalace str. 2 Uživatelské práva str. 3

GUI v Javě (připomínka) Návrhář GUI Příklad aplikace MVC Model-View-Controller Události Vnitřní třídy. MVC Model-View-Controller

Dílčí projekt: Systém projektování textilních struktur 1.etapa: tvorba systému projektování vlákno - příze - tkanina

Manuál k programu KaraokeEditor

Tento dokument je určen oprávněným uživatelům programového vybavení Avensio Software za těchto podmínek:

Cvičení č. 3. Sdílené prostředky a synchronizace Program Banka. 4 body

ESET LICENSE ADMINISTRATOR

TSC diagnostika. Prezentace programu

Nápověda pro aplikaci Manuscriptorium Kandidátů (M-Can)

ISPOP 2019 MANUÁL PRO PRÁCI V REGISTRU ODBORNĚ ZPŮSOBILÝCH OSOB

Obsah přednášky. GUI v Javě a událostmi řízené programování. Základní prvky grafického rozhraní. Základní komponenty.

Manuál SW lokalizace problémů a hodnot v dynamické mapě

Informační systém MŠMT pro elektronické řešení dotačních programů - oblast podpora zabezpečení škol

Manuál pro práci s modulem Otázky a odpovědi

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

První seznámení s mobilní aplikací PATRIOT GPS

Příručka pro uživatele CEB s čipovou kartou

GUI v Javě a událostmi řízené programování

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

TÉMATICKÝ OKRUH Softwarové inženýrství

edávky Návod k použití

Moje Cisco Nejčastější dotazy

Návod na instalaci SW certifikátu aplikace PARTNER24

Webová aplikace Znalostní testy online UŽIVATELSKÁ PŘÍRUČKA

1. Dědičnost a polymorfismus

Výroba - míchání směsí Uživatelský manuál +1658

CZ.1.07/1.5.00/

Práce s administračním systémem internetových stránek Podaných rukou

Příručka pro školy. Školní projekt na Portálu farmáře

Základní uživatelský manuál služby WMS Drive

Obsah přednášky. GUI v Javě a událostmi řízené programování. Základní prvky grafického rozhraní. Základní komponenty.

AEGON echange = změna smlouvy

Výtisk č.: Počet listů 19. Přílohy: 0 ÚZIS ČR. Role žadatel - postup

Uživatelská příručka MWA - Rezervační modul

Testování mobilní aplikace Servis24. Semestrální práce z předmětu A7B39TUR Autor: Peter Šourek sourepet@fel.cvut.cz

HELIOS nastavení nového roku

Bc. Martin Majer, AiP Beroun s.r.o.

On-line dražební systém EDEN návod k použití

GUI v Javě a událostmi řízené programování

CGMesky. Rozšiřující služba

Personální evidence zaměstnanců

Transkript:

TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 29. Otázka : Zpracování událostí: mechanismus událostí a jejich zpracování (Event/Listener), nepřímá invokace (Observer/Observable). Obsah : 1. Mechanisums událostí a jejich zpracování(event/listener) 2. Observer/Observable

1. Mechanismus událostí a jejich zpracování(event/listener) Mechanismus událostí slouží k interakci programus uživatelem a operačním systémem. Událost nastává například při stisku tlačítka, pohybu myši, změně pozice v seznamu pokusu o zavření okna a podobně. Události Události tvoří dva prvky : zdroj události posluchač Zdroj události Je objekt, který generuje události a spravuje seznam registrovaných posluchačů. Posluchač Objekt, který chce být o události informován, musí být registrován u zdroje událostí a musí implementovat dohodnuté rozhraní. Postup (životní cyklus události): 1. Událost vznikne (typicky uživatelskou akcí nad komponentou GUI). 2. Na komponentu musí být "zavešen" posluchač dané události, to je posluchač je registrován u zdroje události 3. Zdroj události (tlačítko) projde seznam registrovaných posluchačů a každému z nich oznámí vznik události: - zavolá dohodnutou metodu rozhraní posluchače - metodě předá informace o události (podtřída java.util.eventobject) Události mohou souviset s uživatelskou akcí nad/s: oknem WindowEvent klávesnicí KeyEvent myší (klikání a pohyb) MouseEvent získáním nebo ztrátou fokusu FocusEvent (obecnou) akcí nad GUI (stisk tlacítka v GUI) - ActionEvent K tomu, aby daná komponenta byla schopna provádět funkce a reagovat na naše podněty (kliknutí myší) používá Java systém událostí (events), které komponenta generuje a tzv. posluchačů (listeners), kteří slouží pro zachycení a následné zpracování vygenerované události. Posluchači tedy představují speciální objekty, jejichž jediným účelem je zachycení události a zpracování odezvy na tuto událost. Tedy jak jsme jiz výše zmiňovali : 1. Nejprve pro komponentu zaregistrujeme jejího posluchače (obvykle metodou addsomelistener()) pro zpracování událostí, které bude při své činnosti generovat. 2. Pokud za běhu programu komponenta vygeneruje událost (například po kliku myší) a má pro tento typ události zaregistrován posluchač, následuje zpracování této události metodami posluchače.

2. Nepřímá invokace Observer/Observable Jedná se o návrhový vzor Pozorovatel, který je velmi často používána v různých konkrétních situacích. Nasazuje se v situacích, kde objekt, který mění své chování a jeho pozorovatelé neudržují navzájem žádné vazby a jejich propojení je zprostředkována jejich supertřídami. Smysl této nepřímé invokace spočívá v tom, že o přidání nového pozorovatele není nutné informovat (a tím měnit i zdrojový kód) pozorovaný objekt, ale stačí pouze vytvořit novou třídu, která je specializací třídy Pozorovatel a její instance přidat do množiny pozorujících objektů prostřednictvím operace připoj. Tento návrhový vzor tvoří základ všech moderních grafických uživatelských rozhraní, kde změna stavu pozorovaných objektů vede k událostem (obvykle objekt předávaný jako parametr operace oznam), které jsou zpracovávány pozorujícími objekty pomocí operací typu aktualizuj. Využití tohoto vzoru je především v návrhu a implementaci informování jednotlivých komponent o změnách ve zbývajících částech systému. Existuje několik otázek, které musí být brány v úvahu při využití tohoto vzoru: Jestliže frekvence změn v pozorovaném objektu je příliš velká, mohlo by informování o každé této změně vést k přílišnému zatížení systému. V takovém případě je vhodné uvažovat o informování pozorovatelů až po určité sadě změn. V návrhovém vzoru není uvažována situace, kdy jeden pozorovatel je závislý na více objektech. V takovém případě musí být uvažováno o správné implementaci metody aktualizuj nebo o definici více takových metod. Použitím více modifikací této metody, lze zajistit i předávání různých druhů událostí. Měla by být také ošetřena situace, kdy Subject končí svoji činnost. Před vlastním uvolněním objektu Subject by mělo dojít k informování pozorovatelů. Musí být řízena vzájemná závislost jednotlivých pozorovaných objektů. Pozorovaný objekt neví nic o implementaci metody aktualizuj u pozorovatelů, a proto se ani nezajímá o dopad volání této metody na systém. Jestliže informace o změně a následná synchronizace dat, vyvolá nekontrolovaný kaskádový efekt celým systémem (pozorovatel působí i jako pozorovaný objekt), mohou se vyskytnout výkonnostní i logické problémy.

Problémem v implementaci může nastat, jestliže je vyvolána výjimka při informování pozorovatele (metoda aktualizuj). Obecně je předpoklad, že pozorovatel nevyvolává výjimky. Není zde nikdo, kdo by je odchytil a zpracoval, protože Subject nezná implementaci pozorovatele, a proto se nestará ani o případné výjimky. Řešením této situace může být implementace dvou fázového protokolu komunikace. V první fázi Subject deklaruje, že se chystá změnit data. Pozorovatelé mohou tuto změnu odmítnout nebo potvrdit. Jestliže je udělen souhlas od všech pozorovatelů, je změna provedena a probíhá klasická komunikace dle návrhového vzoru Známá použití - MVC ( Model/View/Controller ) - třída Model odpovídá subjektu, View pozorovateli - InterViews - Observer a Observable - Andrew Toolkit - "view a "data object" - Unidraw - rozdělení objektů grafických editorů na části View a Subject - MFC - architektura Document/View - java.util.observable implementace pro použití v JDK - Java Swing - používá vzor Observer pro event management - Boost.Signals, Qt, libsigc++, sigslot - signal/slot model Příklad použití Motivace: Uvažujme příklad z obr. 1. Objekt třídy Faktura implementuje operaci zaplacena takovým způsobem, že v okamžiku, kdy je tato zpráva obdržena objekt informuje manažera a prodejce zasláním zprávy odešli na instance třídy SMSBrána a stejně tak zasílá zprávu zobraz na instanci třídy MonitorPlateb. Nevýhodou je, že každá faktura musí vědět o těchto svých pozorovatelích, pamatovat si je a zaslat jim odpovídající zprávy. Zavedení dalšího nového pozorovatele by také znamenalo upravit zdrojový kód Faktury. Obr.1 Motivační příklad návrhového vzoru Pozorovatel Řešení: Problém stanovení n pozorovatelů na jediném pozorovaném lze řešit pomocí návrhového vzoru Pozorovatel tím způsobem, že zavedeme dvě nové třídy Předmět pozorování a Pozorovatel (obr. 2). První z nich zavádí operace přidání a odebrání instancí třídy Pozorovatel a operaci oznam, která v případě svého provedení odešle na všechny zaregistrované pozorovatele zprávu aktualizuj. Třída Pozorovatel tedy zavádí operaci aktualizuj, která je jednotlivými podtřídami předefinována tak, aby odpovídajícím způsobem dokázaly jednolivé instance správně reagovat instance třídy SMSBrána odešle textovou

zprávu, zatímco instance třídy MonitorPlateb zobrazí informaci o zaplacení faktury na obrazovku. Operace oznam je vyvolána podtřídou třídy Předmět, v našem prípadě se jedná o výše zmíněnou třídu Faktura. Obr. 2: Řešení s použitím návrhového vzoru Pozorovatel