Technologie COM ve vývojovém nástroji Microsoft Visual Studio

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

Download "Technologie COM ve vývojovém nástroji Microsoft Visual Studio"

Transkript

1 Masarykova univerzita Fakulta informatiky BAKALÁŘSKÁ PRÁCE Technologie COM ve vývojovém nástroji Microsoft Visual Studio Ondřej Bystrý 2006

2

3 Prohlášení Prohlašuji, že jsem bakalářskou práci zpracoval samostatně a že jsem uvedl všechny prameny, ze kterých jsem čerpal. V Brně podpis

4 Poděkování Děkuji vedoucí bakalářské práce paní Mgr. Barboře Zimmerové za odborné vedení a panu Ing.Václavu Kadlecovi za ochotu a vstřícnost a za cenné rady, které mi poskytl.

5 Shrnutí: Práce popisuje obecné principy komponentních technologií a detailněji pak principy, na nichž je založena komponentní technologie COM. Jejím konkrétním zaměřením je tvorba komponent COM ve vývojovém nástroji Microsoft Visual Studio, s využitím programovacího jazyka Visual Basic. Případová studie, jejíž tvorba je v textu podrobně zdokumentována, názorně ilustruje specifika komponentní technologie COM v praxi. Summary: This thesis describes general principles of component technologies and focuses on principles, that component technology COM is based on. Thesis accords priority treatment to development of component COM using the Microsoft Visual Studio environment, specifically taking advantage of programming language Visual Basic. Thesis contains the description of the sample project implementation, which practically shows the unique aspects of component technology COM. Klíčová slova: Software, komponentní technologie, technologie COM, Microsoft Visual Studio, Microsoft Visual Basic, tvorba aplikace.

6 Obsah 1. Úvod Popis použité technologie Vývoj softwarových technologií Obecné principy komponentní technologie Charakteristika technologie COM Implementace technologie COM v Microsoft Visual Studio Tvorba aplikace Návrh komponent Tvorba komponent ActiveX Control Tvorba komponenty ActiveX DLL Tvorba komponenty ActiveX EXE Tvorba klienta Ukázka spolupráce komponent s klientem Závěr Literatura Přílohy Přehled komponent... i 6.2 Uživatelská dokumentace... v

7 1. Úvod Cílem mé bakalářské práce bylo seznámit se s vývojovým prostředím Microsoft Visual Studio a s implementací komponentní technologie COM v tomto prostředí a použít uvedený nástroj pro vytvoření vlastní aplikace. Jádro teoretické části práce je tvořeno kapitolami 2 a 3. V kapitole 2 uvádím základní informace o použité technologii. Jsou popsány výchozí principy objektově orientovaného programování, komponentní technologie obecně a speciálně pak komponentní technologie COM. V kapitole 3 popisuji postup tvorby aplikace v uvedené technologii. Uvádím, jaká základní rozhodnutí je nutno při vývoji aplikace učinit, jak jsem se v případě konkrétní vytvářené aplikace rozhodl a z jakých důvodů. Popisuji, na jaké problémy jsem při vývoji narazil a jak jsem je řešil. Přílohy obsahují seznam komponent s popisem jejich rozhraní a uživatelskou dokumentaci k vytvořené aplikaci. Praktickou část mé bakalářské práce představuje aplikace vytvořená ve vývojovém prostředí Microsoft Visual Studio v jazyce Microsoft Visual Basic. Aplikace demonstruje obecné principy používání komponentních technologií a většinu základních a nejčastějších činností, jako například tvorbu komponent, spolupráci mezi komponentami a využití komponent klientem

8 2. Popis použité technologie 2.1 Vývoj softwarových technologií Přestože software má v porovnání s jinými produkty lidské činnosti docela krátkou historii, prošla tvorba softwaru vývojem, na kterém je možno vysledovat několik odlišných fází. V první etapě softwarové tvorby byly aplikace vytvářeny ve formě jednoho programového celku, a to jak na úrovni zdrojového textu, tak na úrovni cílového strojového kódu. Zdrojový text nebyl nijak strukturován, větvení a cykly byly vytvářeny pomocí odskoků na návěští. Kompilací jednoho celku zdrojového textu vznikl jeden spustitelný celek ve strojovém kódu. Je zřejmé, že tvorba složitějších aplikací tímto způsobem byla nesmírně náročná. Čitelnost zdrojového kódu (zejména cizího, ale i vlastního s delším časovým odstupem) byla nízká, z čehož plyne, že modifikovatelnost aplikace byla obtížná a nesla vysoké riziko chyby. Důsledkem byla skutečnost, že při vývoji další aplikace, byť podobné, bylo zpravidla jednodušší naprogramovat vše znovu, než se pokoušet použít něco z dosud vytvořených programů. Metodika strukturovaného programování vycházela z analýzy vytvářeného systému a rozkladu složitého algoritmu do jednoduchých typizovaných struktur. To umožnilo vytváření knihoven funkcí a přineslo možnost opakovaného použití vytvořených softwarových elementů, zatím však pouze na úrovni zdrojového textu, tj. před kompilací. Další důležitou charakteristikou uvedené metodiky je přetrvávající oddělení datových struktur od funkcionality. Knihovny evidovaly funkce, ale nespojovaly je nijak s konkrétními datovými strukturami. 2.2 Obecné principy komponentní technologie Se snižováním ceny hardwaru došlo k výraznému rozšíření sfér použití výpočetní techniky z původní domény vědecko-technických výpočtů do mnoha dalších oblastí: obchodu, služeb, vzdělávání Při modelování reálných činností, které měly být automatizovány, se ukázalo, že návrh jednotlivých datových struktur společně s požadovanou funkcionalitou prováděnou nad každou strukturou daleko lépe odráží skutečnost než dosud používaný přístup relativně nezávislého návrhu datových struktur a návrhu funkcí

9 Odpovědí na tuto potřebu byl vznik metodiky objektově orientovaného programování. Byl definován pojem objekt jako uzavřená struktura programu splňující podmínky. 1. Obsahuje vnitřní paměť (atributy). 2. Obsahuje programový kód pro zajištění funkcionality nad vnitřní pamětí (metody). Důležitá je skutečnost, že metody pracují pouze nad vnitřní pamětí objektu. 3. Objekt je schopen přijmout zprávu zvnějšku a na základě toho spustit určitou metodu ( dle tzv. protokolu zpráv přiřazujícího každé přípustné zprávě určitou metodu objektu). 4. Objekt může obsahovat jiné objekty, kterým je schopen poslat zprávu ( a tímto způsobem může řídit jejich činnost). V praxi se pak jeví jako velmi významné některé další vlastnosti objektů, přestože z pohledu teorie stojí v pozici nikoliv základních, nýbrž pouze odvozených charakteristik. Jsou to především mechanismus tvorby objektů pomocí tříd, možnost dědění a polymorfismus. Objektový přístup představoval ve vývoji softwarových technologií velmi důležitý krok směrem ke standardizaci a opakovanému použití ucelených relativně nezávislých softwarových elementů. Uvedený proces však mohl být uplatňován pouze na úrovni zdrojového kódu, to znamená, že spolu mohly být spojovány pouze celky vytvořené v tomtéž, resp. v blízkém programovacím jazyce, a následně bylo nutno provést kompilaci. Uvedený nedostatek odstraňuje komponentní technologie. Pojem komponenta obecně označuje softwarový element, který může být spojován s dalšími elementy do funkčního celku a umožňuje opakované hierarchické skládání, a to vše na binární úrovni, to znamená na úrovni zkompilovaných prvků systému. Komponentní technologie vychází z objektového přístupu, instanci komponenty je možno považovat za speciální případ objektu. Komponentní technologie umožňuje tvorbu jednotlivých složek systému v různých vývojových prostředích i v odlišném programovacím jazyce, a tím maximální opakované využití prvků dříve vytvořeného softwaru. Dalším důležitým kladem komponentní technologie je snazší modifikovatelnost aplikací. Technologií rozumíme soubor pravidel a dohod, které musí programátor dodržet, aby jeho aplikace dokázala s ostatními komunikovat, jinými slovy, aby opravdu vytvořil použitelnou komponentu. Konkrétních technologií, které tyto standardy nějakým způsobem zavádějí, je několik

10 Třemi nejrozšířenějšími jsou komponentní technologie CCM (CORBA Component Model), založená na technologii CORBA (Common Object Request Broken Architecture), dále potom EJB (Enterprise JavaBeans) a COM (Component Object Model). COM má oproti EJB výhodu větší konzistence, v důsledku toho, že je vytvořen a poskytován jediným výrobcem společností Microsoft. Obrácenou stranou této mince je, že efektivní fungování technologie je omezeno na jedinou platformu, tj. Microsoft Windows. Technologie EJB může být realizována na různých platformách, nicméně přenosy z jedné platformy na jinou mohou být problematické. CCM je z uvedených technologií nejmladší a ve své specifikaci se snaží využít řadu prvků, které se osvědčily v ostatních technologiích. Všechny tři technologie mají mnoho společných vlastností a sílí snaha o jejich propojení. Například už existuje software, umožňující propojit komponenty technologií COM a CORBA navzájem

11 2.3 Charakteristika technologie COM Rozhraní objektu Jedním z postulátů objektově orientovaného programování je požadavek, aby každý objekt měl tzv. protokol zpráv. Protokol zpráv je v jednotlivých technologiích implementován různě, ale obecně platí, že jde o tabulku obsahující seznam zpráv, na které umí objekt reagovat, a přiřazující každé přípustné zprávě právě jednu metodu, která se při zavolání zprávy spustí. Vzhledem k zapouzdření, které uživateli objektu nedovoluje nahlížet či dokonce zasahovat do vnitřní struktury objektu, je zasílání zpráv jedinou možností, jak s objektem komunikovat. Seznam zpráv, kterým objekt rozumí, je tedy pro uživatele klíčovou informací o tom, jak je možno objekt použít. Seznam zpráv sám o sobě samozřejmě neposkytuje informaci o tom, jak se bude objekt chovat. Reakce objektu na zprávu závisí na tom, jaká metoda je k dané zprávě přiřazena. To znamená, že může nastat situace, kdy se dva objekty se stejnou množinou zpráv chovají zcela odlišně (tzv. polymorfismus). Seznam zpráv, které je možné objektu zaslat, označujeme termínem rozhraní, neboli interface. Pomocí rozhraní je objekt schopen komunikovat se svým okolím. Rozhraní může být chápáno jako entita nezávislá na konkrétním objektu, a následně je pak možno uvažovat situaci, kdy rozhraní vzniká nezávisle na objektu. Například je možno definovat rozhraní a teprve potom vytvářet objekt, který bude uvedené rozhraní implementovat. Přirozeným vyústěním těchto úvah je potom otázka, zda by takto vznikající objekt mohl případně implementovat i několik různých rozhraní. Z analytického hlediska se implementace několika rozhraní jeví jako výhodné řešení. Zejména když uvážíme, že v různých již existujících rozhraních se může opakovat volání stejných zpráv, je zřejmé, že tímto způsobem je možno použít jednu metodu (tzn. jednou napsaný kód) vícekrát. Praktická realizace několikanásobného rozhraní však není triviální. Řešení se v jednotlivých komponentních technologiích odlišuje, v kapitolách a bude popsáno řešení uvedeného problému v technologii COM Realizace rozhraní COM, metoda QueryInterface Realizace rozhraní je především otázkou zavedení určitých dohod a standardů, při jejichž dodržení jsou potom objekty schopné komunikovat pomocí zasílání zpráv

12 V komponentních technologiích je tento problém o to složitější, že se má jednat o komunikaci již zkompilovaných objektů, tj. na binární úrovni. Rozhraní komponent COM je řešeno jako pole adres, ve kterém jsou uloženy ukazatele na jednotlivé metody, tzn. na první příkazy těchto metod. Zprávy jsou jednoznačně identifikovány svým pořadím v poli, tedy pomocí svého indexu. Zpráva zaslaná binárnímu objektu je tímto zredukována na jediné číslo a je interpretována jako příkaz: Proveď instrukci nacházející se v paměti na adrese, kterou najdeš na x-tém místě v poli ukazatelů. Je zřejmé, že dané řešení zachovává požadované oddělení zpráv od metod a že metody nejsou spouštěny přímo, ale prostřednictvím protokolu zpráv. Výměnou obsahu tabulky ukazatelů je možno dosáhnout toho, že objekt se stejným rozhraním se bude chovat odlišně, neboť zprávám budou přiřazeny jiné metody. Několikanásobné rozhraní v binárních podmínkách je v technologii COM řešeno pomocí rozhraní IUnknown. Rozhraní IUnknown obsahuje tři zprávy: QueryInterface, AddRef a Release (jejich význam bude popsán v následujících odstavcích). Uvedené rozhraní je považováno za standardní a musí být součástí každé komponenty COM. Další standard pak nařizuje, že každé další rozhraní COM komponenty musí obsahovat mimo svých vlastních zpráv také všechny tři zprávy rozhraní IUnknown, a to povinně na začátku rozhraní, tedy na prvních třech místech v poli ukazatelů. Zprávy QueryInterface, AddRef a Release je tedy možno volat pomocí kteréhokoliv rozhraní komponenty COM. Další dohoda potom zajišťuje, že ať budeme tyto zprávy volat jakkoliv (tedy prostřednictvím kteréhokoliv rozhraní), výsledek bude vždy stejný. To znamená, že ve všech rozhraních se budou za těmito zprávami skrývat tytéž metody a jestliže vyšleme zprávu např. QueryInterface kterémukoliv rozhraní komponenty, spustí se vždy tatáž metoda. Dohoda v podstatě říká, že každá komponenta má jedinou metodu QueryInterface, jedinou metodu AddRef a jedinou metodu Release a že v každém rozhraní je k dispozici zpráva pro zavolání každé z těchto metod. Možnost používat několikanásobné rozhraní nám poskytuje konkrétně metoda QueryInterface. Jde o funkci, která na dotaz na určité rozhraní vrátí ukazatel na toto rozhraní, případně informaci o tom, že rozhraní neexistuje. Na rozhraní se dotazujeme pomocí jednoznačného identifikátoru (tzv. IID - Interface Identifier). Standardy technologie COM opět stanovují několik pravidel, podle nichž se musí metoda QueryInterface chovat:

13 1. Již zmíněné pravidlo o tom, že v komponentě existuje jen jediná implementace funkce QueryInterface. 2. Po celou dobu trvání života instance komponenty musí QueryInterface vracet na stejné dotazy stejné odpovědi, to znamená, že opakováním dotazu nemůžeme získat dva různé výsledky. 3. Nesmí dojít k chybě ani v situaci, kdy se klient zeptá na rozhraní, které právě v současné době používá. V takovém případě vrací rozhraní odkaz na sebe sama. 4. Pravidlo možné cesty zpět: Jestliže jsme dotazem zaslaným jednomu rozhraní úspěšně získali ukazatel na rozhraní další, pak od tohoto získaného rozhraní jsme schopni dotazem úspěšně získat odkaz na rozhraní původní. 5. Ať se na určité rozhraní ptáme dotazem přes kterékoliv rozhraní komponenty, výsledek dotazu musí být vždy stejný. Tedy odpověď nesmí záviset na tom, kterému rozhraní jsme dotaz zaslali. Takto metoda QueryInterface funguje jako jakýsi přepínač mezi rozhraními a dovoluje nám pracovat s několikanásobným rozhraním i na binární úrovní Reference, metody AddRef a Release Komponentní technologie musí také řešit problém, za který v případě OOP zodpovídá samotný programátor. Jde u určení doby vzniku a zániku objektu, který má být klientem používán. Pokud totiž vytváříme komponentu, která má být použitelná v různých programech, nemůžeme předem vědět, kdy ji bude který klient potřebovat. Je tedy potřeba rozhodnout, kdo má být zodpovědný za určení správné chvíle pro zrození a zničení komponenty. Tvůrce komponenty k tomu v době tvorby nemá dostatečné informace. Klient by mohl teoreticky nechat komponentu zrodit ve chvíli, kdy ji potřebuje, ale zůstává problém se zrušením, protože klient nemůže vědět, jestli je v danou chvíli jediným, kdo komponentu používá, a jestli nezničí komponentu, kterou v té době používá ještě někdo další. Svůj vznik a zánik by tedy měla řídit sama komponenta. Ale i tady narážíme na problém, protože na základě principů OOP by se komponenta neměla o své klienty nijak zajímat a měla by jen provádět příkazy, zaslané jí pomocí zpráv. Řešení spočívá ve vhodném rozdělení odpovědnosti mezi klienta a komponentu. Klient je povinen oznámit komponentě, že ji začal, resp. přestal používat, a komponenta si udržuje informaci o počtu referencí na sebe sama, tedy zná počet klientů, kteří ji používají. Svůj vznik a zánik je potom komponenta schopna ovládat sama na základě počtu referencí. Vzniká ve chvíli, kdy ji začne používat první klient (vzniku instance komponenty se

14 budeme podrobněji věnovat v následující kapitole), a zanikne, když ji přestane používat poslední klient, to znamená ve chvíli, kdy je počet referencí roven nule. Ke změně počtu referencí slouží klientům v technologii COM právě dvě zbývající metody rozhraní IUnknown, tzn. metody AddRef a Release. Klient zavolá metodu AddRef vždy v okamžiku, kdy získá odkaz na nějaké rozhraní komponenty, a následně metodu Release, když ji používat přestane, tedy když tento odkaz zruší nebo nahradí jiným. Je třeba zdůraznit, že nová reference vzniká i kopírováním odkazu do jiné proměnné, protože v té chvíli máme možnost k objektu přistupovat dvěma různými cestami. Pokud bychom při kopírování odkazu nezavolali metodu AddRef, komponenta by se po zániku odkazu v původní proměnné zničila a klientovi by v druhé proměnné zůstal odkaz na neexistující objekt. V okamžiku, kdy zkopírujeme odkaz na nějaké rozhraní komponenty do další proměnné, musíme situaci chápat jako používání komponenty dvěma klienty a v souladu s tím zavolat metodu AddRef Vznik instance komponenty, Class Factory V předcházející kapitole je několikrát použita formulace: komponenta bude sama schopna ovládat svůj vznik, v tomto obratu se ukrývá vcelku netriviální problém, a totiž, jak může nějaký objekt sám sebe vytvořit, když zatím neexistuje. V objektových programovacích jazycích je při tvorbě monolitického programu uvedený problém řešen tím, že konstruktor a destruktor jsou metodami třídy a za zrod svých instancí tak odpovídá sama třída. Toto řešení ovšem v komponentní technologii nepřipadá v úvahu, protože konstrukci, ve které považujeme třídu v podstatě za zvláštní druh objektu, můžeme použít ve vyšším programovacím jazyce, ale nikoliv na úrovni zkompilovaného kódu. Jednou z možností, jak lze problém řešit v komponentní technologii, je zavedení systémové funkce přístupné odkudkoliv. V takovém případě pak sám systém vystupuje v roli toho, koho žádáme o vznik objektu. V technologii COM se tato funkce nazývá CoCreateInstance a jejími parametry jsou kromě jiných především CLSID, což je jednoznačný identifikátor komponenty, a IID jako identifikátor rozhraní, které chceme použít jako první. Jako výsledek potom funkce CoCreateInstance vrací ukazatel na námi požadované rozhraní. Nevýhodou uvedeného řešení je ovšem jeho nedostatečná flexibilita. Protože při vytváření instance komponenty můžeme mnohdy vyžadovat, aby byl tento proces pod řízenou kontrolou (například z důvodů řešení přístupových práv ke komponentě, či optimalizace z hlediska dalších alokací paměti v případě, že žádáme víc instancí jedné komponenty)

15 Odpovědí na tyto požadavky je komponenta Class Factory. Pro každou komponentu existuje zvláštní komponenta Class Factory, která má starosti její zrod. Je vhodné zdůraznit, že Class Factory dané komponenty má na starosti pouze její zrod a nijak nesouvisí s aplikační logikou komponenty samotné, jedná se o čistě služební objekt. Postup při vzniku komponenty s použitím Class Factory vypadá takto: Nejprve je do systému nainstalována právě komponenta Class Factory, poté je možno nastavit podmínky vzniku komponenty samotné pomocí vnitřní paměti Class Factory v závislosti na konkrétních podmínkách, za nichž má být komponenta vytvořena. A teprve potom Class Factory zajistí vytvoření instance požadované komponenty. Na první pohled se může zdát, že popsaným mechanismem jsme problém nevyřešili, ale pouze ho přesunuli z jedné komponenty na jinou, protože u zrodu Class Factory vyvstává tentýž problém. Rozdíl však tkví v tom, že v případě Class Factory, vzhledem k tomu, že jde pouze o služební objekt, odpadají potíže s flexibilitou, na které jsme dříve narazili při použití systémové funkce. Vznik instance komponenty v technologii COM tedy vypadá takto: Jestliže klient požaduje vytvoření instance nějaké komponenty, nejprve je pomocí systémové funkce CoGetClassObject vytvořena Class Factory náležející k příslušné komponentě a potom se výše popsaným způsobem Class Factory postará o vznik instance komponenty, kterou chce klient používat Identifikace komponent a popis rozhraní Je zřejmé, že každá komponenta, stejně tak jako každé rozhraní, musí být jednoznačně identifikovatelné. Jako jedinečné označení se v technologii COM používá GUID (globally unique identifier). GUID je 128bitová struktura, vygenerovaná na základě času vzniku identifikátoru, relativního času od vzniku nového systému na stroji a jednoznačného identifikátoru stroje (ten vychází z identifikátoru síťové karty, nebo, v případě, že stroj síťovou kartu nemá, z kombinace identifikátorů pevného disku, CPU, příp. dalších součástí stroje) Technologie COM využívá uvedený systém identifikace jak k označování komponent (identifikátor CLSID), tak k označování jejich rozhraní (identifikátor IID). Ke generování GUID jsou využívány různé programy, např. UUIDGEN.EXE. Popsaným způsobem je možno komponentu jednoznačně identifikovat, nicméně tato informace nepostačuje uživateli k tomu, aby se dozvěděl, k čemu je komponenta určena a jak ji může využít. Aby byla komponenta využitelná jinými programátory, než je sám autor, je potřeba vhodným způsobem popsat její rozhraní, tedy jaké zprávy je

16 komponenta schopna přijímat, jejich vstupní a výstupní parametry, a především jejich význam. Přestože formát popisu není striktně předepsán, standardně se používá tzv. Interface Definition Language zkráceně IDL. Jedná se o jazyk se syntaxí podobnou C++, jehož pomocí lze vytvořit popis rozhraní obsahující především jeho jednoznačný identifikátor IID, vytvořený jako GUID, a dále jméno rozhraní, atributy, definice metod Využití tohoto prostředku výrazně zjednodušuje komunikaci mezi tvůrcem komponenty a jejími uživateli. Je vhodné upozornit na skutečnosti, že zveřejnění popisu komponenty je pro tvůrce určitým závazkem, protože v případě, že se rozhodne nějakým způsobem rozhraní změnit, nemůže ho pouze upravit (protože by pak neodpovídalo zveřejněnému popisu), ale musí zavést rozhraní nové Komponenty in-process, out-of-process V propojování komponent na binární úrovni se skrývá ještě další nebezpečí. Komponentu do systému připojujeme díky tomu, že známe ukazatel na její rozhraní. Vyvstává však otázka, zda budeme vždy schopni tento ukazatel použít, tedy zda adresa, na kterou ukazuje, bude pro náš program dostupná. Problém spočívá v izolaci procesů. Dva procesy, byť běží na jednom stroji, nesdílejí stejný paměťový prostor. Každý proces si vyhrazuje vlastní paměťový prostor, ve kterém se pohybuje, a při volání odkazů v této paměti používá logických adres. Logické adresy jsou absolutní v rámci jednoho procesu, ale relativní mezi procesy. Z toho plyne, že shodným logickým adresám ve dvou spuštěných procesech odpovídají rozdílné adresy fyzické. Je tedy zřejmé, že pokud se komponenta nachází jinde než v paměťovém prostoru klienta, nebude přímo dostupná, přestože běží na stejném stroji (v případě, že běží na jiném stroji, je tento problém ještě zjevnější). Na základě tohoto problému tedy rozdělujeme komponenty na servery in-process a out-of-process. Servery in-proces se připojují tak, že se nová instance komponenty instaluje do stejného paměťového prostoru, v němž se nachází klient. Servery out-of-process potom existují mimo paměťový prostor klienta a dělíme je ještě na tzv. lokální a vzdálené servery podle toho, zda běží na stejném nebo na jiném stroji. V případě lokálního serveru out-of-process je potřeba zajistit komunikaci mezi izolovanými procesy. To je možno provést několika způsoby, například tzv. dynamickou výměnou dat (Dynamic Data Exchange, DDE) nebo pomocí sdílené paměti. Technologie COM používá k uvedenému účelu tzv. Local Procedure Call (LPC). Aby bylo

17 zabezpečeno odizolování jak klienta, tak komponenty od přímého volání do jiného procesu, probíhá tato komunikace přes simulanty. V procesu klienta je ve tvaru in-proces DLL zaveden objekt simulující činnost komponenty (tento simulant se nazývá proxy) a naopak v procesu komponenty je stejným způsobem zaveden objekt simulující činnost klienta (nazývá se stub). Simulanti spolu potom komunikují právě pomocí LPC. V případě vzdáleného serveru je situace obdobná, ale ke komunikaci mezi proxy a stub se používají funkce Remote Procedure Call (RPC) určené ke komunikaci mezi různými stroji pomocí síťových prostředků. Tato technologie se také někdy nazývá DCOM (Distributed COM). Je vhodné podotknout, že LPC je možno považovat za zvláštní případ použití RPC, a to pro volání funkcí na jednom stroji. Současně s použitím RPC je ovšem třeba řešit celou řadu otázek spjatých se síťovou komunikací, především otázku bezpečnosti a přístupových práv. Dalšími termíny, které je vhodné zmínit v souvislosti se servery out-of-process, jsou marshalling a unmarshalling. Jsou to názvy pro činnosti nezbytné při předávání parametrů mezi izolovanými procesy tak, aby tyto byly pro obě strany srozumitelné. Převod parametrů volání do standardního formátu pro přenos mezi procesy se nazývá marshalling. Opačná operace, zpětného dekódování parametrů v procesu, který je přijal, se potom nazývá unmarshalling. Protože každé rozhraní má své vlastní metody a parametry, zavádí se standardně pro každé rozhraní jeho vlastní marshaller. Ten obsahuje specifický algoritmus pro zakódování a dekódování parametrů metod daného rozhraní COM a vlákna V souvislosti s multithreadingem, tedy při běhu několika vláken v jednom procesu, může v COM dojít hned ke dvěma problémům. Zaprvé je to situace, kdy je instance komponenty nainstalována v prostředí, kde běží několik vláken najednou. Komponenta neví samozřejmě nic o svých klientech, to znamená, že neví, kdy ji bude kdo volat, a v tomto prostředí potom může docházet ke kolizím, pokud není komponenta sama proti nim nějak zabezpečena. Druhý problém pak nastává v opačném případě: komponenta sama může být naprogramována tak, že v sobě spouští více vláken, a v tom případě může dojít ke kolizím, pokud je takováto komponenta používána klientem, který s více vlákny neumí pracovat. Komponenta totiž může zavolat klienta hned několika vlákny, a pokud tento není zabezpečený proti paralelnímu zpracování, dojde ke kolizi. I v tomto případě však je to komponenta, která jakožto služební objekt (server) nese odpovědnost za bezpečnost své činnosti pro libovolného klienta

18 Uvedené problémy jsou v technologii COM řešeny zavedením dvou základních povolených modelů a to STA (Single-Threaded Apartment Model) a MTA (Multi-Threaded Apartment Model). Rozdíl mezi modely STA a MTA tkví v tom, že v případě modelu STA je synchronizace více vláken realizována samotnou technologií COM, tedy pomocí jejích systémových funkcí, a rozhraní jsou mezi jednotlivými vlákny marshallována. V případě MTA si musí své vnitřní stavy synchronizovat komponenta sama, to znamená, že za správné fungování i v případě volání z více vláken odpovídá programátor, který musí všechny tyto případy nějakým způsobem ošetřit. Dalším rozdílem je pak to, že v MTA nedochází mezi vlákny k marshallingu rozhraní. Nespornou výhodou modelu STA je skutečnost, že se programátor komponenty nemusí zabývat problémy souvisejícími s multithreatingem. Ovšem ruku v ruce s výhodou, že při tvorbě komponenty není potřeba řešit synchronizaci, jde nevýhoda, že tím pádem programátor komponenty nemá synchronizaci nijak pod kontrolou, což také může působit problémy (viz další odstavec). Další nevýhodou je potom to, že v tomto modelu není možné zavést uvnitř komponenty paralelní zpracovávání několika vlákny. Při použití modelu STA stojí před programátorem nesnadný úkol zajistit synchronizaci vláken běhu programu v komponentě, přestože komponenta neví, kdy a kdo ji bude volat. Na druhou stranu je to v některých případech jediná možnost, jak optimalizovat rychlost komponenty, a v některých případech dokonce jediná možnost, jak zajistit její funkcionalitu Windows Registry a COM Registry je systémová databáze Windows. Kromě mnoha dalších funkcí tato databáze podporuje evidenci nezbytnou pro technologii COM. COM používá Registry k uschování důležitých informací o komponentách v systému. Primární informací o komponentě je především její jednoznačný identifikátor (viz 2.3.5) označovaný jako CLSID. K tomuto identifikátoru se pak v databázi asociují další podstatné informace týkající se dané komponenty. Registry má stromovou strukturu a k jeho prohlížení se používá Registry Editor, a to buď REGEDIT.EXE (pod Windows 95) nebo REGEDT32.EXE. Prvky používané v technologii COM, které jsou zapsané v Registry, jsou všechny v jediném kořenu s názvem HKEY_CLASSES_ROOT. Zde je možno nalézt podřízený prvek označený CLSID, v němž se nacházejí veškeré informace o všech třídách libovolné komponenty. Kromě CLSID komponenty je důležitou informací především slovní označení

19 komponenty, které je samozřejmě srozumitelnější a uživatelsky příjemnější než skupiny hexadecimálních znaků. Registrace (resp. odhlášení) serveru EXE se provádí buď přímo jeho spuštěním nebo pomocí příkazů /regserver a /unregserver. V případě serveru DLL a Control komponent se potom používá registrační program REGSVR32.EXE, který má parametr /u pro odregistrování komponenty

20 2.4 Implementace technologie COM v Microsoft Visual Studio Microsoft Visual Studio Microsoft Visual Studio je komplexní produkt určený k vývoji softwaru, který v sobě sdružuje několik různých vývojových prostředí. Každý programovací jazyk má své specifické vlastnosti, díky kterým je vhodný k řešení určitých typů problémů. A právě z toho důvodu, aby programátor měl možnost využít pro daný úkol ten nejvhodnější vývojový prostředek, nabízí je firma Microsoft společně v podobě Visual Studia. Konkrétně Visual Studio 6.0 Enterprise Version nabízí: Visual Basic, Visual C++, Visual FoxPro, Visual InterDev, Visual J++, Visual SourceSafe, MSDN Library. Co se týká konkrétně Visual Basicu, jedná se vyšší programovací jazyk, zaměřený především na tvorbu aplikací fungujících na principech OOP. Jak napovídá už sám název Basic, jedná se o programovací jazyk, který se snaží být pokud možno uživatelsky přívětivý a maximálně zjednodušit programátorům práci. Jeho předností je jednoduché ovládání, kdy vývojové prostředí samo řeší řadu technických problémů. Ve Visual Basicu je možno velmi snadno a rychle vytvářet standardní aplikace. Jeho nevýhodou na druhou stranu je malá flexibilita Vztah jazyka Microsoft Visual Basic a technologie COM Visual Basic 6.0 (stejně jako už i předchozí verze 5.0) je sám vystavěn pomocí technologie COM a v důsledku toho je zavádění komponent v daném jazyce poměrně snadné. Převážnou většinu problémů, o kterých byla řeč v předchozí kapitole, ošetřuje Visual Basic automaticky. Například při tvorbě komponenty ve Visual Basicu se programátor nikde nesetká s takovými pojmy jako rozhraní IUnknown či metody QueryInterface, AddRef a Release. Práci s těmito metodami uschovává Visual Basic za běžné příkazy vyššího programovacího jazyka. Poznámka: Existence uvedených metod je samozřejmě patrná. Jako příklad můžeme uvést porovnávací operátor is. Ten zjišťuje zda dva ukazatele odkazují na tentýž objekt

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

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

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

DUM 06 téma: Tvorba makra pomocí VBA

DUM 06 téma: Tvorba makra pomocí VBA DUM 06 téma: Tvorba makra pomocí VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie

Více

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. 2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. GEOVAP, spol. s r. o. Čechovo nábřeží 1790 530 03 Pardubice Česká republika +420 466 024 618 http://www.geovap.cz V dokumentu použité názvy programových

Více

Maturitní témata Školní rok: 2015/2016

Maturitní témata Školní rok: 2015/2016 Maturitní témata Školní rok: 2015/2016 Ředitel školy: Předmětová komise: Předseda předmětové komise: Předmět: PhDr. Karel Goš Informatika a výpočetní technika Mgr. Ivan Studnička Informatika a výpočetní

Více

přetížení operátorů (o)

přetížení operátorů (o) přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - deklarace pomocí funkčního

Více

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu: Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury

Více

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu StatSoft Typy souborů ve STATISTICA Tento článek poslouží jako přehled hlavních typů souborů v programu STATISTICA, ukáže Vám jejich možnosti a tím Vám dovolí využívat program efektivněji. Jistě jste již

Více

Programovací jazyk Pascal

Programovací jazyk Pascal Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce

Více

1 Strukturované programování

1 Strukturované programování Projekt OP VK Inovace studijních oborů zajišťovaných katedrami PřF UHK Registrační číslo: CZ.1.07/2.2.00/28.0118 1 Cíl Seznámení s principy strukturovaného programování, s blokovou strukturou programů,

Více

Profilová část maturitní zkoušky 2013/2014

Profilová část maturitní zkoušky 2013/2014 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2013/2014 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA

Více

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML ROZHRANÍ ESA XML Ing. Richard Vondráček SCIA CZ, s. r. o., Thákurova 3, 160 00 Praha 6 www.scia.cz 1 OTEVŘENÝ FORMÁT Jednou z mnoha užitečných vlastností programu ESA PT je podpora otevřeného rozhraní

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

Vyřešené teoretické otázky do OOP ( )

Vyřešené teoretické otázky do OOP ( ) Vyřešené teoretické otázky do OOP (16. 1. 2013) 1) Vyjmenujte v historickém pořadí hlavní programovací paradigmata a stručně charakterizujte každé paradigma. a) Naivní chaotičnost, špatná syntaxe a sémantika

Více

Komunikace s automaty MICROPEL. správa systému lokální a vzdálený přístup do systému vizualizace, umístění souborů vizualizace

Komunikace s automaty MICROPEL. správa systému lokální a vzdálený přístup do systému vizualizace, umístění souborů vizualizace Komunikace s automaty MICROPEL správa systému lokální a vzdálený přístup do systému vizualizace, umístění souborů vizualizace MICROPEL 02/2014 Základní správu automatu tvoří činnosti: Nastavení základních

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

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. 2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. GEOVAP, spol. s r. o. Čechovo nábřeží 1790 530 03 Pardubice Česká republika +420 466 024 618 http://www.geovap.cz V dokumentu použité názvy programových

Více

Program a životní cyklus programu

Program a životní cyklus programu Program a životní cyklus programu Program algoritmus zapsaný formálně, srozumitelně pro počítač program se skládá z elementárních kroků Elementární kroky mohou být: instrukce operačního kódu počítače příkazy

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

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda 1. Lze vždy z tzv. instanční třídy vytvořit objekt? 2. Co je nejčastější příčinou vzniku chyb? A. Specifikace B. Testování C. Návrh D. Analýza E. Kódování 3. Je defenzivní programování technikou skrývání

Více

Algoritmizace. 1. Úvod. Algoritmus

Algoritmizace. 1. Úvod. Algoritmus 1. Úvod Algoritmizace V dnešní době již počítače pronikly snad do všech oblastí lidské činnosti, využívají se k řešení nejrůznějších úkolů. Postup, který je v počítači prováděn nějakým programem se nazývá

Více

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

01. HODINA. 1.1 Spuštění programu VB 2010. 1.2 Prvky integrovaného vývojového prostředí. - pomocí ikony, z menu Start. 01. HODINA 1.1 Spuštění programu VB 2010 - pomocí ikony, z menu Start. - po spuštění si můžeme vybrat, zda chceme vytvořit nový Projekt a jaký nebo zda chceme otevřít již existující Projekt. 1.2 Prvky

Více

RELAČNÍ DATABÁZE ACCESS

RELAČNÍ DATABÁZE ACCESS RELAČNÍ DATABÁZE ACCESS 1. Úvod... 2 2. Základní pojmy... 3 3. Vytvoření databáze... 5 4. Základní objekty databáze... 6 5. Návrhové zobrazení tabulky... 7 6. Vytváření tabulek... 7 6.1. Vytvoření tabulky

Více

Pro označení disku se používají písmena velké abecedy, za nimiž následuje dvojtečka.

Pro označení disku se používají písmena velké abecedy, za nimiž následuje dvojtečka. 1 Disky, adresáře (složky) a soubory Disky Pro označení disku se používají písmena velké abecedy, za nimiž následuje dvojtečka. A:, B: C:, D:, E:, F: až Z: - označení disketových mechanik - ostatní disky

Více

VISUAL BASIC. Přehled témat

VISUAL BASIC. Přehled témat VISUAL BASIC Přehled témat 1 ÚVOD DO PROGRAMOVÁNÍ Co je to program? Kuchařský předpis, scénář k filmu,... Program posloupnost instrukcí Běh programu: postupné plnění instrukcí zpracovávání vstupních dat

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

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. 2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. GEOVAP, spol. s r. o. Čechovo nábřeží 1790 530 03 Pardubice Česká republika +420 466 024 618 http://www.geovap.cz V dokumentu použité názvy programových

Více

Příloha 6. Palety nástrojů

Příloha 6. Palety nástrojů Příloha 6. Palety nástrojů Palety nástrojů v IDE poskytují zkrácení pro příkazy nabídky. Příkazy jsou rozděleny do několika palet nástrojů, které mohou být nezávisle přeskupeny nebo vloženy do plovoucích

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

ANOTACE vytvořených/inovovaných materiálů

ANOTACE vytvořených/inovovaných materiálů ANOTACE vytvořených/inovovaných materiálů Číslo projektu Číslo a název šablony klíčové aktivity Tematická oblast Formát Druh učebního materiálu Druh interaktivity CZ.1.07/1.5.00/34.0722 III/2 Inovace a

Více

8.2 Používání a tvorba databází

8.2 Používání a tvorba databází 8.2 Používání a tvorba databází Slide 1 8.2.1 Základní pojmy z oblasti relačních databází Slide 2 Databáze ~ Evidence lidí peněz věcí... výběry, výpisy, početní úkony Slide 3 Pojmy tabulka, pole, záznam

Více

ČESKÉ VYSOKÉ UČENÍ TECHNIKÉ Fakulta elektrotechnická. Microsoft Sharepoint 2007 Workflows Průmyslové informační systémy

ČESKÉ VYSOKÉ UČENÍ TECHNIKÉ Fakulta elektrotechnická. Microsoft Sharepoint 2007 Workflows Průmyslové informační systémy ČESKÉ VYSOKÉ UČENÍ TECHNIKÉ Fakulta elektrotechnická Microsoft Sharepoint 2007 Workflows Průmyslové informační systémy Bc. Petr Pokorný Letní semestr 2009/2010 1 Obsah 1 Úvod... 3 2 Workflow... 3 3 Workflow

Více

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox 02. HODINA Obsah: 1. Typy souborů a objektů 2. Ovládací prvky Label a TextBox 3. Základní příkazy a vlastnosti ovládacích prvků 4. Práce s objekty (ovládací prvky a jejich vlastnosti) 2.1 Typy souborů

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

27 Evidence kasiček. Popis modulu. Záložka Organizované sbírky

27 Evidence kasiček. Popis modulu. Záložka Organizované sbírky 27 Evidence kasiček Uživatelský modul Evidence kasiček realizuje evidenci všech pořádaných sbírek, jednotlivých kasiček sbírky, dále pak evidenci výběrů kasiček s návazností na pokladnu (příjem výběru

Více

Tvorba kurzu v LMS Moodle

Tvorba kurzu v LMS Moodle Tvorba kurzu v LMS Moodle Před počátkem práce na tvorbě základního kurzu znovu připomínám, že pro vytvoření kurzu musí být profil uživatele nastaven administrátorem systému minimálně na hodnotu tvůrce

Více

Windows Server 2003 Active Directory

Windows Server 2003 Active Directory Windows Server 2003 Active Directory Active Directory ukládá informace o počítačích, uživatelích a ostatních objektech v síti. Zpřístupňuje tyto zdroje uživatelům. Poskytuje komplexní informace o organizaci,

Více

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Předmět: Vývoj aplikací Téma: Visual Studio Vyučující: Ing. Milan Káža Třída: EK3 Hodina: 19,2 Číslo: V/5 Programování

Více

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25 Programování v C# Úvodní slovo 1 / 25 Obsah přednášky Seznámení s předmětem Co je.net Vlastnosti.NET 2 / 25 Kdo je kdo Petr Vaněček vanecek@pf.jcu.cz J 502 Václav Novák vacnovak@pf.jcu.cz?? Při komunikaci

Více

Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací.

Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací. Trochu teorie Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací. Každá spuštěná aplikace má alespoň jeden proces

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

Reliance 3 design OBSAH

Reliance 3 design OBSAH Reliance 3 design Obsah OBSAH 1. První kroky... 3 1.1 Úvod... 3 1.2 Založení nového projektu... 4 1.3 Tvorba projektu... 6 1.3.1 Správce stanic definice stanic, proměnných, stavových hlášení a komunikačních

Více

Vzorce. Suma. Tvorba vzorce napsáním. Tvorba vzorců průvodcem

Vzorce. Suma. Tvorba vzorce napsáním. Tvorba vzorců průvodcem Vzorce Vzorce v Excelu lze zadávat dvěma způsoby. Buď známe přesný zápis vzorce a přímo ho do buňky napíšeme, nebo použijeme takzvaného průvodce při tvorbě vzorce (zejména u složitějších funkcí). Tvorba

Více

ČÁST 1. Základy 32bitového programování ve Windows

ČÁST 1. Základy 32bitového programování ve Windows Obsah Úvod 13 ČÁST 1 Základy 32bitového programování ve Windows Kapitola 1 Nástroje pro programování ve Windows 19 První program v Assembleru a jeho kompilace 19 Objektové soubory 23 Direktiva INVOKE 25

Více

PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ verze. 3.00.01.09 Kontakty 08/2010. 1 Obsah

PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ verze. 3.00.01.09 Kontakty 08/2010. 1 Obsah 1 Obsah 1 Obsah... 1 2 Úvod a spouštění SW Palstat CAQ... 2 2.1.1 Návaznost na další SW moduly Palstat CAQ... 2 2.2 Přihlášení do programu... 2 2.2.1 Stanovení přístupu a práv uživatele... 2 2.2.2 Spuštění

Více

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER váš partner na cestě od dat k informacím globtech spol. s r.o. karlovo náměstí 17 c, praha 2 tel.: +420 221 986 390 info@globtech.cz

Více

BALISTICKÝ MĚŘICÍ SYSTÉM

BALISTICKÝ MĚŘICÍ SYSTÉM BALISTICKÝ MĚŘICÍ SYSTÉM UŽIVATELSKÁ PŘÍRUČKA Verze 2.3 2007 OBSAH 1. ÚVOD... 5 2. HLAVNÍ OKNO... 6 3. MENU... 7 3.1 Soubor... 7 3.2 Měření...11 3.3 Zařízení...16 3.4 Graf...17 3.5 Pohled...17 1. ÚVOD

Více

Obsah. 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody

Obsah. 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody Obsah 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody 3) 4) Mantichora Mantichora je moderní aplikace, který

Více

Systémové elektrické instalace KNX/EIB (16. část) Ing. Josef Kunc

Systémové elektrické instalace KNX/EIB (16. část) Ing. Josef Kunc Systémové elektrické instalace KNX/EIB (16. část) Ing. Josef Kunc Projektování systémové elektrické instalace KNX/EIB nastavení ETS a komunikace Dříve, než zahájíme vlastní projektovou činnost, je vhodné

Více

NPRG030 Programování I, 2015/16 1 / :25:32

NPRG030 Programování I, 2015/16 1 / :25:32 NPRG030 Programování I, 2015/16 1 / 21 22. 10. 2015 13:25:32 Podprogramy Příklad: Vytiskněte tabulku malé násobilky ve tvaru XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X X 1 2 3 4 5 6 7 8 9 10 X

Více

ROZDÍL MEZI VZTAHEM EXTEND A INCLUDE V USE CASE DIAGRAMECH

ROZDÍL MEZI VZTAHEM EXTEND A INCLUDE V USE CASE DIAGRAMECH ROZDÍL MEZI VZTAHEM EXTEND A INCLUDE V USE CASE DIAGRAMECH 3. část RNDr. Ilja Kraval, srpen 2009 http://www.objects.cz ÚVOD Tento článek je pokračováním předešlých článků. Článek vysvětluje použití vztahu

Více

Postupy práce se šablonami IS MPP

Postupy práce se šablonami IS MPP Postupy práce se šablonami IS MPP Modul plánování a přezkoumávání, verze 1.20 vypracovala společnost ASD Software, s.r.o. dokument ze dne 27. 3. 2013, verze 1.01 Postupy práce se šablonami IS MPP Modul

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

Program pro tvorbu technických výpočtů. VIKLAN - Výpočty. Uživatelská příručka. pro seznámení se základními možnostmi programu. Ing.

Program pro tvorbu technických výpočtů. VIKLAN - Výpočty. Uživatelská příručka. pro seznámení se základními možnostmi programu. Ing. Program pro tvorbu technických výpočtů VIKLAN - Výpočty Uživatelská příručka pro seznámení se základními možnostmi programu Ing. Josef Spilka VIKLAN - Výpočty Verse 1.10.5.1 Copyright 2010 Ing. Josef Spilka.

Více

Evidence požadavků uživatelů bytů a nebytových prostor

Evidence požadavků uživatelů bytů a nebytových prostor Evidence požadavků uživatelů bytů a nebytových prostor Úvod Pro zjednodušení a zprůhlednění Vaší komunikace se správní firmou (dále jen SF ), která má na starost objekt, v němž se nachází bytový či nebytový

Více

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem. Algoritmus Algoritmus je schematický postup pro řešení určitého druhu problémů, který je prováděn pomocí konečného množství přesně definovaných kroků. nebo Algoritmus lze definovat jako jednoznačně určenou

Více

Seznámení s prostředím dot.net Framework

Seznámení s prostředím dot.net Framework Základy programování v jazyce C# Seznámení s prostředím dot.net Framework PL-Prostředí dot.net - NET Framework Je základním stavebním prvkem, na kterém lze vytvářet software. Jeho součásti a jádro je založené

Více

Programujeme v softwaru Statistica - příklady

Programujeme v softwaru Statistica - příklady Programujeme v softwaru Statistica - příklady Newsletter Statistica ACADEMY Téma: Programování, makra, skripty Typ článku: Návody, příklady V předchozích článcích bylo vyřčeno mnoho teorie k problematice

Více

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ M. Sysel, I. Pomykacz Univerzita Tomáše Bati ve Zlíně, Fakulta aplikované informatiky Nad Stráněmi 4511, 760 05 Zlín, Česká republika

Více

Simluátor Trilobota. (projekt do předmětu ROB)

Simluátor Trilobota. (projekt do předmětu ROB) Simluátor Trilobota (projekt do předmětu ROB) Kamil Dudka Jakub Filák xdudka00 xfilak01 BRNO 2008 1 Úvod Jako školní týmový projekt jsme si zvolili simulátor trilobota 1 a jeho prostředí. Simulátor komunikuje

Více

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu / Druh CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT

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ápočtová úloha z předmětu KIV/ZSWI DOKUMENT SPECIFIKACE POŽADAVKŮ

Zápočtová úloha z předmětu KIV/ZSWI DOKUMENT SPECIFIKACE POŽADAVKŮ Zápočtová úloha z předmětu KIV/ZSWI DOKUMENT SPECIFIKACE POŽADAVKŮ 10. 5. 2011 Tým: Simplesoft Členové: Zdeněk Malík Jan Rada Ladislav Račák Václav Král Marta Pechová malikz@students.zcu.cz jrada1@students.zcu.cz

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

Projekt Obrázek strana 135

Projekt Obrázek strana 135 Projekt Obrázek strana 135 14. Projekt Obrázek 14.1. Základní popis, zadání úkolu Pracujeme na projektu Obrázek, který je ke stažení na http://java.vse.cz/. Po otevření v BlueJ vytvoříme instanci třídy

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

1 Tabulky Příklad 3 Access 2010

1 Tabulky Příklad 3 Access 2010 TÉMA: Vytvoření tabulky v návrhovém zobrazení Pro společnost Naše zahrada je třeba vytvořit databázi pro evidenci objednávek o konkrétní struktuře tabulek. Do databáze je potřeba ještě přidat tabulku Platby,

Více

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná. Průběžná klasifikace Nová verze modulu Klasifikace žáků přináší novinky především v práci s průběžnou klasifikací. Pro zadání průběžné klasifikace ve třídě doposud existovaly 3 funkce Průběžná klasifikace,

Více

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech 7 Formátovaný výstup, třídy, objekty, pole, chyby v programech 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 formátovanému výstupu,

Více

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky Otázka 20 A7B36DBS Zadání... 1 Slovníček pojmů... 1 Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky... 1 Zadání Relační DB struktury sloužící k optimalizaci

Více

Nastavení DCOM. Uživatelský manuál

Nastavení DCOM. Uživatelský manuál Nastavení DCOM Uživatelský manuál Obsah Úvod... 2 Nastavení DCOM pro počítač Hostitel... 3 Operační systém Windows XP... 3 Nastavení vlastností DCOM na Windows XP... 3 Rozšířená nastavení DCOM na Windows

Více

BRICSCAD V15. Licencování

BRICSCAD V15. Licencování BRICSCAD V15 Licencování Protea spol. s r.o. Makovského 1339/16 236 00 Praha 6 - Řepy tel.: 235 316 232, 235 316 237 fax: 235 316 038 e-mail: obchod@protea.cz web: www.protea.cz Copyright Protea spol.

Více

Pravidla a plánování

Pravidla a plánování Administrátorský manuál TTC TELEKOMUNIKACE, s.r.o. Třebohostická 987/5 100 00 Praha 10 tel.: 234 052 111 fax.: 234 052 999 e-mail: ttc@ttc.cz http://www.ttc-telekomunikace.cz Datum vydání: 7. května 2013

Více

Delphi - objektově orientované

Delphi - objektově orientované Kapitola 6 Delphi - objektově orientované programování Objektově orientované programování (zkracováno na OOP, z anglického Object oriented programming) je metodika vývoje softwaru, založená na těchto myšlenkách,

Více

Dolování v objektových datech. Ivana Rudolfová

Dolování v objektových datech. Ivana Rudolfová Dolování v objektových datech Ivana Rudolfová Relační databáze - nevýhody První normální forma neumožňuje vyjádřit vztahy A je podtypem B nebo vytvořit struktury typu pole nebo množiny SQL omezení omezený

Více

Windows 10 (5. třída)

Windows 10 (5. třída) Windows 10 (5. třída) Pracovní plocha: takto vypadá Pracovní plocha u nás ve škole - pozadí Pracovní plochy - ikony na Pracovní ploše ikona Student 17 (se jménem přihlášeného uživatele) ikona Tento počítač

Více

PŘÍLOHA C Požadavky na Dokumentaci

PŘÍLOHA C Požadavky na Dokumentaci PŘÍLOHA C Požadavky na Dokumentaci Příloha C Požadavky na Dokumentaci Stránka 1 z 5 1. Obecné požadavky Dodavatel dokumentaci zpracuje a bude dokumentaci v celém rozsahu průběžně aktualizovat při každé

Více

Úvodem... 9 Kapitola 1 Karetních

Úvodem... 9 Kapitola 1 Karetních Úvodem... 9 Základní znalosti o programovacích jazycích...10 Jazyk C# a platforma.net...10 Visual C# 2010 Express...11 Instalace platformy.net 4.0 a Visual C# 2010 Express...11 Zdrojový kód aplikací...12

Více

Modul Zásoby IQ sestavy a jejich nastavení Materiál pro samostudium +1170

Modul Zásoby IQ sestavy a jejich nastavení Materiál pro samostudium +1170 Modul Zásoby IQ sestavy a jejich nastavení Materiál pro samostudium +1170 20.5.2014 Major Bohuslav, Ing. Datum tisku 20.5.2014 2 Modul Zásoby IQ sestavy a jejich nastavení Modul Zásoby IQ sestavy a jejich

Více

PHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette

PHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette Kapitola 1 PHP framework Nette 1.1 Úvod Zkratka PHP (z anglického PHP: Hypertext Preprocessor) označuje populární skriptovací jazyk primárně navržený pro vývoj webových aplikací. Jeho oblíbenost vyplývá

Více

Funkční objekty v C++.

Funkční objekty v C++. Funkční objekty v C++. Funkční objekt je instance třídy, která má jako svou veřejnou metodu operátor (), tedy operátor pro volání funkce. V dnešním článku si ukážeme jak zobecnit funkci, jak používat funkční

Více

Reporting. Ukazatele je možno definovat nad libovolnou tabulkou Helios Orange, která je zapsána v nadstavbě firmy SAPERTA v souboru tabulek:

Reporting. Ukazatele je možno definovat nad libovolnou tabulkou Helios Orange, která je zapsána v nadstavbě firmy SAPERTA v souboru tabulek: Finanční analýza Pojem finanční analýza Finanční analýza umožňuje načítat data podle dimenzí a tyto součty dlouhodobě vyhodnocovat. Pojem finanční analýza není nejpřesnější, protože ukazatele mohou být

Více

Zpráva o zhotoveném plnění

Zpráva o zhotoveném plnění Zpráva o zhotoveném plnění Aplikace byla vytvořena v souladu se Smlouvou a na základě průběžných konzultací s pověřenými pracovníky referátu Manuscriptorium. Toto je zpráva o zhotoveném plnění. Autor:

Více

Sada 1 - Základy programování

Sada 1 - Základy programování S třední škola stavební Jihlava Sada 1 - Základy programování 04. Datové typy, operace, logické operátory Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284

Více

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz Vývoj moderních technologií při vyhledávání Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz INFORUM 2007: 13. konference o profesionálních informačních zdrojích Praha, 22. - 24.5. 2007 Abstrakt Vzhledem

Více

Microsoft Visio 2013 vypadá jinak než ve starších verzích, proto jsme vytvořili tuto příručku, která vám pomůže se s ním rychle seznámit.

Microsoft Visio 2013 vypadá jinak než ve starších verzích, proto jsme vytvořili tuto příručku, která vám pomůže se s ním rychle seznámit. Úvodní příručka Microsoft Visio 2013 vypadá jinak než ve starších verzích, proto jsme vytvořili tuto příručku, která vám pomůže se s ním rychle seznámit. Aktualizované šablony Šablony vám pomáhají při

Více

Jak testovat software v praxi. aneb šetříme svůj vlastní čas

Jak testovat software v praxi. aneb šetříme svůj vlastní čas Jak testovat software v praxi aneb šetříme svůj vlastní čas Proč testy nepíšeme Nemáme na to čas Platí v cca 5% případů Nový projekt Prototyp je třeba mít během pár dní Počítá se s tím, že další verze

Více

45 Plánovací kalendář

45 Plánovací kalendář 45 Plánovací kalendář Modul Správa majetku slouží ke tvorbě obecných ročních plánů činností organizace. V rámci plánu je třeba definovat oblasti činností, tj. oblasti, ve kterých je možné plánovat. Každá

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

Vstupní požadavky, doporučení a metodické pokyny

Vstupní požadavky, doporučení a metodické pokyny Název modulu: Základy PHP Označení: C9 Stručná charakteristika modulu Modul je orientován na tvorbu dynamických stánek aktualizovaných podle kontextu volání. Jazyk PHP umožňuje velmi jednoduchým způsobem

Více

OPS Paralelní systémy, seznam pojmů, klasifikace

OPS Paralelní systémy, seznam pojmů, klasifikace Moorův zákon (polovina 60. let) : Výpočetní výkon a počet tranzistorů na jeden CPU chip integrovaného obvodu mikroprocesoru se každý jeden až dva roky zdvojnásobí; cena se zmenší na polovinu. Paralelismus

Více

Programujeme v softwaru Statistica

Programujeme v softwaru Statistica Programujeme v softwaru Statistica díl druhý Newsletter Statistica ACADEMY Téma: Programování, makra, skripty Typ článku: Návody V tomto článku si ukážeme další možnosti při psaní maker v softwaru Statistica.

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

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

Úvod do počítačových sítí Úvod do počítačových sítí Jméno a příjmení: Jan Tichava Osobní číslo: Studijní skupina: středa, 3 4 Obor: INIB INF E-mail: jtichava@students.zcu.cz Datum odevzdání: 19.12.06 Základní charakteristika Jednoduchá

Více

Překladač a jeho struktura

Překladač a jeho struktura Překladač a jeho struktura Překladače, přednáška č. 1 Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz http://fpf.slu.cz/ vav10ui Poslední aktualizace: 23. září 2008 Definice

Více