APNVZ_7. Builder konstrukční návrhový vzor Broker distribuované systémy

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

Download "APNVZ_7. Builder konstrukční návrhový vzor Broker distribuované systémy"

Transkript

1 APNVZ_7 Builder konstrukční návrhový vzor Broker distribuované systémy 1

2 Konstrukční návrhové vzory Pro tvorbu nových objektů se obyčejně v Javě používají konstruktory. Konstruktory jsou užitečné pokud klient ví, od které třídy chce vytvořit instanci a má k dispozici všechny hodnoty parametrů vyžadované konstruktorem. Konstrukční návrhové vzory jsou zaměřeny na případy, kdy uvedené základní předpoklady neplatí. 2

3 Konstrukční návrhové vzory Syntaktická a sémantická pravidla, která řídí chování konstruktorů: využívání implicitního konstruktoru, jméno konstruktoru musí být identické se jménem třídy, konstruktor může vyvolávat jiné konstruktory pomocí pseudoproměnné this() a super(), za podmínky, že je toto volání prvním příkazem v konstruktoru, 3

4 Konstrukční návrhové vzory výsledkem volání konstruktoru je instance třídy, zatímco výsledkem volání metody je cokoli, k vyvolání konstruktoru využíváme metodu new() nebo metody balíčku java.lang.reflection. 4

5 Builder Kontext: Vytváření objektů (instancí). Problém: Často se stává, že v době vytváření nového objektu (instance) nemáte k dispozici všechny informace pro jeho vytvoření. Řešení: Je výhodné, dovolit konstrukci objektu postupně po krocích, tak jak jsou dostupné jednotlivé parametry pro nově vytvářený objekt. 5

6 Builder Záměrem vzoru builder je přesunout logiku konstrukce objektu (instance) mimo třídu, ze které se má objekt vytvořit. 6

7 Standardní builder Požadovaná data pro vytvářený objekt, jsou začleněna do např. textového řetězce. Z důvodu analýzy řetězce je tento třeba uložit v původním stavu a analyzovat - parse. Zpočátku tedy není dostatek dat pro vytvoření objektu nutná analýza. Řešení, které nabízí vzor builder spočívá v uložení těchto dat do nějakého meziobjektu až do doby, kdy je program připraven požádat objekt v paměti o konstrukci cílového objektu z extrahovaných dat. 7

8 Standardní builder Předpokládejme, že dostáváme informace formou textového řetězce o pořádání ohňostrojů. Tyto informace obsahují: datum, počet diváků, město, cenu vstupenky informaci, zda je či není určeno vhodné místo konání. 8

9 Standardní builder Např. (uváděné hodnoty jsou ve stejném pořadí, ale uvedeny anglicky): Date, November 15, Headcount, 330, City, Dublin, DollarsPerHead, 8.45, HasSite, False 9

10 Standardní builder Úlohou je rozčlenit řetězec na dílčí položky a z nich vytvořit objekt třídy Reservace. Standardní postup: vytvoření prázdného objektu třídy Reservace postupné doplňování datových atributů, jak je budeme schopni získat z analyzátoru textu. Problémem jsou ale neúplné a nepřesné informace. Sémanticky nesprávné informace např. málo diváků. Vytvořené objekty třídy Reservace by měly být vždy platné objekty. 10

11 Standardní builder Řešením je, že objekt třídy Rezervace nebude vznikat ve třídě Rezervace, ale ve třídě ReservationBuilder, do které jsou dočasně postupně uloženy všechny atributy postupně získané činností analyzátoru. Pro vlastní řešení je výhodné, aby třída ReservationBuilder byla abstraktní s abstraktní metodou build(), která je detailněji specifikovaná v podtřídách UnforgivingBuilder, ForgivingBuilder. 11

12 Standardní builder Požadavek, co chce zákazník - textově oddělené hodnoty čárkou. Požadavek na minimální hodnoty např. MINHEAD = 25, MINTOTAL = $ 498,95. Parser rozloží text pomocí metody tokenize(), builder výsledky ukládá do paměti a následně vytvoří objekt za předpokladu: má všechna požadovaná data, jsou splněny omezující podmínky (sémantika). 12

13 Diagram tříd aplikace builderu 13

14 /* * Copyright (c) 2001, Steven J. Metsker. * Please use this software as you wish with the sole * restriction that you may not claim that you wrote it. */ Poznámky import java.util.*; import com.oozinoz.utility.dollars; /** * Subclasses of this abstract class validate a reservation's * attributes before constructing a Reservation object. */ public abstract class ReservationBuilder { public static final int MINHEAD = 25; public static final Dollars MINTOTAL = new Dollars(495.95); protected Date date = null; protected String city; protected int headcount; protected Dollars dollarsperhead = new Dollars(0); protected boolean hassite;

15 /** * Push a date into the future by rolling forward the year. indate a date to push forward a date like the one provided but with a year * that makes the date in the future */ public static Date futurize(date indate) { Calendar now = Calendar.getInstance(); Calendar then = Calendar.getInstance(); then.settime(indate); Poznámky while (then.before(now)) then.add(calendar.year, 1); return then.gettime(); /** * Construct a valid reservation from attributes that have * been presumably been set for this builder. Subclasses may * throw an exception if a valid reservation cannot * be formed. a valid reservation */ public abstract Reservation build() throws BuilderException;

16 public String getcity() { return city; Poznámky public void setcity(string value) { city = value; /** * The date for a reservation. */ public Date getdate() { return date; public void setdate(date value) { date = value; /** * The dollars/head that a customer will pay for a display. */ public Dollars getdollarsperhead() { return dollarsperhead; public void setdollarsperhead(dollars value) { dollarsperhead = value;

17 /** * Indicates whether a customer has a site in mind for a * display. */ public boolean hassite() { return hassite; Poznámky public void sethassite(boolean value) { hassite = value; /** * The number of people that a customer will guarantee for * a display. */ public int getheadcount() { return headcount; public void setheadcount(int value) { headcount = value;

18 /** * Copyright (c) 2001, Steven J. Metsker. * Please use this software as you wish with the sole * restriction that you may not claim that you wrote it. */ Poznámky import java.text.dateformat; import java.text.parseexception; import java.util.calendar; import java.util.date; import com.oozinoz.utility.dollars; public class ReservationParser { private ReservationBuilder builder; /** * Create a parser that will pass its results to the specified * builder. builder the builder to pass parameters to */ public ReservationParser(ReservationBuilder builder) { this.builder = builder; /** * Parse a reservation request, passing its information to the * builder. s the request */ public void parse(string s) throws ParseException { String[] tokens = s.split(",\\s*"); s*");

19 for (int i = 0; i < tokens.length; i += 2) { String type = tokens[i]; String val = tokens[i + 1]; if ("date".comparetoignorecase(type) == 0) { Calendar now = Calendar.getInstance(); DateFormat formatter = DateFormat.getDateInstance(); Date d = formatter.parse(val + ", " + now.get(calendar.year)); builder.setdate(reservationbuilder.futurize(d)); else if ("headcount".comparetoignorecase(type) == 0) builder.setheadcount(integer.parseint(val)); else if ("City".compareToIgnoreCase(type) == 0) builder.setcity(val.trim()); else if ("DollarsPerHead".compareToIgnoreCase(type) == 0) builder.setdollarsperhead(new Dollars(Double.parseDouble(val))); else if ("HasSite".compareToIgnoreCase(type) == 0) builder.sethassite(val.equalsignorecase("true")); Poznámky

20 /* * Copyright (c) 2001, Steven J. Metsker. */ import java.io.serializable; import java.util.date; Poznámky Třída Reservation import com.oozinoz.utility.dollars; public class Reservation implements Serializable { private Date date; private int headcount; private String city; private Dollars dollarsperhead; private boolean hassite; Reservation(Date date, int headcount, String city, Dollars dollarsperhead, boolean hassite) { this.date = date; this.headcount = headcount; this.city = city; this.dollarsperhead = dollarsperhead; this.hassite = hassite;

21 public String tostring() { StringBuffer sb = new StringBuffer(); sb.append("date: "); sb.append(date.tostring()); sb.append(", Headcount: "); sb.append(headcount); sb.append(", City: "); sb.append(city); sb.append(", Dollars/Head: "); sb.append(dollarsperhead); sb.append(", Has Site: "); sb.append(hassite); return sb.tostring(); Poznámky Třída Reservation public Date getdate() { return date; public int getheadcount() { return headcount; public String getcity() { return city; public Dollars getdollarsperhead() { return dollarsperhead; public boolean hassite() { return hassite;

22 /* * Copyright (c) 2001, Steven J. Metsker. */ /** * Signals a problem while building a reservation from its * attributes. */ public class BuilderException extends Exception { /** * Constructs a BuilderException with no detail * message. */ public BuilderException() { Poznámky BuilderException /** * Constructs a BuilderException with the * specified detail message. s detail message */ public BuilderException(String s) { super(s);

23 /** * Copyright (c) 2001, Steven J. Metsker. * * Please use this software as you wish with the sole * restriction that you may not claim that you wrote it. */ Poznámky UnforgivingBuilder public class UnforgivingBuilder extends ReservationBuilder { /** * Create a valid reservation. Throw an exception if any required * attribute of a reservation is missing. BuilderException */ public Reservation build() throws BuilderException { if (date == null) throw new BuilderException("Valid date not found"); if (city == null) throw new BuilderException("Valid city not found"); if (headcount < MINHEAD) throw new BuilderException("Minimum headcount is " + MINHEAD); if (dollarsperhead.times(headcount).islessthan(mintotal)) throw new BuilderException("Minimum total cost is " + MINTOTAL); return new Reservation(date, headcount, city, dollarsperhead, hassite);

24 /** * Copyright (c) 2001, Steven J. Metsker. * Please use this software as you wish with the sole * restriction that you may not claim that you wrote it. */ import com.oozinoz.utility.dollars; /** * This class builds a valid reservation from its attributes, * and fills in values where it can if the attributes are not * set. This builder must receive a city and a date, but it * will set reasonable values for the other reservation values. */ public class ForgivingBuilder extends ReservationBuilder { public Reservation build() throws BuilderException { boolean noheadcount = (headcount == 0); boolean nodollarsperhead = (dollarsperhead.iszero()); Poznámky ForgivingBuilder if (noheadcount && nodollarsperhead) { headcount = MINHEAD; dollarsperhead = sufficientdollars(headcount); else if (noheadcount) { headcount = (int) Math.ceil(MINTOTAL.dividedBy(dollarsPerHead)); headcount = Math.max(headcount, MINHEAD); else if (nodollarsperhead) { dollarsperhead = sufficientdollars(headcount); check(); return new Reservation(date, headcount, city, dollarsperhead, hassite);

25 private Dollars sufficientdollars(int headcount) { Dollars dollars = MINTOTAL.dividedBy(headcount); if (dollars.times(headcount).islessthan(mintotal)) dollars = dollars.plus(dollars.cent); return dollars; Poznámky protected void check() throws BuilderException { if (date == null) throw new BuilderException("Valid date not found"); if (city == null) throw new BuilderException("Valid city not found"); if (headcount < MINHEAD) throw new BuilderException("Minimum headcount is " + MINHEAD); if (dollarsperhead.times(headcount).islessthan(mintotal)) throw new BuilderException("Minimum total cost is " + MINTOTAL);

26 /* * Copyright (c) 2001, Steven J. Metsker. */ import com.oozinoz.reservation.*; Poznámky ShowUnforgiwing public class ShowUnforgiving { public static void main(string[] args) { /* Remove "DollarsPerHead, 9.95" to see exception message when /* that field is omitted. */ String sample = "Date, November 5, Headcount, 250, " + "City, Springfield, DollarsPerHead, 9.95, HasSite, False"; ReservationBuilder builder = new UnforgivingBuilder(); try { new ReservationParser(builder).parse(sample); Reservation res = builder.build(); System.out.println("Unforgiving builder: " + res); catch (Exception e) { System.out.println(e.getMessage()); Výsledek: Unparseable date: "November 5, 2009"

27 /* * Copyright (c) 2001, Steven J. Metsker. /* import com.oozinoz.reservation.*; Poznámky ShowForgiving public class ShowForgiving { public static void main(string[] args) { /* Remove "DollarsPerHead, 9.95" to see how that field is /* calculated if omitted. String sample = "Date, November 5, Headcount, 250, " + "City, Springfield, DollarsPerHead, 9.95, HasSite, False"; ReservationBuilder builder = new ForgivingBuilder(); try { new ReservationParser(builder).parse(sample); Reservation res = builder.build(); System.out.println("Forgiving builder: " + res); catch (Exception e) { System.out.println(e.getMessage()); Výsledek: Unparseable date: "November 5, 2009"

28 Shrnutí - Builder Vzor Builder odděluje konstrukci složitých objektů od jejich prezentace. To má okamžitý efekt v tom, že složitá výsledná třída je jednodušší. Třída builderu se zaměřuje na správnou konstrukci objektu a ponechává na výsledné (cílové) třídě zaměření se na vlastní operace validované instance. To má význam že kontrola platnosti dat se provádí před vlastním vytvořením instance. 28

29 Distribuované systémy Dva hlavní trendy ve vývoji technologií hardware: Počítačové systémy s multiprocesorovými operačními systémy Počítačová síť spojující stovky heterogenních počítačů Výhody distribuovaných systémů: Ekonomické. Počítačová síť s různými PC a pracovními stanicemi poskytuje lepší poměr cena/výkon než sálové (mainframe) počítače. Výkonnost a rozšiřitelnost. Počítačová síť je počítač, distribuované aplikace jsou schopné využívat zdroje dostupné v počítačové síti. 29

30 Distribuované systémy Distribuovaná podstata řešených aplikací. Sledují model Klient/Server. Spolehlivost. Multiprocesorový systém může havarovat bez účinku na zbytek systému. (Za předpokladu zálohování důležitých serverů). Nevýhody: Distribuované systémy vyžadují radikálně odlišný software než centralizované systémy. To je důvod proč se vyvinuly tři různé platformy: 30

31 Distribuované systémy CORBA obecná, trpící nedostatkem kompatibility.net orientovaná pouze na systému platformy Windows Java EE orientovaná pouze na jeden jazyk Javu. Cílem vzoru Broker je zevšeobecnění všech výše uvedených konkrétních řešení. Všechny tři platformy používají tzv. ORB (Object Requert Broker), který se liší. 31

32 Distribuované systémy Distribuovaný systém bude mít intuitivně komponenty, které jsou distribuované na různých počítačích. Na počítač, který hostí některé komponenty distribuovaného systému se odkazujeme jako na hostitelský (host). Koncept hostitelského počítače pak bude označovat všechny operační komponenty počítače, včetně hardware, síťového operačního systému a software. 32

33 Distribuované systémy Distribuovaný systém má více než jednu komponentu na více než jednom hostitelském počítači. Tyto komponenty se vzájemně ovlivňují, jsou ve vzájemné interakci. Komponenty potřebují poskytovat vzájemný přístup ke službám a potřebují být schopny si požádat o služby navzájem. 33

34 Distribuované systémy Teoreticky by komponenty mohly být propojeny navzájem pomocí primitiv síťového operačního systému. Prakticky by to bylo příliš složité pro mnoho aplikací. Middleware mezivrstva, která pomáhá s heterogenitou a distribucí. 34

35 Hostitelský počítač a distribuovaný systém Komponenta 1... Komponenta N Síťový operační systém Hardware Hostitelský počítač 35

36 Middleware v distribuovaném systému Komponenta 1... Komponenta N Middleware Síťový operační systém Hardware Hostitelský počítač 36

37 Úkoly middleware Middleware přemosťuje mezeru mezi síťovým operačním systémem a komponentami. Poskytuje navrhovateli vyšší úrovně abstrakce. Implementuje vyšší úrovně abstrakce založené na základních operacích (primitives), které poskytuje síťový operační systém. Zapouzdřuje složitost před návrhářem. 37

38 Typy middleware 1. Transakčně orientované middleware Toto middleware podporuje transakce přes různé distribuované databázové systémy. Využívá se v architekturách, kde komponenty jsou databázové aplikace. Používá dvou fázový commit protokol k implementaci distribuovaných transakcí. Open Group adoptovala standard pro Open Distributed Transaction Processing (DTP). 38

39 2. Middleware orientované na zprávy Message oriented middleware Podporuje komunikaci mezi distribuovanými systémy prostřednictvím výměny zpráv. Komponenty klient používají tyto systémy k posílání zpráv, aby požádaly o vykonání služby na komponentě serveru. Obsah zprávy obsahuje i parametry služby. Jiná zpráva je zaslaná klientovi od serveru, aby dodala výsledky služby. 39

40 2. Middleware orientované na zprávy Message oriented middleware Síla middleware orientovaného na zasílání zpráv je v podpoře asynchronního doručování zpráv, což je velmi přirozené. 40

41 3. Vzdálené volání procedur Remote Procedure Calls Vyvinuto počátkem 80. let firmou Sun Microsystem jako část platformy Open Network Computing. RPCs jsou operace, které mohou být vyvolány vzdáleně nad různými platformami hardware a operačních systémů. Systémy remote procedure call jsou základem objektově orientovaného middleware. 41

42 4. Objektově orientované middleware Toto middleware se vyvinulo více méně z myšlenky RPC (vzdálené volání procedur). Prvním z těchto systémů byl OMG produkt Common Object Request Broker Architecture CORBA. Microsoft přidal distribuované schopnosti svému Component Object Model (COM).NET Sun poskytl mechanismus pro Remote Method Invocation (RMI) v Javě. 42

43 Návrhový vzor Broker zprostředkovatel, jednatel Návrhový vzor Broker se používá ke strukturování distribuovaných softwarových systémů s oddělenými komponentami, které jsou spolu v interakci prostřednictvím vzdáleného volání služeb. Broker (zprostředkovatel) je zodpovědný za koordinaci komunikace jako např. zasílání požadavků, doručování výsledků a výjimek. 43

44 Návrhový vzor Broker Kontext: distribuované prostředí s možností heterogenních systémů s nezávisle spolupracujícími komponentami Problém: Vytvoření komplexního softwarového systému jako množiny oddělených, mezi sebou operujících komponent. Výsledkem je velká pružnost, udržovatelnost a zaměnitelnost. 44

45 Návrhový vzor Broker Rozdělením funkcionality do nezávislých komponent se systém stane potencionálně distribuovatelným a škálovatelným. Problémy návrhu komunikace komponent, závislost a omezení: závislost systému na mechanismu komunikace, klienti musí znát fyzické rozmístění serverů, omezení řešení na jeden programovací jazyk. Jsou třeba služby pro přidání, odstranění, aktivaci a lokalizaci komponent, které nejsou závislé na detailech specifikace systému. 45

46 Návrhový vzor Broker Z pohledu vývojáře by neměl být zásadní rozdíl mezi vývojem software pro centralizovaný systém nebo distribuovaný systém. Objektová aplikace by měla vidět pouze rozhraní poskytované objektem a neměla by vědět nic o implementačních detailech objektu eventuálně o jeho fyzickém umístění. 46

47 Návrhový vzor Broker Architektura vzor Broker by měla vybalancovat následující síly: Komponenty by měly být schopny zpřístupnit služby poskytované jinými komponentami prostřednictvím vzdálených volání služeb, které jsou transparentní k umístění (lokalizaci). Je třeba zabezpečit změnu, přidání resp. odstranění komponenty za běhu. Navržená architektura (vzor) by měl ukrýt systémové a implementační detaily od uživatelů komponent a služeb. 47

48 Řešení: Návrhový vzor Broker Zavést komponentu Broker, která dosáhne lepšího oddělení komponent klientů a serverů. Servery se registrují u brokerů a umožňují tak, aby jejich služby byly dostupné pro klienty prostřednictvím rozhraní metod. Klienti si zpřístupní funkcionalitu serverů zasláním požadavků prostřednictvím brokeru. 48

49 Návrhový vzor Broker Úloha Brokeru zahrnuje lokalizaci vhodného serveru, zasláním požadavků na server a přesun výsledků a výjimek ze serveru zpět klientovi. Využitím vzoru Broker, může aplikace jednoduše zpřístupnit distribuované služby zasláním volání zprávy vhodnému objektu, místo zaměření se na nízko úrovňovou komunikaci procesů. 49

50 Návrhový vzor Broker Vzor Broker (zprostředkovatel, dohodce) snižuje náročnost distribuované aplikace tím, že je pro vývojáře transparentnější. Využívá k tomu integrace dvou technologií: distribuované technologie a objektové technologie, v objektovém modelu jsou distribuované služby zapouzdřeny uvnitř objektů. 50

51 Struktura Brokeru Client-side Proxy -transfer message Broker -transfer message Server-side Proxy +packdata() +sendrequest() +return() +maineventloop() +registerservice() +acknowledgement() +findserver() +fincclient() +forwardrequest() +forwardresponse() +packdata() +callservice() +sendresponse() -calls -calls -calls Client +callserver() +starttask() +usebrokerapi() -users API Brodge +packdata() +forwardmessage() +transmitmessage() -users API Server +initialize() +entermainloop() +runservice() +usebrokerapi() 51

52 Komponenta Server Komponenta server implementuje objekty, které vystavují svoji funkčnost prostřednictvím rozhraní, které se skládá z operací a atributů. Tato rozhraní je dostupné buď prostřednictvím interface-definition-language (IDL), nebo prostřednictvím binárního standardu. Rozhraní typicky seskupují sémanticky blízké funkcionality. Existují dva druhy serverů: servery poskytující běžné služby mnoha aplikačním doménám; servery implementující specifickou funkcionalitu pro jednu aplikaci, doménu, nebo úlohu. 52

53 Komponenta Client Komponenty client jsou aplikace, které přistupují ke službám alespoň jednoho serveru. K vyvolání vzdálené služby klienti zašlou požadavek brokeru. Po provedení operace obdrží od brokeru výsledky, nebo výjimky. 53

54 Komponenta Client Interakce mezi komponentami klientů a serverů je založena na dynamickém modelu, který znamená, že servery mohou také působit jako klienti. Tento dynamický interakční model se liší od tradičního označení klient/server výpočtů v tom, že role klientů a serverů nejsou staticky definovány. 54

55 Komponenta Client Z pohledu implementace můžeme považovat klienty za aplikace a servery za knihovny. Všimněte si, že klienti nepotřebují znát umístění serverů, ke kterým přistupují. To je důležitá vlastnost, protože dovoluje přidání nových služeb a přesun existujících služeb na jinou adresu dokonce za běhu systému. 55

56 Komponenta Broker Komponenta broker je zprostředkovatel zodpovědný za rozeslání požadavků od klientů k serverům, stejně jako rozeslání odpovědí a výjimek zpět klientům. Komponenta broker musí mít nějaké prostředky pro adresaci příjemce požadavku založeném na jednotném systémovém identifikátoru. Broker poskytuje API klientům a serverům, jenž zahrnuje operace pro registraci serverů a pro vyvolání metod serveru. 56

57 Komponenta Broker Když přijde požadavek na server, který je udržován místní komponentou broker, tak broker předá požadavek přímo serveru. Není-li právě server aktivní, broker ho aktivuje. Všechny odpovědi a výjimky z prováděné služby jsou zaslány komponentou broker zpět klientovi, který vyslal požadavek. 57

58 Komponenta Broker Je-li daný server hostem jiné komponenty broker, místní broker nalezne cestu (route) ke vzdálenému brokeru a zašle požadavek používajíc tuto cestu. Je zde potřeba, aby brokery navzájem komunikovaly. V závislosti na požadavcích celého systému, mohou být do komponenty broker integrovány dodatečné operace jako name service nebo marshaling support. 58

59 Proxy na straně klienta Client-side proxies reprezentuje vrstvu mezi komponentami client a broker. Tato vrstva poskytuje transparentnost v tom, že vzdálený objekt se klientovi jeví jako lokální. Konkrétně proxies umožňují ukrývání detailů implementace od klienta jako např.: mezi procesorový komunikační mechanismus používaný pro přenos zpráv mezi klienty a brokery; tvorba a rušení paměťových bloků; řazení (marshaling) parametrů a výsledků. 59

60 Proxy na straně klienta V mnoha případech client-side-proxies převádějí objektový model, specifikovaný jako část brokeru, do objektového modelu programovacího jazyka použitého k implementaci klienta. 60

61 Proxy na straně serveru Server-side proxies je analogické k client-side proxies. Rozdílnost je v tom, že server-side proxies jsou zodpovědné za příjem požadavků, rozbalování příchozích zpráv a volání odpovídajících služeb. Jsou také použity pro řazení výsledků a výjimek před odesláním klientovi. 61

62 Komponenta Bridge Bridges jsou volitelné komponenty použité k ukrývání implementace detailů, když spolu komunikují dvě komponenty broker. Nejpoužívanější scénář použití ilustruje případ, kdy se komponenta server registruje u komponenty místní (lokální) broker: komponenta broker je odstartovaná v inicializační fázi systému. Vstoupí do smyčky ve které očekává příchod zpráv. uživatel, nebo nějaká jiná entita odstartuje komponentu server aplikace. Po inicializaci se server zaregistruje u komponenty broker. 62

63 Komponenta Bridge když komponenta broker dostane požadavek registrace od serveru, vybere si z ní všechny potřebné informace a ty si uloží. Tyto informace jsou využity pro nalezení a aktivaci příslušného serveru. Zpět serveru je poslána potvrzovací zpráva. Po obdržení potvrzovací zprávy od komponenty broker, server vstoupí do čekací smyčky na požadavky od klientů. 63

64 Dynamické chování vzoru Client Client-side Proxy Broker Server-side Proxy Server callserver sendrequest packdata forwardrequest findserver callservice unpackdata runservice forwardresponse packdata return findclient result unpackdata 64

65 Implementace 1. Definovat objektový model, nebo použít stávající model. 2. Definovat, který druh komponentní interoperability bude systém nabízet. Interoperabilita může být buď specifikovaná binárním standardem, nebo interface definition language (IDL). 3. Specifikovat API, které komponenta brokeru poskytuje pro spolupráci s klienty a servery. 4. Použít objekty proxy k ukrytí implementačních detailů od klientů a serverů. 5. Navrhnout komponentu broker. 6. Vytvořit překladač IDL. 65

66 Broker - varianty Přímo komunikující Broker System Po počáteční inicializaci klient komunikuje se serverem přímo. Systém Broker předávající zprávy Brokery poskytující rozhraní RPC jsou typickými představiteli. Servery užívají typ zprávy ke stanovení co musí dělat, místo poskytování služeb. Trader system. Standardně Broker zasílá zprávy pouze jednomu serveru. Tento systém je orientovaný na služby. Broker musí vědět, který server(y) poskytuje jaké služby. 66

67 Broker - varianty Adapter Broker System. Broker funguje jako dodatečná vrstva na serveru. Tato vrstva adapteru je zodpovědná za registraci serverů a interakci se servery. Doplněním více než jednoho adapteru, je možné podporovat různé strategie granularity serveru a jeho lokace. 67

68 Broker - varianty Callback Broker System. Reaktivní model je řízený událostmi, nedělá rozdíl mezi klienty a servery. Kdykoli přijde událost, broker vyvolá metodu callback komponenty, která je registrovaná, že reaguje na událost. Může vyvolat novou událost 68

69 Použití V objektových technologiích pro distribuované zpracování. Tento vzor je použit ke specifikaci Common Object Request Broker Architecture (Corba). Pro podporu interoperability je definován interface definition language (IDL). Java EE distribuovaná technologie firmy (Sun) Oracle..NET distribuovaná technologie firmy Microsoft. 69

70 Výhody Transparentnost umístění je umožněna tím, že komponenta broker je zodpovědná za vyhledání serveru podle jedinečného identifikátoru. Zaměnitelnost a rozšiřitelnost komponent. Portabilita systému s komponentou broker. Interoperabilita mezi různými systémy s komponentou broker. Znovupoužitelnost. 70

71 Slabá místa Omezená výkonnost. Nízká odolnost vůči chybám. Testování a ladění. 71

Java a XML. 10/26/09 1/7 Java a XML

Java a XML. 10/26/09 1/7 Java a XML Java a XML Java i XML jsou přenositelné V javě existuje podpora pro práci s XML, nejčastější akce prováděné při zpracování XML: načítání XML elementů generování nových elementů nebo úprava starého zápis

Více

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

Více

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML Obsah přednášky Webové služby a XML Miroslav Beneš Co jsou to webové služby Architektura webových služeb SOAP SOAP a Java SOAP a PHP SOAP a C# Webové služby a XML 2 Co jsou to webové služby rozhraní k

Více

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

Bridge. Známý jako. Účel. Použitelnost. Handle/Body Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době

Více

Abstraktní datové typy: zásobník

Abstraktní datové typy: zásobník Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní

Více

Generické programování

Generické programování Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =

Více

Čipové karty Lekařská informatika

Čipové karty Lekařská informatika Čipové karty Lekařská informatika Následující kód je jednoduchou aplikací pro čipové karty, která po překladu vytváří prostor na kartě, nad kterým jsou prováděny jednotlivé operace a do kterého jsou ukládány

Více

Vytváření a použití knihoven tříd

Vytváření a použití knihoven tříd Vytváření a použití knihoven tříd doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Prostory jmen motivace spolupráce

Více

Teoretické minimum z PJV

Teoretické minimum z PJV Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov

Více

7 Jazyk UML (Unified Modeling Language)

7 Jazyk UML (Unified Modeling Language) 7 Jazyk UML (Unified Modeling Language) 7.1 Základní charakteristika jazyka Motivace - vznik řady OO metod a metodologií (konec 80. let a první polovina 90.let) podobné notace vyjadřující totéž, komplikující

Více

Principy UML. Clear View Training 2005 v2.2 1

Principy UML. Clear View Training 2005 v2.2 1 Principy UML Clear View Training 2005 v2.2 1 1.2 Co je touml? Unified Modelling Language (UML) je univerzálníjazyk pro vizuální modelování systémů Podporuje všechny životní cykly Mohou jej implementovat

Více

11.5.2012. Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

11.5.2012. Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9 Obsah přednášky 9 Základy programování (IZAPR, IZKPR) Přednáška 9 Základy dědičnosti, přístupová práva Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií

Více

14.4.1. Typický prvek kolekce pro české řazení

14.4.1. Typický prvek kolekce pro české řazení 14.4. Co všechno by měl mít typický prvek kolekce 177 Poznámka: Třídy BigInteger, BigDecimal a Date budou vysvětleny v částech [15./183, [16./185 a [18.1./204. 14.4.1. Typický prvek kolekce pro české řazení

Více

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

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE

Více

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

Semináˇr Java X J2EE Semináˇr Java X p.1/23 Seminář Java X J2EE Seminář Java X p.1/23 J2EE Složitost obchodních aplikací robusní, distribuované, spolehlivé aplikace s transakcemi na straně serveru, klientské aplikace co nejjednodušší Snaha : Návrh,

Více

1. Dědičnost a polymorfismus

1. Dědičnost a polymorfismus 1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář

Více

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5); Programovací jazyk PHP doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Třídy a objekty Výjimky Webové aplikace

Více

1. Téma 12 - Textové soubory a výjimky

1. Téma 12 - Textové soubory a výjimky 1. Téma 12 - Textové soubory a výjimky Cíl látky Procvičit práci se soubory s využitím výjimek. 1.1. Úvod Program, aby byl programem, my mít nějaké výstupy a vstupy. Velmi častým případem je to, že se

Více

typová konverze typová inference

typová konverze typová inference Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie

Více

Principy objektově orientovaného programování

Principy objektově orientovaného programování Principy objektově orientovaného programování Třídy a objekty doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz C E T

Více

Úvod do Web Services

Úvod do Web Services Úvod do Web Services Základy webových služeb a jejich implementace na platformě OS/2 Jarda Kačer jarda@kacer.biz Český Warpstock 2008 Brno, 20.-21.9.2008 Co je to webová služba? Část business logiky přístupná

Více

Design systému. Komponentová versus procesní architektura

Design systému. Komponentová versus procesní architektura Design systému Komponentová versus procesní architektura Architektura : třídy statické aspekty propojení logický pohled struktura popisu systému Architektura procesů: objekty dynamické aspekty koordinace

Více

ilé aspekty distribuovaných objektových systémů

ilé aspekty distribuovaných objektových systémů Pokročil ilé aspekty distribuovaných objektových systémů Petr Grygárek rek 1 Komunikační protokoly 2 General Inter-ORB Interoperability Protocol (GIOP) Původně v CORBA Postupně přejat do RMI Implementace

Více

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/ UJO Framework revoluční architektura beans verze 0.80 http://ujoframework.org/ Pavel Pone(c), září 2008 Historie rok 2004 upravené objekty z frameworku Cayenne nevýhodou byla špatná typová kontrola rok

Více

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB)

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB) Obsah přednášky Technologie Miroslav Beneš Popis technologie EJB J2EE aplikace Typy komponent Entity Beans Session Beans Message-Driven Beans Java Messaging Service (JMS) Závěr 2 (EJB) EJB kontejner Specifikace

Více

Datové struktury. alg12 1

Datové struktury. alg12 1 Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou

Více

Programování v Javě I. Leden 2008

Programování v Javě I. Leden 2008 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

Jini (pronounced GEE-nee) Cvičení 8 - DS 2006

Jini (pronounced GEE-nee) Cvičení 8 - DS 2006 Jini (pronounced GEE-nee) Cvičení 8 - DS 2006 Úvod JINI (pronounced GEE-nee; loosely derived from the Arabic for magician) Systém pro vyhledávání (lookup) a objevování (discovery) objektů v síti Zcela

Více

1. Programování proti rozhraní

1. Programování proti rozhraní 1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní

Více

Výčtový typ strana 67

Výčtový typ strana 67 Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce

Více

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu A Tutorial Advances in query languages for similarity-based databases George J. Klir Petr Krajča State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu Palacky University,

Více

Databázové systémy. Doc.Ing.Miloš Koch,CSc. koch@fbm.vutbr.cz

Databázové systémy. Doc.Ing.Miloš Koch,CSc. koch@fbm.vutbr.cz Databázové systémy Doc.Ing.Miloš Koch,CSc. koch@fbm.vutbr.cz Vývoj databázových systémů Ukládání dat Aktualizace dat Vyhledávání dat Třídění dat Výpočty a agregace 60.-70. léta Program Komunikace Výpočty

Více

Remote Method Invocation RMI

Remote Method Invocation RMI Remote Method Invocation RMI Java TM Remote Method Invocation (RMI) umožňuje objektu na jedné Java Virtual Mashine(JVM) jednoduše spustit metodu jiného objektu na vzdálené JVM. Při volání vzdálené metody

Více

20. Projekt Domácí mediotéka

20. Projekt Domácí mediotéka Projekt Domácí mediotéka strana 211 20. Projekt Domácí mediotéka 20.1. Základní popis, zadání úkolu V projektu Domácí mediotéka (Dome) se jednoduchým způsobem evidují CD a videa. Projekt je velmi jednoduchý

Více

Programování v Javě I. Únor 2009

Programování v Javě I. Únor 2009 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

Seminář Java II p.1/43

Seminář Java II p.1/43 Seminář Java II Seminář Java II p.1/43 Rekapitulace Java je case sensitive Zdrojový kód (soubor.java) obsahuje jednu veřejnou třídu Třídy jsou organizovány do balíků Hierarchie balíků odpovídá hierarchii

Více

SW_12. Vzor Příkaz - Command Vzor Návštěvník - Visitor

SW_12. Vzor Příkaz - Command Vzor Návštěvník - Visitor SW_12 Vzor Příkaz - Command Vzor Návštěvník - Visitor 1 Problém: Vzor Příkaz - Command Standardní cesta pro vykonání metody je její vyvolání. V některých situacích nejsme schopni řídit načasování (timing)

Více

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39 Programování v C# Hodnotové datové typy, řídící struktury Petr Vaněček 1 / 39 Obsah přednášky Referenční datové typy datové položky metody přístupové metody accessory, indexery Rozhraní Pole 2 / 39 Třídy

Více

KIV/PIA 2013 Jan Tichava

KIV/PIA 2013 Jan Tichava KIV/PIA 2013 Jan Tichava Java EE JSF, PrimeFaces Spring JPA, EclipseLink Java Platform, Enterprise Edition Persistence Zobrazovací vrstva Interakce aplikací Deployment Java Persistence API Enterprise

Více

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze NOVINKY V JEE EJB 3.1 Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze PROGRAM Seznámení s Java Enterprise Edition (JEE) Enterprise Java Beans (EJB) Novinky v EJB 3.1 2 JAVA EDITIONS Java

Více

Objektově orientované programování

Objektově orientované programování Objektově orientované programování Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 7 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1 Přednáška 7: Objektově

Více

7.5 Diagram tříd pokročilé techniky

7.5 Diagram tříd pokročilé techniky 7.5 Diagram tříd pokročilé techniky Stereotypy - jeden ze základních prostředků rozšiřitelnosti UML - pro modelovací konstrukce neexistující v UML, ale podobné předdefinované v UML definované uživatelem

Více

Přehled probírané látky

Přehled probírané látky OOPR_04 1 Přehled probírané látky asociace (relace) mezi třídami popis množiny spojení mezi objekty skládání objektů - upřesněný typ asociace, vazba mezi objekty kompozice objektů (velmi pevná vazba mezi

Více

Kód, který se nebude často měnit

Kód, který se nebude často měnit Factory Method Úvod - problém Mějme obchod s auty: public class OrderCars { public Car ordercar(string model) { Car car; Při přidání nového modelu je nutné upravit if(model.equals("mark IV")) car = new

Více

SOUBORY, VSTUPY A VÝSTUPY POKRAČOVÁNÍ

SOUBORY, VSTUPY A VÝSTUPY POKRAČOVÁNÍ SOUBORY, VSTUPY A VÝSTUPY POKRAČOVÁNÍ Vstupy a výstupy pokračování Kódování textů Texty (řetězce nebo znaky) v jazyce C# jsou v paměti uloženy v kódování označovaném běžně Unicode (kódová stránka 1200).

Více

Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal 3.12.2010

Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal 3.12.2010 Student s Life Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal 3.12.2010 Model Specification Page: 2 Obsah Model architektury... 3 Návrhový model... 3 Bussines

Více

7.3 Diagramy tříd - základy

7.3 Diagramy tříd - základy 7.3 Diagramy tříd - základy - popisuje typy objektů a statické vztahy mezi nimi Objednávka -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() {if Objednávka.zákazník.charakteristika = 'nejistý'

Více

Vzdálený přístup k počítačům

Vzdálený přístup k počítačům Vzdálený přístup k počítačům jedna z nejstarších služeb vzdálený přístup k sálovým počítačům nejprve vzdálené terminály později terminálová emulace jako jedna ze služeb počítačové sítě současnost využíváno

Více

UML. Unified Modeling Language. Součásti UML

UML. Unified Modeling Language. Součásti UML UML Unified Modeling Language 1995 počátek 1997 verze 1.0 leden dnes verze 2.0 (vývoj stále nedokončen) Standardní notace OMG podpora velkých firem (Microsoft, IBM, Oracle, HP ) popisuje struktury popisuje

Více

7.3 Diagramy tříd - základy

7.3 Diagramy tříd - základy 7.3 Diagramy tříd - základy - popisuje typy objektů a statické vztahy mezi nimi Objednávka -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() {if Objednávka.zákazník.charakteristika = 'nejistý'

Více

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); TŘÍDY POKRAČOVÁNÍ Události pokračování public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); class Bod private int x; private int y; public event ZmenaSouradnicEventHandler ZmenaSouradnic;

Více

Projekty pro výuku programování v jazyce Java

Projekty pro výuku programování v jazyce Java JIHOČESKÁ UNIVERZITA V ČESKÝCH BUDĚJOVICÍCH Pedagogická fakulta Katedra informatiky Akademický rok: 2006/2007 TEZE BAKALÁŘSKÉ PRÁCE Projekty pro výuku programování v jazyce Java Jméno: František Přinosil

Více

Objektově orientované programování v PHP 5. Martin Klíma

Objektově orientované programování v PHP 5. Martin Klíma Objektově orientované programování v PHP 5 Martin Klíma OOP & PHP 5 V PHP 5 konečně značné rozšíření OOP Blíží se to moderním programovacím jazykům jako Java nebo C# Výhody OOP Zapouzdření (nové modifikátory

Více

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní Základy jazyka C# doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah přednášky Architektura.NET Historie Vlastnosti

Více

Objektově orientované programování 1 XOBO1. Autor: Doc. Ing. František Huňka, CSc.

Objektově orientované programování 1 XOBO1. Autor: Doc. Ing. František Huňka, CSc. Objektově orientované programování 1 XOBO1 Autor: Doc. Ing. František Huňka, CSc. 1 Seznam kapitol 1 Základní pojmy...3 1.1 Úvod do tříd a objektů...3 1.2 Vývojové prostředí...7 1.3 Jednotný modelovací

Více

(Enterprise) JavaBeans. Lekce 7

(Enterprise) JavaBeans. Lekce 7 (Enterprise) JavaBeans Lekce 7 JavaBeans vs. Enterprise JavaBeans (EJB) JavaBeans technologie: jedná se o tzv. komponentní architekturu určenou pro JSE platformu určená pro tvorbu JSE GUI programů pomocí

Více

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Lekce 1 Jazyk Java Tento projekt je spolufinancován Evropským sociálním fondem

Více

Návrhové vzory Design Patterns

Návrhové vzory Design Patterns Návrhové vzory Design Patterns doc. Ing. František Huňka, CSc. Ostravská univerzita PřF 1 Definice vzoru Každý vzor popisuje problém, který nastává opakovaně v našem prostředí, a potom popisuje podstatu

Více

1 2 3 4 5 6 součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

1 2 3 4 5 6 součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů: Úloha č.: max. bodů: skut. bodů: 1 2 3 4 5 6 součet cvičení celkem 20 12 20 20 14 14 100 známka UPOZORNĚNÍ : a) Písemná zkouška obsahuje 6 úloh, jejichž řešení musí být vepsáno do připraveného formuláře.

Více

návrhový vzor Singleton.

návrhový vzor Singleton. KAPITOLA 2 Návrhový vzor Singleton Jazyk PHP 5 vám pomocí klíčových slov public, protected a private umožňuje kontrolovat, kdo získá přístup k určitým atributům a metodám třídy. Dále vám jazyk PHP 5 umožňuje

Více

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Využití OOP v praxi -- Knihovna PHP -- Interval.cz Page 1 of 6 Knihovna PHP Využití OOP v praxi Po dlouhé teorii přichází na řadu praxe. V následujícím textu si vysvětlíme možnosti přístupu k databázi pomocí různých vzorů objektově orientovaného programování

Více

Java a Caché IV: Manipulace s objekty

Java a Caché IV: Manipulace s objekty 1 z 6 11.1.2007 11:13 přihlašovací jméno heslo Registrace Přihlásit články odkazy aktuality CZJUG konference o portálu přidejte se o nás Vyhledávání Text: najdi Oborový filtr J2ME J2SE J2EE Enterprise

Více

Úvod do CORBY. Svetlozara Arabadzhieva 6.12.2006

Úvod do CORBY. Svetlozara Arabadzhieva 6.12.2006 Úvod do CORBY Svetlozara Arabadzhieva 6.12.2006 6.12.2006 Co je to CORBA? Common Object Request Broker Architecture Definice: Jazykov ě nezávislý objektový model a specifikace vývojového prostředí pro

Více

PREPROCESOR POKRAČOVÁNÍ

PREPROCESOR POKRAČOVÁNÍ PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,

Více

Unifikovaný modelovací jazyk UML

Unifikovaný modelovací jazyk UML Unifikovaný modelovací jazyk UML Karel Richta katedra počíta tačů FEL ČVUT Praha richta@fel fel.cvut.czcz Motto: Komunikačním m prostředkem informační komunity se postupem času stala angličtina. Chcete-li

Více

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue. 23. Třídy, generické třídy, instance, skládání, statické metody a proměnné. Zapouzdření, konstruktory, konzistence objektu, zpřístupnění vnitřní implementace, modifikátory public a private. Polymorfismus,

Více

Analýza a Návrh. Analýza

Analýza a Návrh. Analýza Analysis & Design Návrh nebo Design? Design = návrh Není vytváření použitelného uživatelského prostředí (pouze malinká podmnožina celého návrhu) Často takto omezeně chápáno studenty nedokáží si představit,

Více

Více o konstruktorech a destruktorech

Více o konstruktorech a destruktorech Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení

Více

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1 24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu

Více

Architektury Informačních systémů. Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/

Architektury Informačních systémů. Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Architektury Informačních systémů Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Nutné pojmy Co je to informační systém? Jaké oblasti zahrnuje? Jaká je vazba IS na podnikovou strategii?

Více

Návrh programu v Black Box Component Builderu s využitím architektury Model View Controller

Návrh programu v Black Box Component Builderu s využitím architektury Model View Controller Návrh programu v Black Box Component Builderu s využitím architektury Model View Controller Gustav Hrudka Katedra měřicí a řídicí techniky, VŠB Technická univerzita v Ostravě, tř. 17. listopadu, 708 33

Více

Jakub Čermák http://www.jcermak.cz. Microsoft Student Partner

Jakub Čermák <jakub@jcermak.cz> http://www.jcermak.cz. Microsoft Student Partner Jakub Čermák http://www.jcermak.cz Microsoft Student Partner Úvod, příklady použití, trocha teorie Struktura aplikace Typy obecně, primitivní typy, speciální typy Podmínky, cykly, namespaces

Více

UAI/612 - Cloudová Řešení. Technologie

UAI/612 - Cloudová Řešení. Technologie UAI/612 - Cloudová Řešení Technologie Rekapitulace Multitenance Bezestavovost Škálovatelnost Cachování Bezpečnost Způsoby nasazení Datová úložiště SQL databáze NoSQL databáze Cloudová datová úložiště (API)

Více

9. Polymorfismus a rozhraní

9. Polymorfismus a rozhraní Polymorfismus a rozhraní strana 73 9. Polymorfismus a rozhraní Tato kapitola navazuje na základní informace o objektech v kapitole 2, zde se budeme zabývat přetěžováním metod, polymorfismem a rozhraními.

Více

PŘETĚŽOVÁNÍ OPERÁTORŮ

PŘETĚŽOVÁNÍ OPERÁTORŮ PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako

Více

Enterprise Java Beans 3.0

Enterprise Java Beans 3.0 Enterprise Java Beans 3.0 Lukáš Zapletal liberix.cz EJB 3.0 a JPA 1.0 JavaBean - vysvětlení pojmu Java třída s get/is a set metodami má tedy vlastnosti žádné další podmínky nejsou kladeny JavaBean je tedy

Více

Vláknové programování část V

Vláknové programování část V Vláknové programování část V Lukáš Hejmánek, Petr Holub {xhejtman,hopet@ics.muni.cz Laboratoř pokročilých síťových technologií PV192 2014 03 25 1/25 Přehled přednášky Paměťový model Javy GUI v Javě Vlákna

Více

boolean hasnext() Object next() void remove() Kolekce

boolean hasnext() Object next() void remove() Kolekce 11. Kontejnery Kontejnery Kontejnery jako základní dynamické struktury v Javě Kolekce, iterátory (Collection, Iterator) Seznamy (rozhraní List, třídy ArrayList, LinkedList) Množiny (rozhraní Set, třída

Více

Co je Symantec pcanywhere 12.0? Hlavní výhody Snadné a bezpečné vzdálené připojení Hodnota Důvěra

Co je Symantec pcanywhere 12.0? Hlavní výhody Snadné a bezpečné vzdálené připojení Hodnota Důvěra Symantec pcanywhere 12.0 Špičkové řešení vzdáleného ovládání pro odbornou pomoc a řešení problémů Co je Symantec pcanywhere 12.0? Symantec pcanywhere, přední světové řešení vzdáleného ovládání*, pomáhá

Více

Programátorská příručka

Programátorská příručka KAPITOLA 1. PROGRAMÁTORSKÁ PŘÍRUČKA Kapitola 1 Programátorská příručka 1.1 Úvod 1.1.1 Technologie Program je psaný v jazyce Java 1.7. GUI je vytvářeno pomocí knihovny SWT. (http://eclipse.org/swt/) Pro

Více

Vývoj multiplatformní aplikace v Qt

Vývoj multiplatformní aplikace v Qt Vývoj multiplatformní aplikace v Qt z pohledu vývoje Datovky Karel Slaný karel.slany@nic.cz 13. 11. 2015 Obsah Co je Qt Nástroje Qt Koncepty Qt Problémy při vývoji Datovky Balíčkování aplikace Datovka

Více

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

TÉMATICKÝ OKRUH Softwarové inženýrství 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

Více

Soketové připojení Klient InetAddress getbyname() UnknowHostException SecurityException Socket getinputstream() getoutputstream() IOException Server

Soketové připojení Klient InetAddress getbyname() UnknowHostException SecurityException Socket getinputstream() getoutputstream() IOException Server Soketové připojení Při socketovém připojení spolu komunikují dvě nezávislé JVM pomocí streamů odpovídajících typů. Po síti můžete posílat textové i binární informace, je možno posílat i objekty, které

Více

10 Balíčky, grafické znázornění tříd, základy zapozdření

10 Balíčky, grafické znázornění tříd, základy zapozdření 10 Balíčky, grafické znázornění tříd, základy zapozdření Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům balíčkům, grafickému

Více

DPKOM_2. Technologie Enterprise JavaBeans Řízení zdrojů a primární služby

DPKOM_2. Technologie Enterprise JavaBeans Řízení zdrojů a primární služby DPKOM_2 Technologie Enterprise JavaBeans Řízení zdrojů a primární služby 1 Obsah přednášky Technologie Enterprise JavaBeans Distribuované zpracování základ EJB EJB služby middleware Řízení zdrojů Primární

Více

7. Datové typy v Javě

7. Datové typy v Javě 7. Datové typy v Javě Primitivní vs. objektové typy Kategorie primitivních typů: integrální, boolean, čísla s pohyblivou řádovou čárkou Pole: deklarace, vytvoření, naplnění, přístup k prvkům, rozsah indexů

Více

Technologie JavaBeans

Technologie JavaBeans Technologie JavaBeans doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Historie Komponentový model Typy komponent

Více

Z. Kotala, P. Toman: Java ( Obsah )

Z. Kotala, P. Toman: Java ( Obsah ) Z. Kotala, P. Toman: Java ( Obsah ) 13. Výjimky Výjimka (exception) je definována jako událost, která nastane během provádění programu a která naruší normální běh instrukcí. Výjimka je vyvolána například

Více

Cloudová Řešení UAI/612

Cloudová Řešení UAI/612 Cloudová Řešení UAI/612 Kontakt Ondřej Urbánek ondrej.urbanek@orchitech.cz Výuka 7.3. 2014 13:00 21.3.2014 13:00 11.4. 2014 13:00 24.5. 2014 13:00 Cloudová Řešení Co je to cloud? Co je pro něj charakteristické?

Více

Dědění, polymorfismus

Dědění, polymorfismus Programování v jazyce C/C++ Ladislav Vagner úprava Pavel Strnad Dědění. Polymorfismus. Dnešní přednáška Statická a dynamická vazba. Vnitřní reprezentace. VMT tabulka virtuálních metod. Časté chyby. Minulá

Více

Zápis programu v jazyce C#

Zápis programu v jazyce C# Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač

Více

Škola: Střední škola obchodní, České Budějovice, Husova 9. Inovace a zkvalitnění výuky prostřednictvím ICT

Škola: Střední škola obchodní, České Budějovice, Husova 9. Inovace a zkvalitnění výuky prostřednictvím ICT Škola: Střední škola obchodní, České Budějovice, Husova 9 Projekt MŠMT ČR: EU PENÍZE ŠKOLÁM Číslo projektu: CZ.1.07/1.5.00/34.0536 Název projektu školy: Výuka s ICT na SŠ obchodní České Budějovice Šablona

Více

Zpracoval: houzvjir@fel.cvut.cz

Zpracoval: houzvjir@fel.cvut.cz Zpracoval: houzvjir@fel.cvut.cz 15. Návrhové vzory. Komponentový návrh, volná vazba versus těsná vazba. Oddělení politiky od mechanismu. Doménově specifické jazyky (DSL). (A7B36OMO) Obsah Návrhové vzory...

Více

OOPR_05. Případové studie

OOPR_05. Případové studie OOPR_05 Případové studie 1 Přehled probírané látky příklad skládání objektů - čára příklad skládání objektů kompozice a agregace přetížené konstruktory pole jako datový atribut 2 Grafický objekt - čára

Více

UML a jeho použití v procesu vývoje. Jaroslav Žáček jaroslav.zacek@osu.cz

UML a jeho použití v procesu vývoje. Jaroslav Žáček jaroslav.zacek@osu.cz UML a jeho použití v procesu vývoje Jaroslav Žáček jaroslav.zacek@osu.cz Různé pohledy na modelování Různé pohledy na modelování Unified Modeling Language UML není metodikou ani programovacím jazykem,

Více

Postup objednávky Microsoft Action Pack Subscription

Postup objednávky Microsoft Action Pack Subscription Postup objednávky Microsoft Action Pack Subscription DŮLEŽITÉ: Pro objednání MAPS musíte být členem Microsoft Partner Programu na úrovni Registered Member. Postup registrace do Partnerského programu naleznete

Více

První kapitola úvod do problematiky

První kapitola úvod do problematiky První kapitola úvod do problematiky Co je to Flex Adobe Flex je ActionSript (AS) framework pro tvorbu Rich Internet Aplications (RIA), tedy knihovna AS tříd pro Flash. Flex používáme k vytvoření SWF souboru

Více

Rozhraní SAX, SAX vs. SAX2. Jaroslav Ciml

Rozhraní SAX, SAX vs. SAX2. Jaroslav Ciml Rozhraní SAX, SAX vs. SAX2 Jaroslav Ciml Použití SAX - připomenutí Vytvoření instance parseru XMLReader xmlreader = XMLReaderFactory.createXMLReader(); Registrace handleru xmlreader.setcontenthandler(

Více

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.

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. 1 Grafické rozhraní Studijní cíl Tento blok je věnován vytváření programů s využitím grafického rozhraní (GUI). Vysvětlen bude základní filozofie pro vytváření aplikací s GUI ve srovnání s konzolovými

Více