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

Common Object Request Broker Architecture

Common Object Request Broker Architecture Common Object Request Broker Architecture Tvorba aplikací, jejichž komponenty budou komunikovat přes počítačovou síť Programátor jedné aplikace volá metody vzdálených objektů podobně jako u sebe lokální

Více

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

Softwarové komponenty a Internet

Softwarové komponenty a Internet Softwarové komponenty a Internet Doc. Dr. Ing. Miroslav Beneš Katedra informatiky FEI VŠB-TU Ostrava Miroslav.Benes@vsb.cz Obsah přednášky Motivace Vývoj přístupů k tvorbě programů Definice komponenty

Více

Základy objektové orientace I. Únor 2010

Základy objektové orientace I. Únor 2010 Seminář Java Základy objektové orientace I Radek Kočí Fakulta informačních technologií VUT Únor 2010 Radek Kočí Seminář Java Základy OO (1) 1/ 20 Téma přednášky Charakteristika objektově orientovaných

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

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

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

Návrhové vzory OMO, LS 2014/2015

Návrhové vzory OMO, LS 2014/2015 Návrhové vzory OMO, LS 2014/2015 Motivace Cílem objektového návrhu je strukturu aplikace navrhnout tak, aby splňovala následující kritéria: snadná rozšiřitelnost účelnost testovatelnost dokumentovatelnost

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

Č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

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

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Struktura programu Vytvoření nové aplikace Struktura programu Základní syntaktické elementy První aplikace Verze pro akademický rok 2012/2013 1 Nová aplikace NetBeans Ve vývojovém

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 : 25. Otázka : Komponentní technologie - základní pojmy a principy, metody specifikace komponent. Obsah : 1. Základní pojmy 1.1 Komponenta Komponenta

Více

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní) Příklad aplikace Klient/Server s Boss/Worker modelem (informativní) Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze A0B36PR2 Programování 2 Jan Faigl, 2015 A0B36PR2

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

IRAE 07/08 Přednáška č. 1

IRAE 07/08 Přednáška č. 1 Úvod do předmětu OOP Objekt Proč OOP? Literatura, osnova předmětu viz. cvičení Základní prvek OOP sw inženýrství = model reálných objektů (věcí) člověk, auto, okno (ve windows), slovník, = model abstraktní

Více

Katedra měřicí a řídicí techniky, VŠB - Technická univerzita v Ostravě, tř. 17. listopadu, Ostrava-Poruba, Česká republika

Katedra měřicí a řídicí techniky, VŠB - Technická univerzita v Ostravě, tř. 17. listopadu, Ostrava-Poruba, Česká republika Použití jazyka Java pro aplikace měření a řízení Roman Gužík Katedra měřicí a řídicí techniky, VŠB - Technická univerzita v Ostravě, tř. 17. listopadu, 708 33 Ostrava-Poruba, Česká republika Abstrakt Příspěvek

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 : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího

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

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu Seminář Java Zavádění tříd Radek Kočí Fakulta informačních technologií VUT Duben 2008 Radek Kočí Seminář Java Zavádění tříd 1/ 16 JVM zavádí třídy dynamicky Class loader objekt schopný zavádět třídy abstraktní

Více

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

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services 13. Webové služby. K čemu slouží? Popis a vyhledávání služeb. Co je a k čemu slouží orchestrace a choreografie služeb. Technologie pro implementaci služeb 1. Webové služby. K čemu slouží? Definice WS -

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

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

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

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

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

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

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

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

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

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

Ú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

Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2009 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 25

Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2009 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 25 Seminář Java Návrhové vzory Radek Kočí Fakulta informačních technologií VUT Duben 2009 Radek Kočí Seminář Java Návrhové vzory 1/ 25 Znovupoužitelnost Dědičnost implementace třídy pomocí jiné (již existující)

Více

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí Kolekce obecně Seznamy a iterátory 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 Kolekce ::= homogenní sada prvků

Více

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování. Jakub Klemsa Jan Legerský Objektově orientované programování klemsjak@fjfi.cvut.cz jan.legersky@gmail.com 30. října 2012 návrhový vzor (design pattern) obecné řešení problému, které se využívá při návrhu

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

ADMINISTRACE POČÍTAČOVÝCH SÍTÍ. OPC Server

ADMINISTRACE POČÍTAČOVÝCH SÍTÍ. OPC Server ADMINISTRACE POČÍTAČOVÝCH SÍTÍ OPC Server Funkce a využití v průmyslové automatizaci Jiří NOSEK 2011 Co je OPC Server? OPC = Open Process Control (původně OLE for Process Control) sada specifikací průmyslového

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

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

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

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

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

Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2008 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 24

Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2008 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 24 Seminář Java Návrhové vzory Radek Kočí Fakulta informačních technologií VUT Duben 2008 Radek Kočí Seminář Java Návrhové vzory 1/ 24 Znovupoužitelnost Dědičnost implementace třídy pomocí jiné (již existující)

Více

Architektury informačních systémů

Architektury informačních systémů Architektury informačních systémů doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes/vyuka/tis Miroslav.Benes@vsb.cz Obsah přednášky Co je to

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

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

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

Ú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

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

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

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

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. 1. Odkrokujte následující program a s použitím notace z přednášky popište stav paměti

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

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

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

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

4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ

4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ 4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ OBJEKT Program v Javě je staticky strukturován na třídy, jejichž instance (objekty) za běhu dynamicky programu vznikají a zanikají. Objekt je nejprve

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

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

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

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20 Obsah 5 Obsah Předmluva k aktuálnímu vydání 15 1 Úvod k prvnímu vydání z roku 2000 16 Typografické a syntaktické konvence................ 20 2 Základní pojmy 21 2.1 Trocha historie nikoho nezabije................

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

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

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

IB111 Programování a algoritmizace. Objektově orientované programování (OOP) IB111 Programování a algoritmizace Objektově orientované programování (OOP) OP a OOP Objekt Kombinuje data a funkce a poskytuje určité rozhraní. OP = objektové programování Vše musí být objekty Např. Smalltalk,

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

GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA

GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA What is an FTP client and how to use it? FTP (File transport protocol) - A protocol used to transfer your printing data files to the MAFRAPRINT

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

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů - 1.1 - Kapitola 1: Úvod Účel databázových systémů Pohled na data Modely dat Jazyk pro definici dat (Data Definition Language; DDL) Jazyk pro manipulaci s daty (Data Manipulation Language; DML) Správa

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

Komunikace. Úrovová architektura protokol. Úrovová architektura protokol (2) Pednášky z distribuovaných systém

Komunikace. Úrovová architektura protokol. Úrovová architektura protokol (2) Pednášky z distribuovaných systém Komunikace Pednášky z distribuovaných systém Úrovová architektura protokol 2-1 Úrovn, rozhraní a protokoly OSI modelu. 6.12.2004 DS - Komunikace 2 Úrovová architektura protokol (2) 2-2 Typická zpráva penášená

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

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová Programové konvence, dokumentace a ladění 2. přednáška Alena Buchalcevová Proč dodržovat programové konvence? velkou část životního cyklu softwaru tvoří údržba údržbu provádí většinou někdo jiný než autor

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

Dědičnost (inheritance)

Dědičnost (inheritance) Dědičnost (inheritance) Úvod Umožňuje objektům převzít (zdědit) členy jiných objektů a pouze je rozšířit o Auto: lze odvodit Vztah je osobní auto, cisterna jsou auta Základní pojmy Bázová třída (rodič)

Více

Tvorba informačních systémů

Tvorba informačních systémů 9. Tvorba informačních systémů Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2007/2008 c 2006-2008 Michal Krátký, Miroslav Beneš Tvorba

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

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

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

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

Java - výjimky. private void vstup() throws IOException {... }

Java - výjimky. private void vstup() throws IOException {... } Java - výjimky Tato kapitola ukazuje na několika příkladech práci s výjimkami v Javě. Klíčové pojmy: Výjimka, hierarchie výjimek, zachytávání výjimek, blok try-catch, tvorba vlastních výjimek, propagace

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

Ú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

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

(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

Integrace OpenOffice.org a Javy. CZJUG, , Robert Vojta

Integrace OpenOffice.org a Javy. CZJUG, , Robert Vojta Integrace OpenOffice.org a Javy CZJUG, 15.12.2008, Robert Vojta Obsah Část 1 - Teorie Úvodní informace, definice pojmů Dokumentace, Java Language Binding Pomocné nástroje Část 2 - Praktické ukázky Lokální

Více

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika Vývoj informačních systémů Architektura, návrh Vzory: Doménová logika Zachman Framework Zdroje Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented

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

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

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ Technologie Jalapeño od InterSystems Andreas Dieckow, Principal Product Manager, Strategic Planning InterSystems Corporation Úvod Programovací jazyk Java má díky

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

6 Objektově-orientovaný vývoj programového vybavení

6 Objektově-orientovaný vývoj programového vybavení 6 Objektově-orientovaný vývoj programového vybavení 6.1 Co značí objektově-orientovaný - organizace SW jako kolekce diskrétních objektů, které zahrnují jak data tak chování objekt: OMG: Objekt je věc (thing).

Více

Diagramy tříd - základy

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

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

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

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

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

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