Verze : 226 NS, odstavců, slov, znaků, bajtů. Adventura. Rudolf Pecinovský 2015

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

Download "Verze 0.13.5299: 226 NS, 5 496 odstavců, 54 943 slov, 406 692 znaků, 2 052 608 bajtů. Adventura. Rudolf Pecinovský 2015"

Transkript

1 Verze : 226 NS, odstavců, slov, znaků, bajtů Návrh semestrálního projektu a jeho rámce Adventura Rudolf Pecinovský R_Adventura.doc verze , uloženo: ne :45 Strana 1 z 240

2 Rudolf Pecinovský Návrh semestrálního projektu a jeho rámce Adventura Copyright Grada Publishing a.s., 2015 V knize použité názvy mohou být ochrannými známkami nebo registrovanými ochrannými známkami příslušných vlastníků. Vydala Grada Publishing a.s. U Průhonu 22, Praha 7 jako svoji publikaci Návrh vnitřního layoutu Rudolf Pecinovský Zlom Rudolf Pecinovský Počet stran První vydání, Praha 2015 ISBN R_Adventura.doc verze , uloženo: ne :45 Strana 2 z 240

3 Všem, kteří se chtějí něco naučiti 49R_Adventura.doc verze , uloženo: ne :45 Strana 3 z 240

4 Stručný obsah Stručný obsah Stručný obsah... 4 Podrobný obsah... 5 Seznam programů Seznam obrázků Úvod Část I: Pro studenty Zadání projektu Začínáme testy Návrh správce scénářů konkrétní hry Návrh rámce pro hru Začínáme tvořit vlastní hru Vytváříme svět hry Vytvoření prvních povinných příkazů Definice společného rodiče kontejnerů objektů Definice nestandardních příkazů Realizace rozhovoru Definice uživatelského rozhraní Vylepšování architektury refaktorace Doporučení pro obhajobu Část II: Pro učitele a zkušenější studenty R_Adventura.doc verze , uloženo: ne :45 Strana 4 z 240

5 Podrobný obsah 5 Podrobný obsah Podrobný obsah Stručný obsah... 4 Podrobný obsah... 5 Seznam programů Seznam obrázků Úvod Komu je kniha určena Potřebné vybavení Použité konvence Odbočka Část I: Pro studenty Zadání projektu Koncepce hry Příklady her Shrnutí co jsme se naučili Začínáme testy Koncepce frameworku Jak testovat Programování řízené testy Jednotkové a integrační testy Možnosti testování naší hry Typ scénáře třída TypeOfScenario Kroky scénáře třída ScenarioStep Typ kroků scénáře třída TypeOfStep Třída ScenarioStep podrobněji Správce scénářů Spravované scénáře Jméno a ID autora Jak získat hru k testování Interfejs IGame Vytvoření správce Předání scénářů společnému rodiči Třída Scenario Diagram tříd balíčku scenario Interfejs IGSMFactory Návrh správce scénářů konkrétní hry Zadání, které budeme řešit Prázdný správce scénářů Import k odstranění R_Adventura.doc verze , uloženo: ne :45 Strana 5 z 240

6 6 Návrh semestrálního projektu a jeho rámce Adventura 3.3 Jednoduchý správce využívající literály Počáteční krok Pokračovací kroky Přechod mezi scénáři Základní chybový scénář Konstruktor Hlavní metoda Trochu chytřejší správce Definice třídy Texts Definice správce scénářů využívající konstanty Úkol Náměty Co jsme prozatím naprogramovali Návrh rámce pro hru Koncepce rámce hry Objekty vystupující ve hře Zadání Definice použitých interfejsů Hra IGame Svět IWorld Prostor ISpace Příkaz ICommand Přechod Objekt IObject Hráč Batoh IBag Úkol, cíl Množství, kapacita Upřesnění návrhu rámce ICommand IBag IObject ISpace IWorld IGame Doplnění společných rodičů Pojmenované objekty Kontejnery objektů Doplnění uživatelského rozhraní Diagram tříd balíčku game_txt Diagram tříd v balíčku empty_classes Začínáme tvořit vlastní hru Výběr metody návrhu Začínáme s třídou hry Pokračujeme v testech Kdo má mít na starosti zpracování příkazů Tři skupiny programů Jak jsou na tom příkazy? Definice správce příkazů Úprava definice konstruktoru Vytvoření jednotlivých příkazů Úprava metody execute(string) ve třídě hry Definice metody pro provádění příkazů Dva režimy zpracování příkazů Metoda isalive() ve třídě hry R_Adventura.doc verze , uloženo: ne :45 Strana 6 z 240

7 Podrobný obsah 7 Metoda isalive() ve správci příkazů Definice metody execute(string) Metoda pro spuštění hry startgame(string) Metoda pro pracování běžného příkazu executecommoncomand(string) Rozdělení příkazového řádku na slova Převedení počátečního slova na příkaz Prozatímní podoba definice třídy ACommand Co jsme prozatím naprogramovali Vytváříme svět hry Analýza chybového hlášení Svět hry jako správce prostor hry Vytvoření třídy světa hry Apartment Definice metody getallareas() Třída prostorů hry Room Konstruktor místnosti Metoda getname() Metoda getneighbors() Metoda getobjects() Třída objektů v prostorech Thing Váha, přenositelnost Zveřejnění příznaků Vlastní definice Dokončení definice třídy Room Dokončení definice třídy Apartment Metoda getallareas() Doplnění konstruktoru Metoda getcurrentarea() Test Úprava informací o stavu hry Úvahy o inicializaci prostorů Realizace inicializace prostorů Inicializace ve třídě ACommand Inicializace ve třídě Apartment Inicializace instancí třídy Room Test Doplnění batohu Metoda getcapacity() Metody getobjects() a initialize() Metoda getbag() ve třídě hry Test Co jsme prozatím naprogramovali Vytvoření prvních povinných příkazů Jak sjednotit postup pro většinu her Definice nového scénáře Úprava definice konstruktoru Úprava definice metody main(string[]) Definice příkazu pro nápovědu Zkopírování kostry třídy Rodičovská třída Metoda execute(string...) Test Doplnění těla metody getallcommands() ve třídě hry Doplnění těla metody getallcommands() ve třídě správce příkazů R_Adventura.doc verze , uloženo: ne :45 Strana 7 z 240

8 8 Návrh semestrálního projektu a jeho rámce Adventura Test Definice příkazu pro přesun z aktuálního prostoru do zadaného sousedního prostoru Metoda execute(string...) Existence parametru Korektnost parametru Přesun do cílového prostoru Test Definice příkazu pro zvednutí objektu v aktuálním prostoru a jeho přemístění do batohu Existence parametru Korektnost parametru Principy další práce příkazu Úpravy definice třídy prostorů Úpravy definice třídy batohu Definice metody execute(string...) definovaného příkazu Test Co jsme prozatím naprogramovali Definice společného rodiče kontejnerů objektů Definice příkazu pro položení objektu Co bychom mohli do společného předka vytknout Definice společného předka kontejnerů objektů Metoda getobjects() Metody getobject(string) a removeobject(thing) Zpětné nastavení atributu objects na private Metoda tryaddobject(thing) Inicializace objektů Názvy metod Nastavení kapacity Inicializace kolekce objects Příkaz pro pokládání objektů CommandPutDown Test Příkaz k předčasnému ukončení hry CommandExit Test Prověření programu chybovým scénářem Doplnění reakce na prázdný příkaz Test Co jsme prozatím naprogramovali Definice nestandardních příkazů Změna testu Definice příkazu pro otevření ledničky Definice třídy Flags Vytvoření třídy CommandOpen Definice metody execute(string...) Test existence parametru Test přítomnost otevíraného objektu Test otevíratelnosti zadaného objektu Dokončení definice Doplnění testu podloženost Test Oprava definice příkazu pro položení objektu Definice příkazu pro přečtení papíru Test existence parametru Test přítomnosti daného objektu v batohu R_Adventura.doc verze , uloženo: ne :45 Strana 8 z 240

9 Podrobný obsah 9 Test, zda je požadováno přečtení objektu, který lze opravdu přečíst Test nasazených brýlí Výsledná podoba metody Test Definice příkazu pro nasazení brýlí Test Definice příkazu pro podložení ledničky Test plnosti batohu Definice metody execute(string...) Test Co jsme prozatím naprogramovali Co jsme prozatím přeskočili Realizace rozhovoru Specifika rozhovoru Přepnutí do konverzačního režimu Zavedení příznaku prověřenosti Úprava metody execute(string...) ve třídě CommandPickUp Třída Conversation Metoda start(thing) Úprava metody executecommand(string) ve třídě ACommand Definice metody answer(string) ve třídě Conversation Stavy rozhovoru Reakce v závislosti na stavu Vlastní definice metody answer(string) Test Definice metody waitingfortheage(string) Test Definice metody waitingfortheyear(string) Test Příkaz pro zavření ledničky CommandCLose Test Co jsme prozatím naprogramovali Definice uživatelského rozhraní Co je třeba navrhnout Úprava rozdělení do balíčků Uživatelské rozhraní využívající služeb třídy javax.swing.joptionpane Definice metody startgame() Metody třídy JOptionPane Definice metody startgame(igame) Uživatelské rozhraní komunikující přes standardní vstup a výstup Nevýhody používání standardního vstupu a výstupu Třída java.util.scanner Vytvoření třídy pro konzolový vstup Zobecnění uvedených řešení Interfejs IGamePlayer Hlavní metoda umožňující volbu použitého rozhraní Výsledná definice třídy UIC_GamePlayer Další zobecnění uživatelského rozhraní Co jsme prozatím naprogramovali Vylepšování architektury refaktorace Co jsme prozatím naprogramovali Doporučení pro obhajobu R_Adventura.doc verze , uloženo: ne :45 Strana 9 z 240

10 10 Návrh semestrálního projektu a jeho rámce Adventura Shrnutí co jsme se naučili Část II: Pro učitele a zkušenější studenty R_Adventura.doc verze , uloženo: ne :45 Strana 10 z 240

11 Seznam programů 11 Seznam programů Seznam programů Výpis 2.1: Definice třídy TypeOfScenario Výpis 2.2: Výčtový typ TypeOfStep Výpis 2.3: Výchozí podoba třídy ScenarioStep Výpis 3.1: Výpis první části zdrojového kódu třídy ManagerWithLiterals až po definici prvních dvou kroků úspěšného (šťastného) scénáře Výpis 3.2: Výpis druhé části zdrojového kódu třídy ManagerWithLiterals od posledního kroku úspěšného (šťastného) scénáře až po definici prvních čtyř kroků Výpis 3.3: Výpis třetí části zdrojového kódu třídy ManagerWithLiterals obsahující deklaraci atributu s odkazem na jedináčka, tovární metody, konstruktoru a metody main(string[]) Výpis 3.4: Výpis autotestu správce scénářů Výpis 3.5: Definice třídy Texts definující jednotlivé textové konstanty Výpis 3.6: Definice prvních tří kroků úspěšného scénáře ve třídě Výpis 5.1: ManagerWithConstants Definice metod getauthorname(), getauthorid() a getscenariomanager() ve třídě hry Výpis 5.2: Definice metod isalive() ve třídě hry Výpis 5.3: Upravená definice konstruktoru instancí třídy ACommand Výpis 5.4: Definice metody execute(string) ve třídě OfficialApartmentGame Výpis 5.5: Upravená definice metody isalive() ve třídě OfficialApartmentGame Výpis 5.6: Prozatímní podoba definice třídy ACommand Výpis 6.1: Definice konstruktoru instancí třídy Room a jím inicializovaných atributů Výpis 6.2: Definice třídy Thing, jejíž instance představují objekty Výpis 6.3: Upravená definice konstruktoru instancí třídy Apartment Výpis 6.4: Upravená definice metody getcurrentarea() ve třídě Apartment Výpis 6.5: Upravená definice metody getworld() Výpis 6.6: Upravená definice metody startgame(string) spolu s metodou initialize() ve třídě ACommand Výpis 6.7: Definice metody initialize()ve třídě Apartment Výpis 6.8: Definice metod initialize(), initializeneighbors() a initializeobjects() ve třídě Room Výpis 6.9: Definice metody getroom(string) ve třídě Apartment Výpis 7.1: Definice pole REQUIRED_STEPS ve třídě OfficialApartmentManager Výpis 7.2: Upravená definice konstruktoru třídy OfficialApartmentManager Výpis 7.3: Upravená definice metody main(string[]) ve třídě OfficialApartmentManager Výpis 7.4: Definice konstruktoru instancí třídy CommandHelp Výpis 7.5: Definice metody execute(string...) ve třídě CommandHelp Výpis 7.6: Definice metody getallcommands() ve třídě OfficialApartmentGame R_Adventura.doc verze , uloženo: ne :45 Strana 11 z 240

12 12 Návrh semestrálního projektu a jeho rámce Adventura Výpis 7.7: Definice metody getallcommands() ve třídě ACommand Výpis 7.8: Upravená definice konstruktoru ve třídě CommandMove Výpis 7.9: Definice metody execute(string...) ve třídě CommandMove Výpis 7.10: Definice metod getobject(string) a removeobject(thing) ve třídě Room Výpis 7.11: Definice metody tryaddobject(thing) ve třídě Hands Výpis 7.12: Definice metody execute(string...) ve třídě CommandPickUp Výpis 8.1: Definice třídy ThingContainer Výpis 8.2: Definice metody execute(string...) ve třídě CommandPutDown Výpis 8.3: Definice metody execute(string...) ve třídě CommandExit Výpis 8.4: Definice metody executecommand(string) ve třídě ACommand Výpis 9.1: Upravená definice statické metody initialize() třídy ACommand Výpis 9.2: Předběžné podoba definice třídy Flags Výpis 9.3: Definice metody execute(string...) ve třídě CommandOpen Výpis 9.4: Definice metody execute(string...) ve třídě CommandRead Výpis 9.5: Definice metody execute(string...) ve třídě CommandPutOnGlasses Výpis 9.6: Definice metody isfull() instancí třídy ThingContainer Výpis 9.7: Definice metody execute(string...) instancí třídy CommandSupportIcebox Výpis 10.1: Upravená definice metody execute(string...) ve třídě CommandPickUp Výpis 10.2: Definice metody start(thing) ve třídě Conversation Výpis 10.3: Upravená definice metody executecommand ve třídě ACommand Výpis 10.4: Definice metody answer(string) ve třídě Conversation Výpis 10.5: Definice metody waitingfortheage(string) ve třídě Conversation Výpis 10.6: Definice metody waitingfortheyear(string) ve třídě Conversation Výpis 10.7: Definice metody execute(string...) instancí třídy CommandCLose Výpis 11.1: Definice metody startgame() ve třídě UIA_JOptionPane Výpis 11.2: Definice metody startgame(igame) ve třídě UIA_JOptionPane Výpis 11.3: Definice metody startgame(igame) ve třídě UIB_Scanner Výpis 11.4: Definice metody startgame(igame) ve třídě UIB_Scanner Výpis 11.5: Definice interfejsu IGamePlayer Výpis 11.6: Definice třídy UIC_GamePlayer Výpis 11.7: Definice třídy UID_Multiplayer Výpis 12.1: Definice Class Výpis 13.1: Definice Class R_Adventura.doc verze , uloženo: ne :45 Strana 12 z 240

13 Seznam obrázků 13 Seznam obrázků Seznam obrázků Obrázek 2.1 Jednoduchý diagram tříd balíčku scenario Obrázek 4.1 Jednoduchý diagram tříd balíčku game_txt Obrázek 4.2 Jednoduchý diagram tříd balíčku empty_classes Obrázek 5.1 Aktuální diagram tříd projektu poté, co byla definována kostra třídy a správce příkazů Obrázek 6.1 Aktuální diagram tříd projektu poté, co byly definovány třídy reprezentující svět hry a jeho části Obrázek 7.1 Aktuální diagram tříd projektu poté, co byly definovány třídy reprezentující první tři povinné příkazy hry Obrázek 8.1 Aktuální diagram tříd projektu poté, co byly definovány třídy reprezentující všechny povinné příkazy hry Obrázek 9.1 Aktuální diagram tříd projektu poté, co byly definovány třídy reprezentující nestandardní příkazy hry bez podpory rozhovoru Obrázek 10.1 Stavový diagram rozhovoru přechody mezi stavy v závislosti na odpovědi hráče Obrázek 10.2 Aktuální diagram tříd projektu poté, co byly definována třídy realizující podporu rozhovoru Obrázek 11.1 Dialogové okno s úvodní zprávou hry čekající na zadání příkazu Obrázek 11.2 Aktuální diagram tříd balíčku s doposud definovanými třídami řešícími textové uživatelské rozhraní Obrázek 12.1 Vlastní popis obrázku (pozor na počáteční tabulátor zachovat!) Obrázek 12.2 Aktuální diagram tříd projektu poté, co byly definovány třídy reprezentující nestandardní příkazy hry bez podpory rozhovoru Obrázek 13.1 Popis obrázku (pozor na počáteční tabulátor zachovat!) R_Adventura.doc verze , uloženo: ne :45 Strana 13 z 240

14 14 Návrh semestrálního projektu a jeho rámce Adventura Úvod Úvod Komu je kniha určena Tato kniha má sloužit jako doplněk mých učebnic zabývajících se architekturou objektově orientovaných programů. Je určena studentům úvodních kurzů programování, kteří připravují svůj semestrální projekt a nedokáží si správně zapamatovat vše, co jsme si na přednáškách či cvičeních řekli. Má proto sloužit jako podklad k zopakování si látky z hodiny. Kniha přepokládá, že čtenář zná základy objektově orientovaného programování na úrovni základního kurzu mohli bychom říci na úrovní probrané v učebnicích Java 7 Učebnice objektové architektury pro začátečníky Java 8 Úvod do objektové architektury pro mírně pokročilé Navazuje na ně a ukazuje čtenářům, jak postupovat při návrhu poněkud většího a komplexnějšího projektu, než jsou projekty probírané na hodinách. Současně jim má pomoci osvojit si práci s externími knihovnami a frameworky. Potřebné vybavení Pro úspěšné studium této knihy budete potřebovat dvě věci: dostatečně výkonný počítač, základní vývojovou sadu Javy. Pro úspěšný vývoj programů potřebujete ještě vhodný vývojový nástroj. Je zcela na vás, jaký nástroj zvolíte. Na hodinách používáme NetBeans a na ně se budu občas odkazovat i ve výkladu. Jejich použití ale není nezbytně nutné. Někteří studenti dávají přednost ověřenému a jednoduchému prostředí BlueJ, jiné použijí některý z dalších profesionálních prostředí Eclipse nebo INTELLIJ Idea. Použité konvence K tomu, abyste se v textu lépe vyznali a také abyste si vykládanou látku lépe zapamatovali, používám několik prostředků pro odlišení a zvýraznění textu. 49R_Adventura.doc verze , uloženo: ne :45 Strana 14 z 240

15 Úvod 15 Objekty Názvy Citace Adresy Program První výskyt nějakého termínu a další texty, které chci zvýraznit, vysazuji tučně. Názvy firem a jejích produktů vysazuji kurzivou. Kurzivou vysazuji také názvy kapitol, podkapitol a oddílů, na které se v textu odkazuji. Texty, které si můžete přečíst na displeji, např. názvy polí v dialogových oknech či názvy příkazů v nabídkách, vysazuji tučným bezpatkovým písmem. Názvy souborů a internetové adresy vysazuji obyčejným bezpatkovým písmem. Texty programů a jejich částí vysazuji neproporcionálním písmem. Kromě částí textu, které považuji za důležité zvýraznit nebo alespoň odlišit od okolního textu, najdete v textu ještě řadu doplňujících poznámek a vysvětlivek. Všechny budou v jednotném rámečku, který bude označen ikonou charakterizující druh informace, kterou vám chce poznámka či vysvětlivka předat. Symbol jin-jang bude uvozovat poznámky, s nimiž se setkáte na počátku každé kapitoly. Zde vám vždy prozradím, co se v dané kapitole naučíte. Otevřená schránka s dopisy označuje informace o projektu, s nímž budeme v dalším textu pracovat nebo v něm najdete vzorové řešení. Obrázek knihy označuje poznámku týkající se používané terminologie. Tato poznámka většinou upozorňuje na další používané termíny označující stejnou skutečnost nebo na konvence, které se k probírané problematice vztahují. Seznam všech terminologických poznámek najdete v rejstříku pod heslem terminologie. Obrázek počítače označuje zadání úkolu, který máte samostatně vypracovat. Seznam všech úloh najdete v rejstříku pod heslem úloha. Píšící ruka označuje obyčejnou poznámku, která pouze doplňuje informace z hlavního proudu výkladu o nějakou zajímavost. 49R_Adventura.doc verze , uloženo: ne :45 Strana 15 z 240

16 16 Návrh semestrálního projektu a jeho rámce Adventura Ruka s hrozícím prstem upozorňuje na věci, které byste měli určitě vědět a na které byste si měli dát pozor, protože jejich zanedbání vás většinou dostane do problémů. Usměváček vás bude upozorňovat na různé tipy, kterými můžete vylepšit svůj program nebo zefektivnit svoji práci. Mračoun vás naopak bude upozorňovat na různá úskalí programovacího jazyka nebo programů, s nimiž budeme pracovat, a bude vám radit, jak se těmto nástrahám vyhnout či jak to zařídit, aby vám alespoň pokud možno nevadily. Brýle označují tzv. poznámky pro šťouraly, ve kterých se vás snažím seznámit s některými zajímavými vlastnostmi probírané konstrukce nebo upozorňuji na některé souvislosti, avšak které nejsou k pochopení látky nezbytné. Symbol znamení raka označuje poznámku, ve které poukazuji na interpretaci nějakého obratu či konstrukce v nějaké analogii, nejčastěji v analogii ze světa robotů, kterou zavádím v podkapitole Chyba! Nenalezen zdroj odkazů. na straně Chyba! Záložka není definována.. Seznam odkazů na tuto analogii najdete v rejstříku pod heslem analogie. Odbočka Občas je potřeba vysvětlit něco, co nezapadá přímo do okolního textu. V takových případech používám podšeděný blok se silnou čarou po straně. Tento podšeděný blok je takovou drobnou odbočkou od ostatního výkladu. Nadpis podšeděného bloku pak najdete i v podrobném obsahu mezi nečíslovanými nadpisy. 49R_Adventura.doc verze , uloženo: ne :45 Strana 16 z 240

17 Část I: Pro studenty Část I: Pro studenty Tato část vám nejprve naznačí, jak je možno navrhnout koncepci rámce (frameworku) pro sadu aplikací realizujících konverzační hru, a pak předvede, jak je možno navrhnout hru, která bude odpovídat danému rámci. 49R_Adventura.doc verze , uloženo: ne :45 Strana 17 z 240

18 18 Návrh semestrálního projektu a jeho rámce Adventura 1. Zadání projektu Kapitola 1 Zadání projektu Co se v kapitole naučíme Tato kapitola je nejkratší kapitolou celé knihy. Zde si vysvětlíme zadání projektů, pro které v následujících kapitolách navrhneme společný rámec a následně vytvoříme jeden ukázkový projekt 1.1 Koncepce hry Vytvářenou aplikací bude jednoduchá konverzační hra, při níž se hráč snaží v konečném počtu kroků dostat k předem zadanému cíli. Vždy programu zadá textový příkaz naznačující, co má v daném okamžiku udělal, a program mu odpoví. V odpovědi hráči vysvětlí, v jaké situaci se po provedení této akce nachází, a případně mu naznačí, jaké jsou jeho další možnosti. Bude to tedy takový rozhovor anebo, chcete-li, textový pink-ponk: hráč pošle text příkazu, program vrátí text odpovědi. A tak stále kolem dokola, dokud hráč nedosáhne požadovaného cíle hry nebo dokud jej to nepřestane bavit. Hra přitom bude definována jako jedináček, který po ukončení jednoho běhu bude schopen opětného spuštění nového běhu hry, aniž by bylo třeba ukončovat program. Hra bude probíhat ve virtuálním světě, v němž existuje několik prostorů, které spolu zadaným způsobem sousedí. Těmito prostory mohou být místnosti v budově, části krajiny, planety, etapy života apod. Hra musí nabízet příkaz zprostředkující přechod z aktuálního prostoru do sousedního prostoru. Za sousední prostor přitom považujeme takový, do nějž lze jednoduše přejít. Je-li třeba nejprve splnit nějakou podmínku, stane se onen potenciálně sousední prostor skutečně sousedním až po splnění dané podmínky. Tyto podmínky mohou být různé: 49R_Adventura.doc verze , uloženo: ne :45 Strana 18 z 240

19 Kapitola 1: Zadání projektu 19 Jsou-li oněmi prostory místnosti v budově, může být potřeba nejprve odemknout spojovací dveře. Jsou-li oněmi prostory části krajiny, můžeme se na sousední louku za potokem dostat až poté, co postavíme most přes potok. Jsou-li oněmi prostory semestry vysoké školy, kterou máte za cíl absolvovat, musíte odemknout následující semestr třeba tak, že dojdete na studijní oddělení a ukážete index s absolvovanými předměty, aby vás mohli zapsat do dalšího semestru. V každém prostoru se mohou nacházet různé objekty. Některé z nich může hráč vzít, uložit je do pomyslného batohu, aby mu v budoucnu pomohly ke splnění nějakého pomocného úkolu nebo dokonce cíle celé hry. Hra musí proto nabízet příkaz, který přesune zadaný objekt z aktuálního prostoru (tj. prostoru, v němž se právě nachází hráč) do batohu a příkaz, který naopak přesune objekt z batohu do aktuálního prostoru. Množství objektů, které se do batohu vejdou, je však omezené. Příkaz pro přesun objektu z prostoru do batohu proto nesmí povolit překročení kapacity batohu. Navíc musí ve světě hry existovat objekty, které není možno zvednout a přemístit do batohu (okno, potok, studijní referentka, ). Příkaz pro zvednutí objektu proto nesmí umožnit uložit do batohu nezvednutelný objekt. Mezi objekty mohou (ale nemusejí) být i takové, s nimiž může hráč komunikovat a případně od nich získat informaci potřebnou ke zdárnému pokračování. Tyto objekty mohou být jak živé (trpaslík, kouzelný dědeček, ), tak neživé (robot, magnetofon, knížka, ). Mezi objekty v prostoru mohou (ale opět nemusejí) být i takové, které jsou za jistých okolností novým prostorem s jeho vlastními objekty. Takovýmto objektem-prostorem může být např. truhla, trezor, nalezený batoh apod. Tyto nestandardní prostory nemají žádné sousedy, a proto se do nich musíme přesunout nějakým nestandardním příkazem např. otevři truhla a zpět příkazem zavři trhula. Takovýmto prostorem může být např. i deska stolu. Do jejího prostoru se přesunete např. příkazem koukni_na_stůl. Pak uvidíte jenom objekty, které se na stole nacházejí, a některý z nich se vám může hodit. 1.2 Příklady her Na scénářích hry se pozná nápaditost studenta. Ti prostodušší volí hry na téma Probudil(a) jste se po těžkém flámu v neznámém bytě. Najděte svoje spodky a svršky a opusťte byt. Ti o trochu nápaditější vykrádají banky, utíkají z vězení. 49R_Adventura.doc verze , uloženo: ne :45 Strana 19 z 240

20 20 Návrh semestrálního projektu a jeho rámce Adventura Další vytvářejí hry na motivy pohádek (např. O kohoutkovi a slepičce nebo Červená karkulka) nebo známých knížek a televizních seriálů (Star track, Harry Potter, Červený trpaslík, Pán času, ). Občas se objeví hry s kuriózním námětem. Jeden student naprogramoval hru Život, ve které se hráč na startu narodí a prostory jsou jednotlivé životní etapy (nemluvně, školka, školák, středoškolák, ). Cílem hry je úspěšně umřít a do té doby zanechat hojné a dobře zaopatřené potomstvo. Jedna studentka naprogramovala hru představující studium na vysoké škole. Prostory byly jednotlivé semestry a k tomu, aby se další semestr sousedem stal aktuálního, musel hráč-student splnit jisté úkoly nasbírat potřebné objekty, kterými zde byly absolvované zkoušky. Jeden student vozíčkář naprogramoval hru, jejímž cílem bylo dostat se ráno z domova do školy, přičemž se na cestě objevovaly různé náhodné překážky (nefungující výtah do Metra, autobus nepřizpůsobený přepravě vozíčkářů, atd.). Díky náhodně se vyskytujícím překážkám se mohlo stát, že občas hra nešla úspěšně dohrát a hráč ten den do školy nedorazil. Jak vidíte, námětů je nepřeberné množství a je jenom na vaší fantazii, abyste vymysleli takový, aby vás návrh příslušného programu také trochu bavil. 1.3 Shrnutí co jsme se naučili V kapitole jste se seznámili s koncepcí hry, o jejímž návrhu si budeme povídat ve zbytku knihy 49R_Adventura.doc verze , uloženo: ne :45 Strana 20 z 240

21 Kapitola 2: Začínáme testy Začínáme testy Kapitola 2 Začínáme testy Co se v kapitole naučíme V této kapitole si ukážeme, co bychom měli dělat před tím, než začneme programovat vlastní hru. Zejména se soustředíme na přípravu testů, které budou prověřovat správnost vytvořených programů. Přitom budeme mít na mysli, že každý ze studentů ve třídě bude vyvíjet vlastní verzi hry, takže bychom měli testy připravit tak, aby co nejjednodušeji otestovali kteroukoliv z vyvíjených her. V průběhu kapitoly se vám budu snažit ukázat, jak můžete takovéto řešení navrhnout. Řada čtenářů má komplex z toho, že oni by to tak vymyslet nedokázali. Nenechte se tím zviklat. Všechno chce jistou zkušenost. Až budete zkušenější, nebudou vám takovéto konstrukce dělat problémy a dost možná, že byste nakonec dokázali požadované řešení navrhnout lépe než já. Snažte se jenom sledovat tok mých úvah a porozumět tomu, proč jsem se rozhodl použít prezentované řešení. Kdybyste náhodou ztratili nit, nezoufejte. Zkuste začít od závěrečného shrnutí toho, co by měl znát tvůrce hry, a časem se můžete k této analýze vrátit. 2.1 Koncepce frameworku Abych studentům umožnil se soustředit na vlastní návrh hry a nemuseli se rozptylovat některými pomocnými činnostmi a abych jim (a s nimi i sobě) umožnil co nejsnadněji kontrolovat dodržení všech požadavků, vytvořil jsem speciální framework, který obsahuje řadu datových typů zjednodušujících návrh programu i jeho následné testování a vyhodnocení korektnosti jeho návrhu. 49R_Adventura.doc verze , uloženo: ne :45 Strana 21 z 240

OOP. Verze : 365 NS, odstavců, slov, znaků, bajtů. a Java 8

OOP. Verze : 365 NS, odstavců, slov, znaků, bajtů. a Java 8 Verze 15.57.5745 2015-10-24: 365 NS, 8 253 odstavců, 89 019 slov, 657 239 znaků, 2 963 968 bajtů OOP a Java 8 Návrh a vývoj složitějšího projektu vyhovujícího zadanému rámci Rudolf Pecinovský 49R_Adventura_TXT_ZLOM.doc

Více

OOP. Verze : 365 NS, odstavců, slov, znaků, bajtů. a Java 8

OOP. Verze : 365 NS, odstavců, slov, znaků, bajtů. a Java 8 Verze 15.58.5826 2015-11-21: 365 NS, 8 252 odstavců, 89 011 slov, 657 168 znaků, 2 924 032 bajtů OOP a Java 8 Návrh a vývoj složitějšího projektu vyhovujícího zadanému rámci Rudolf Pecinovský 49R_Adventura_TXT.doc

Více

Metodika. Architecture First. Rudolf Pecinovský rudolf@pecinovsky.cz

Metodika. Architecture First. Rudolf Pecinovský rudolf@pecinovsky.cz Copyright Rudolf Pecinovský, Soubor: 2014_Comm_PrW_Architecture First Methodology.doc, verze 1.00.2413, uloženo po 9.6.2014 14:43 1 z 39 Metodika Architecture First Rudolf Pecinovský rudolf@pecinovsky.cz

Více

Vaše jistota na trhu IT. Balíčky. Rudolf Pecinovský rudolf@pecinovsky.cz

Vaše jistota na trhu IT. Balíčky. Rudolf Pecinovský rudolf@pecinovsky.cz Vaše jistota na trhu IT Balíčky Rudolf Pecinovský rudolf@pecinovsky.cz Problémy velkých aplikací Rozsáhlé aplikace používají velké množství názvů objektů a jejich zpráv, které různé části programu sdílí

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

Kolekce ArrayList. Deklarace proměnných. Import. Vytvoření prázdné kolekce. napsal Pajclín

Kolekce ArrayList. Deklarace proměnných. Import. Vytvoření prázdné kolekce. napsal Pajclín Kolekce ArrayList napsal Pajclín Tento článek jsem se rozhodl věnovat kolekci ArrayList, protože je to jedna z nejpoužívanějších. Tento článek není kompletním popisem třídy ArrayList, ale budu se snažit

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

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

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

Více

Generátor kódu. a jeho uplatnění ve výuce programování. Rudolf PECINOVSKÝ rudolf@pecinovsky.cz

Generátor kódu. a jeho uplatnění ve výuce programování. Rudolf PECINOVSKÝ rudolf@pecinovsky.cz Generátor kódu a jeho uplatnění ve výuce programování Rudolf PECINOVSKÝ rudolf@pecinovsky.cz Trendy poslední doby Další a další státy si uvědomují nutnost zařazení výuky programování do učiva základních

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

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

ČÁST 1. Zahřívací kolo. Co je a k čemu je návrhový vzor 33

ČÁST 1. Zahřívací kolo. Co je a k čemu je návrhový vzor 33 Stručný obsah Část 1: Zahřívací kolo Kapitola 1 Co je a k čemu je návrhový vzor 33 Kapitola 2 Zásady objektově orientovaného programování 39 Kapitola 3 Co konstruktor neumí (Jednoduchá tovární metoda Simple

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

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

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

MS Excel makra a VBA

MS Excel makra a VBA Autor: RNDr. Obsah: MS Excel makra a VBA 1 Využití, ukázky, výhody a nevýhody... 2 2 Makra a zabezpečení... 2 2.1 Nastavení zabezpečení Excelu... 2 2.2 Uložení maker do sešitu a osobního sešitu maker...

Více

Quo vadis programování? Automatizace vyhodnocování studentských úloh

Quo vadis programování? Automatizace vyhodnocování studentských úloh Vaše jistota na trhu IT Quo vadis programování? Automatizace vyhodnocování studentských úloh Rudolf PECINOVSKÝ rudolf@pecinovsky.cz Vladimír Oraný vladimir.orany@gmail.com Vaše jistota na trhu IT Obsah

Více

15. Projekt Kalkulačka

15. Projekt Kalkulačka Projekt Kalkulačka strana 143 15. Projekt Kalkulačka 15.1. Základní popis, zadání úkolu Pracujeme na projektu Kalkulačka, který je ke stažení na java.vse.cz. Po otevření v BlueJ vytvoříme instanci třídy

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

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

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

MS Word 2007 Šablony programu MS Word

MS Word 2007 Šablony programu MS Word MS Word 2007 Šablony programu MS Word Obsah kapitoly V této kapitole se seznámíme s: Možností využití šablon při vytváření nových dokumentů Vytvářením vlastních šablon Studijní cíle Po absolvování této

Více

Obsah. Zpracoval:

Obsah. Zpracoval: Zpracoval: houzvjir@fel.cvut.cz 03. Modelem řízený vývoj. Doménový (business), konceptuální (analytický) a logický (návrhový) model. Vize projektu. (A7B36SIN) Obsah Modelem řízený vývoj... 2 Cíl MDD, proč

Více

Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března

Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března Polymorfismus Cíle lekce Cílem lekce je vysvětlit význam pojmu polymorfismus jako základní vlastnosti objektově orientovaného programování. Lekce objasňuje vztah časné a pozdní vazby a jejich využití.

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

INSTALACE PRODUKTU ONTOPIA KNOWLEDGE SUITE

INSTALACE PRODUKTU ONTOPIA KNOWLEDGE SUITE INSTALACE PRODUKTU ONTOPIA KNOWLEDGE SUITE profesionální verze 1 Obsah Požadavky... 3 Instalace... 3 Proměnná CLASSPATH... 3 Zpřístupnění licenčního klíče... 3 Ověřování komponent OKS. 3 Spouštíme aplikaci

Více

Vývoj a ověřování metodiky výuky programování

Vývoj a ověřování metodiky výuky programování Copyright Rudolf Pecinovský, Soubor: 2016_INF_Architecture First.doc, verze 1.00.2413, uloženo út 19.1.2016 10:03 1 z 11 Vývoj a ověřování metodiky výuky programování Rudolf Pecinovský Informatika XXIX

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

[BAL-MLP] Multiplayer

[BAL-MLP] Multiplayer České vysoké učení technické v Praze Fakulta elektrotechnická Semestrální práce D2 předmětu A7B39PDA [BAL-MLP] Multiplayer Tomáš Kozák (další členové týmu: Tomáš Bruštík, Jaroslav Havelík) LS 2012/2013

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

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

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

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth Evropský sociální fond. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace Ing. Ondřej Guth Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze

Více

Ukázka knihy z internetového knihkupectví www.kosmas.cz

Ukázka knihy z internetového knihkupectví www.kosmas.cz Ukázka knihy z internetového knihkupectví www.kosmas.cz U k á z k a k n i h y z i n t e r n e t o v é h o k n i h k u p e c t v í w w w. k o s m a s. c z, U I D : K O S 1 8 0 5 8 4 U k á z k a k n i h

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

19. Projekt Adventura

19. Projekt Adventura Projekt Adventura strana 189 19. Projekt Adventura 19.1. Základní popis, zadání úkolu Pracujeme na projektu Adventura, který je ke stažení na java.vse.cz. Po otevření v BlueJ vytvoříme instanci třídy Hra.

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

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

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo Statické proměnné a metody Tomáš Pitner, upravil Marek Šabo Úvod Se statickou metodou jsme se setkali už u úplně prvního programu - Hello, world! public class Demo { public static void main(string[] args)

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

8 Třídy, objekty, metody, předávání argumentů metod

8 Třídy, objekty, metody, předávání argumentů metod 8 Třídy, objekty, metody, předávání argumentů metod 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 třídám a objektům, instančním

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

Základy HTML. Autor: Palito

Základy HTML. Autor: Palito Základy HTML Autor: Palito Zobrazení zdrojového kódu Zobrazení zdrojového kódu Každá stránka je na disku nebo na serveru uložena ve formě zdrojového kódu. Ten kód je psaný v jazyce HTML. Když si chcete

Více

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání Čtvrtek 3. listopadu Makra v Excelu Obecná definice makra: Podle definice je makro strukturovanou definicí jedné nebo několika akcí, které chceme, aby MS Excel vykonal jako odezvu na nějakou námi definovanou

Více

Objektově orientované programování v jazyce Python

Objektově orientované programování v jazyce Python Objektově orientované programování v jazyce Python Co to je objektově orientované programování Python není přímo objektově orientovaný jazyk, ale podporuje nejdůležitější části objektově orientovaného

Více

Multimediální prezentace MS PowerPoint I

Multimediální prezentace MS PowerPoint I Multimediální prezentace MS PowerPoint I Informatika Multimediální prezentace zažívají v poslední době obrovský rozmach. Jsou používány například k reklamním účelům, k předvedení výrobků či služeb. Velmi

Více

Práce se styly 1. Styl

Práce se styly 1. Styl Práce se styly 1. Styl Styl se používá, pokud chceme, aby dokument měl jednotný vzhled odstavců. Můžeme si nadefinovat styly pro různé úrovně nadpisů, jednotlivé popisy, charakteristiky a další odstavce.

Více

Objektové programování

Objektové programování Objektové programování - přináší nové možnosti a styl programování - vytváří nový datový typ, který umí vše co standardní datové typy + to co ho naučíme - překladač se k tomuto typu chová stejně jako k

Více

Programování v jazyce VISUAL BASIC.NET

Programování v jazyce VISUAL BASIC.NET GYMNÁZIUM ŠTERNBERK Programování v jazyce VISUAL BASIC.NET JAROSLAV ZAVADIL 1. ČÁST ŠTERNBERK 2009 1 / 51 1. kapitola Úvod V následujících kapitolách se seznámíme s ukázkou programování ve vyšším programovacím

Více

6 Příkazy řízení toku

6 Příkazy řízení toku 6 Příkazy řízení toku Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům pro řízení toku programu. Pro všechny tyto základní

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

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

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly. Kapitola Reprezentace grafu V kapitole?? jsme se dozvěděli, co to jsou grafy a k čemu jsou dobré. rzo budeme chtít napsat nějaký program, který s grafy pracuje. le jak si takový graf uložit do počítače?

Více

ABC Linux běží z CD české prostředí tištěná příručka obsah portálu www.abclinuxu.cz. Mutt Jak začít? Jan Fuchs

ABC Linux běží z CD české prostředí tištěná příručka obsah portálu www.abclinuxu.cz. Mutt Jak začít? Jan Fuchs Mutt Jak začít? Jan Fuchs Ještě než začnu vás chci upozornit, že to, co píši, je můj názor a nikomu nebráním v tom, aby ho měl odlišný. A proto vás žádám, abyste nezačali zbytečnou slovní válku o tom,

Více

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných Tematický celek 03 3.1 Proměnné Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace. 3.1.1 Deklarace proměnných Dim jméno_proměnné [As typ] - deklarace uvnitř procedury platí pouze pro

Více

Objektově orientované programování v jazyce Python

Objektově orientované programování v jazyce Python Objektově orientované programování v jazyce Python Základní pojmy objektově orientovaného programování Objekt vychází z reálného světa. Má dva charakteristické rysy. Všechny objekty mají stav Všechny objekty

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

DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v DSL manuál Ing. Jan Hranáč 27. října 2010 V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v současné době krátký) seznam vestavěných funkcí systému. 1 Vytvoření nového dobrodružství Nejprve

Více

Zadání maturitní práce ve školním roce 2016/2017

Zadání maturitní práce ve školním roce 2016/2017 Zadání maturitní práce ve školním roce 2016/2017 vydané podle 15 odst. 1 vyhlášky č. 177/2009 Sb., o bližších podmínkách ukončování vzdělávání ve středních školách maturitní zkouškou, ve znění pozdějších

Více

Office 2013. podrobný průvodce. Tomáš Šimek

Office 2013. podrobný průvodce. Tomáš Šimek Office 2013 podrobný průvodce Tomáš Šimek Seznámení se společnými postupy při práci s dokumenty Office Popis základních a pokročilejších postupů při práci s Wordem, Excelem, PowerPointem a OneNote Možnosti

Více

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

11 Diagram tříd, asociace, dědičnost, abstraktní třídy 11 Diagram tříd, asociace, dědičnost, abstraktní třídy 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 diagramům tříd, asociaci,

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

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

Prozkoumání příkazů na pásu karet Každá karta na pásu karet obsahuje skupiny a každá skupina obsahuje sadu souvisejících příkazů.

Prozkoumání příkazů na pásu karet Každá karta na pásu karet obsahuje skupiny a každá skupina obsahuje sadu souvisejících příkazů. Úvodní příručka Microsoft Excel 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. Přidání příkazů na panel nástrojů Rychlý přístup

Více

PŘÍRUČKA PRÁCE SE SYSTÉMEM SLMS CLASS pro učitele

PŘÍRUČKA PRÁCE SE SYSTÉMEM SLMS CLASS pro učitele PŘÍRUČKA PRÁCE SE SYSTÉMEM SLMS CLASS pro učitele Vypracoval : Pavel Žemba Obsah Tvorba vlastních testů... 3 Postup tvorby... 3 Test otázky odpovědi... 3 Zadání otázek testu... 5 Test - cvičení na souboru,

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

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

Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM. Manuál pro editaci ŽS. Verze 1. Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM Manuál pro editaci ŽS Verze 1.0 2012 AutoCont CZ a.s. Veškerá práva vyhrazena. Tento dokument

Více

Programování v C++ 3, 3. cvičení

Programování v C++ 3, 3. cvičení Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového

Více

Úvod do programování - Java. Cvičení č.4

Úvod do programování - Java. Cvičení č.4 Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení

Více

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

Cvičení č. 3. Sdílené prostředky a synchronizace Program Banka. 4 body Cvičení č. 3 Sdílené prostředky a synchronizace Program Banka 4 body Datum: 12.3.2008 1 Obsah 1. Úvod...2 2. Pokyny pro odevzdání...2 3. Příprava...2 4. Úlohy...3 4.1. Požadavky na program...3 4.2. Požadavky

Více

Programovací jazyk Java

Programovací jazyk Java 1 z 8 Programovací jazyk Java Enumerace (výčty) Složitější definice výčtového typu Konstanty anonymních typů Výčtový typ a datové struktury Java packaging JAR archivy CLASSPATH Apache Ant 10. přednáška

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

Více

První kapitola úvod do problematiky

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

Více

KOMU JE KNIHA URČENA?

KOMU JE KNIHA URČENA? 7 Kapitola 0. O této knížce KOMU JE KNIHA URČENA? Tuto učebnici jsem vytvářel na základě mých přednášek a úvodních kurzů na vysokých školách i ve firmě moderníprogramování. Většina mých studentů měla malou

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

Ukázka knihy z internetového knihkupectví

Ukázka knihy z internetového knihkupectví Ukázka knihy z internetového knihkupectví www.kosmas.cz Věnováno mé rodině ACCESS 2007 PODROBNÝ PRŮVODCE 5 Úvod... 13 Komu je tato kniha určena...13 Co v této knize naleznete...14 Použité konvence a struktura

Více

Úvod do programovacích jazyků (Java)

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

Více

17. Projekt Trojúhelníky

17. Projekt Trojúhelníky Projekt Trojúhelníky strana 165 17. Projekt Trojúhelníky 17.1. Základní popis, zadání úkolu Pracujeme na projektu Trojúhelníky, který je ke stažení na java.vse.cz. Aplikace je napsána s textovým uživatelským

Více

MQL4 COURSE. By Coders guru -8- Proměnné

MQL4 COURSE. By Coders guru  -8- Proměnné MQL4 COURSE By Coders guru www.forex-tsd.com -8- Proměnné Vítejte v lekci proměnné mého MQL 4 kurzu. Doufám, že se vám předchozí lekce líbily a že jste připraveni na boj s proměnnými: Doporučuji, abyste

Více

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

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

Více

Pomůcka/manuál pro redakční systém http://helpdesk.remax-czech.cz verze 1.0

Pomůcka/manuál pro redakční systém http://helpdesk.remax-czech.cz verze 1.0 Pomůcka/manuál pro redakční systém http://helpdesk.remax-czech.cz verze 1.0 Přihlášení do systému Na adrese http://helpdesk.remax-czech.cz, viz. obr., vyplněním příslušného uživatelského jména a hesla.

Více

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 7 PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z

Více

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 7 PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z

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

MS OFFICE OUTLOOK 2010 - SEZNÁMENÍ

MS OFFICE OUTLOOK 2010 - SEZNÁMENÍ Škola: Autor: DUM: Vzdělávací obor: Tematický okruh: Téma: Masarykovo gymnázium Vsetín Mgr. Petr Koňařík MGV_VT_SS_1S2-D18_Z_OFF_OUT_UVOD.docx Informatika MS Office Outlook MS OFFICE OUTLOOK 2010 - SEZNÁMENÍ

Více

dokumentu, respektive oddílu (více o oddílech v další kapitole). Nemůžeme

dokumentu, respektive oddílu (více o oddílech v další kapitole). Nemůžeme Microsoft Office IV Sloupce Chtěli bychom psát školní noviny a máme pocit, že jsou málo profesionální. Chtěli bychom využít možnost psaní v několika sloupcích. Nastavíme si na stránce místo jednoho sloupce

Více

Access Tabulka letní semestr 2013

Access Tabulka letní semestr 2013 MS Access Tabulka letní semestr 2013 Tvorba nové tabulky importem dat propojením externího souboru pomocí Průvodce v návrhovém zobrazení Návrh struktury tabulky Tabulka záznam pole záznamu Jmeno RodCislo

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

BM Software, Databáze Docházky 3000 na NAS serveru (pro MySQL) Němčičky 84, 69107 Němčičky u Břeclavi. Úvodní informace:

BM Software, Databáze Docházky 3000 na NAS serveru (pro MySQL) Němčičky 84, 69107 Němčičky u Břeclavi. Úvodní informace: BM Software, Němčičky 84, 69107 Němčičky u Břeclavi Vývoj, výroba, prodej a montáž docházkových a identifikačních systémů Tel: 519 430 765, Mobil: 608 447 546 e-mail: bmsoft@seznam.cz web: http://www.dochazka.eu

Více

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr Koncepce (větších) programů Základy programování 2 Tomáš Kühr Parametry a návratová hodnota main Již víme, že main je funkce A také tušíme, že je trochu jiná než ostatní funkce v programu Funkce main je

Více

( ) ( ) Rozklad mnohočlenů na součin I (vytýkání) Předpoklady:

( ) ( ) Rozklad mnohočlenů na součin I (vytýkání) Předpoklady: 1.8.6 Rozklad mnohočlenů na součin I (vytýkání) Předpoklady: 010805 Pedagogická poznámka: Na začátku každé rozkládací hodiny jsou přidány příklady na opakování úprav mnohočlenů. Důvod je jediný, čtyři

Více

Hledání správné cesty

Hledání správné cesty Semestrální práce z předmětu A6M33AST Závěrečná zpráva Hledání správné cesty Nela Grimová, Lenka Houdková 2015/2016 1. Zadání Naším úkolem bylo vytvoření úlohy Hledání cesty, kterou by bylo možné použít

Více

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

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám. 13 Rozhraní, výjimky 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 rozhraním a výjimkám. Doba nutná k nastudování 2 2,5 hodiny

Více

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013 Předměty Algoritmizace a programování Seminář z programování Verze pro akademický rok 2012/2013 Verze pro akademický rok 2012/2013 1 Přednášky Jiřina Královcová MTI, přízemí budovy A Tel: 48 53 53 521

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

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

Návod k práci s programem MMPI-2

Návod k práci s programem MMPI-2 Návod k práci s programem MMPI-2 Výchozím vstupním heslem je název programu psaný malými písmeny, tedy mmpi-2. Po zadání hesla stiskněte Enter nebo tlačítko Dále. Hlavní obrazovka programu zobrazuje přehled

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

Základy programovaní 3 - Java. Unit testy. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 26.,27.

Základy programovaní 3 - Java. Unit testy. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 26.,27. Základy programovaní 3 - Java Unit testy Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci 26.,27. listopad, 2014 Petr Krajča (UP) Unit testy 26.,27. listopad, 2014 1 / 14 Testování zásadní

Více