SW_03. Implementace a testování

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

Download "SW_03. Implementace a testování"

Transkript

1 SW_03 Implementace a testování

2 Implementace Cílem implementace je doplnit navrženou architekturu (kostru) aplikace o programový kód a vytvořit tak kompletní systém. Implementační model specifikuje jak jsou jednotlivé elementy (objekty a třídy) vytvořené v etapě návrhu implementoványve smyslu softwarových komponent, kterými jsou zdrojové kódy, spustitelné kódy, data a podobně. 2

3 Implementace Softwarová komponentaje definována jako fyzicky existujícía zaměnitelnáčást systému vyhovující požadované množině rozhraní a poskytující jejich realizaci. 3

4 SW komponenty Podle typu softwarových komponent hovoříme ozdrojovém kódu-částech systému zapsaném v programovacím jazyce, binárním kódu-(přeloženém do strojové kódu procesoru) a spustitelném kódu,ostatních částech reprezentovaných databázovými tabulkami, dokumenty apod. 4

5 SW komponenty Jestliže jsme ve fázi analýzy a návrhu pracovali pouze s abstrakcemidokumentovanýmiv podobě jednotlivých diagramů, pak v průběhu implementace dochází k jejich fyzickérealizaci. Implementační model se tedy také zaměřuje na specifikacitoho, jak budou tytokomponenty fyzicky organizovány podle implementačního prostředía programovacího jazykaposkytujícího konkrétní mechanizmus strukturovánía modularizace. 5

6 SW komponenty Ke splnění těchto cílů nabízí jazyk UML prostředky, kterými jsou v tomto případě tyto dva následující diagramy: Diagram komponent ilustrující organizaci a závislosti mezi softwarovými komponentami. Diagram nasazení upřesněný nejen ve smyslu konfigurace technických prostředků, ale především z hlediska rozmístění implementovaných softwarových komponent na těchto prostředcích. 6

7 Mapování elementů logického modelu na komponenty Důsledná a přesná specifikaceobjektů a jejich tříd v etapě návrhu umožňuje automatické generování zdrojových kódů dle následující tabulky. Tabulka má dva sloupce, první z nich odpovídá elementům jazyka UML, druhý popisuje jejich zobrazení v programovacím jazyce (Java). 7

8 Tabulka mapování 8

9 Mapování elementů logického modelu na komponenty Jediné co nelze přímo odvodit z diagramů UML jsou těla metod, kód který je proveden v odezvě na přijatou zprávu a také jaká je fyzická struktura vytvářených souborůreprezentujících softwarové komponenty. Vše ostatní lze automaticky vygenerovat doslova bez účasti týmu programátorů. Pro názornost, z následujícího diagramu tříd se pokusíme vytvořit požadované softwarové komponenty. 9

10 Diagram tříd 10

11 Zdrojové, binární a spustitelné komponenty Ukázka vytvoření komponent se zahájí částí týkající se zdrojových komponent, tedy souborů vytvořených pomocí použitého programovacího jazyka. První krok bude rozhodnout o fyzické organizacitěchto zdrojových souborů definovaných pomocí diagramu komponent. 11

12 Diagram komponent-zdrojový kód 12

13 Příklad Z výsledného diagramu tříd specifikující jádro aplikace prodeje automobilu vytvořme diagram komponent. Třídy Automobil, Objednávka, Sklad, Vybranýa Specifikovanýbudou každá obsažena v samostatném souboru totožného názvu s koncovkou.javaoznačující, že se jedná o kód zapsaný v programovacím jazyce Java. Hierarchii tříd popisující část doplňků (s využitím návrhového vzoru Kompozit) umístíme do jediného souboru odpovídající svým názvem supertřídědoplněk. 13

14 Příklad Relace závislosti nazvané jako <<import>> označují použití komponent z jiných subsystémů(balíčků), zatímco relace nazvané jako <<friend>> označují, že dané komponenty spadají do společného balíčku. V jazyce Java to znamená, že se nacházejí jejich soubory ve společném adresáři. 14

15 Příklad Pokud máme k dispozici vývojové nástroje typu CASE(Computer AidedSoftware Engineering), pak lze nechat tyto zdrojové kódy takovým nástrojem vygenerovat. Postup vytváření zdrojových kódů vychází z tabulky mapování elementů jazyka UML na zdrojový kód jazyka Java. Jediné co je nutné doplnit, co nelze automaticky či jednoduše vytvořit, jsou těla metod reprezentované algoritmy operací. 15

16 Příklad Tyto lze alespoň hrubým způsobem specifikovatjednak ze sekvenčních diagramů definujících operace, ale především pak ze stavových diagramů popisujících detailně chování objektů. 16

17 Zdrojový kód Objednávka 17

18 Implementace tříd Třída Objednávka využívá tříd Automobil a Sklad umístěných v balíčcích auta a sklad. Proto dle specifikace v diagramu komponent je nutné tyto třídy importovat. Atributy zákazníka cenajsou implementovány v podobě instančních proměnných stejně jako asociace na instance jiných tříd pojmenované jako specifikovaný, vybraný(jména rolí instance třídy Automobil) a sklad. Metody, jak vyplývá z diagramu tříd, jsou dvě vyplň a vlož. 18

19 19

20 Implementace tříd Za pozornost v této části implementace stojí způsob, jakým jazyk Java realizuje rozhraní. K tomuto účelu slouží klíčové slovo implements, které v definici třídy specifikuje, která rozhraní (v našem případě Vybranýs Specifikovaný) jsou v rámci dané třídy implementována. Z hlediska samotné třídy platí, že musí definovat metody deklarované v rámci rozhraní, tedy specifikace z rozhraní Specifikovaný a jerezervována rezervujz rozhraní Vybraný. V případě chybějících implementací těchto metod překladač jazyka Java bude hlásit chybu. 20

21 21

22 Implementace tříd Poslední z příkladů implementace zdrojových komponent dokumentuje způsob jakým je v jazyce Java řešena relace generalizace (dědičnost). Jedná se použití klíčového slova extends, které uvozuje supertřídudané třídy. Tedy např. třída Výbavaje podtřídou třídy Doplněk. 22

23 Komponenty Binární komponenty (komponenty přeložené do strojového kódu daného procesoru) mají také svůj diagram komponent obvykle vyjadřující z jakých zdrojových souborů jsou požadované binární vytvořeny. 23

24 Binární komponenty 24

25 Diagram komponent: běh programu 25

26 Příklad V našem příkladu ke spuštění třídy Databáze autpotřebujeme jednak virtuální stroj jazyka Java (java.exe) a jeho knihovny (rt.jar). Konfigurační parametry fontů jsou uloženy v textovém souboru (font.properties). Samotná aplikace využívá služeb databázového serveru (sql.exe) pracujícího s databází aut strukturovanou v relačních tabulkách (Automobily). 26

27 Implementace Posledním úkolem, který činí etapu implementace kompletní je zpřesnění diagramů nasazení. Vlastní zpřesnění spočívá v umístění spustitelnýcha datovýchkomponentna jednotlivé technické prostředky reprezentované počítači. 27

28 28

29 Testovánía nasazení SW produktu Testování se provádí z pohledu tří základních dimenzí reprezentovaných kvalitou, funkcionalitou a výkonností systému. Testování se týká všech vytvářených modelů a jejich diagramů. 29

30 Testování Principy používané při testování jsou následující: Testy se plánují pro každou iteraci a zahrnují integrační testy a testy systémové. Integrační testy se provádí pro každý vytvořený produkt během iterace, zatímco systémový test se provádí pouze na konci iterace, kdy vzniká spustitelná verze vyvíjeného produktu. 30

31 Testování Testy se navrhují a následně implementují v podobě testovacích úloh, které jednoznačně definují co se má ověřit. Hovoříme o testovacích procedurách, které specifikují jak se má test provádět, nebo se vytváří spustitelné testovací komponenty umožňující automatizaci procesu ověřování. 31

32 Testování Výsledky provedených testů jsou systematicky zpracovávány a vadné části jsou opakovaně testovány a případně zaslány zpět do toků činností jako je analýza, návrh nebo implementace s cílem nedostatky odstranit. 32

33 Cíle procesu verifikace a validace Verifikaceje proces testování hledající odpověď na otázku, zda-lisoftwarový produkt je vytvářen správně. Jinak řečeno, hledáme nedostatkyv samotném softwarovém systému. Validaceje proces testování hledající odpověď na otázku, zda-livytvářený software je správný. Jinými slovy, zda-li implementuje požadovanou funkcionalitu. 33

34 Verifikace a validace Z uvedeného vyplývá, že může nastat situace, kde systém je perfektně verifikován, ale je k ničemu, neboť nesplňuje zadavatelem specifikovanou funkcionalitu. Na druhou stranu systém splňuje všechny funkce, ale je nestabilní nebo pomalý. 34

35 Verifikace a validace Kromě verifikace a validace také rozlišujeme mezi statickým a dynamickým ověřováním: Statické techniky se zabývající testováním vytvořených modelů a jejich diagramů, čili umožňují pouze ověřit korespondenci mezi vytvořeným systémem a jeho specifikací. 35

36 Verifikace a validace Dynamické techniky zkouší již implementovaný produkt cestou jeho spuštění a tímověřují i jeho užitečnost a kvalitu. 36

37 Modelytestování Na rozdíl od předchozích modelů, které byly definovány různými typy diagramů, pro testování nemá jazyk UML k dispozici žádný diagram. Model testování je dán souborem: testovacích úloh definujících co se má u systému testovat, testovacích procedur specifikujících postupy pro provedení testovacích úloh, testovacích komponent, které automatizují testovací procedury. 37

38 Testovací úloha Testovací úloha specifikuje způsob testování systému zahrnující informace o tom, co se má testovat s jakými vstupy a za jakých podmínek. 38

39 Testovací úloha funkční test V podstatě existují dva typy nejběžněji používaných testovacích úloh: 1. Testovací úlohy určené k ověření případů užití nebo jejich specifických scénářů. Takové úlohy ověřují výsledky interakce aktéra se systémem. Tento tzv. black-box test ověřuje z vnějšku pozorovatelné chování systému. 39

40 Testovací úloha konstrukční test 2. Testovací úlohy specifikující jak ověřovat realizaci případů užití. Tyto úlohy ověřují interakce mezi komponentami implementující případ užití. Tento tzv. white-box test je určen k ověření vnitřní interakcí daného systému. 40

41 Testovací procedura Testovací proceduraspecifikuje jak provést jednu nebo více testovacích úloh nebo jejich částí. Testovací procedury lze specifikovat pomocí: instrukcí popisujícími jak ručně provést danou testovací úlohu, popisu jak vytvořit spustitelnou testovací komponentu, specifikace jak použít nástroj pro automatické testování. 41

42 Testovací komponenty Testovací komponenty automatizují jednu nebo více testovacích procedur nebo jejich části. Testovací komponenty jsou používány k ověření komponent tvořících implementační model cestou poskytnutí požadovaných vstupů, řízení a sledování běhu ověřované komponenty a vytvoření výsledné zprávy o průběhu testu. K vytvoření testovacích komponent se mohou používat různé skriptovací jazyky nebo k tomuto účelu vytvořené systémy automatizované verifikace. 42

43 JUnitpřiklad na použití

44 Zadání příkladu Převod mezi římskými a arabskými číslicemi. Platí následující pravidla: hodnoty písmen se až na výjimky sčítají (I, II, VIII) Písmena vyjadřující mocniny se mohou opakovat max. 3. Písmena vyjadřující 5, 50, 500 se neopakují. Písmena římského čísla se vyjadřují od největšího po nejmenší, záleží na pořadí.

45 Zadání příkladu Pro každou hodnotu existuje pouze jeden správný zápis římskými číslicemi. Pomocí římských číslic lze zapsat čísla v rozsahu

46 Vytvoření kostry třídy Třída Roman bude obsahovat dvě statické metody pro převod toroman(int)a fromroman(string). bude-li vstupní parametr toroman(int)mimo rozsah, vyvolá se výjimka IllegalArgumentException. bude-li argument metody fromroman(string) obsahovat nepřípustný znak, vyvolá se výjimka NumberFormatException.

47 public class Roman { public static int fromroman(string s) throws NumberFormatException { int vysl = 0; return vysl; public static String toroman(int i) throws IllegalArgumentException { String vysl= ""; return vysl; 47

48 public class RomanTest extends TestCase{ public RomanTest(String name) { // musí specifikovat konstruktor super(name); protected void setup() { // počáteční nastavení protected void teardown() { // úklid po testování // testy postupně doplnované... // obyčejně deklarovaná statická metoda suite // v jejímž rámci se vytvoří seznam testů public static Test suite() { return new TestSuite(RomanTest.class); public static void main(string[] args) { junit.textui.testrunner.run(suite()); 48

49 // Pro vytvoření seznamu testů se většinou používá příkaz: return new TestSuite(RomanTest.class); //do seznamu testů se zahrnou všechny metody začínající řetězcem test // preferovaný způsob TestSuite seznamtestu = new TestSuite(); seznamtestu.addtest(new RomanTest( testtoromanknownvalues ); seznamtestu.addtest(new RomanTest( testfromromanknownvalues );... return seznamtestu; 49

50 Testy správnosti nadefinujeme dva testy: testtoromanknownvalues() a testfromromanknownvalues()

51 class Dvojice { int arab; String roman; Dvojice(int arab, String roman) { this.arab = arab; this.roman = roman; ; Dvojice knownvalues[] = { new Dvojice(1,"I"), new Dvojice(2,"II"), new Dvojice(3,"III"), new Dvojice(4,"IV"), new Dvojice(5,"V"), new Dvojice(6,"VI"), new Dvojice(7,"VII"), new Dvojice(8,"VIII"), new Dvojice(9,"IX"), new Dvojice(10,"X"), new Dvojice(50,"L"), new Dvojice(100,"C"), new Dvojice(500,"D"), new Dvojice(1000,"M"), new Dvojice(31,"XXXI"), new Dvojice(148,"CXLVIII"), new Dvojice(3940,"MMMCMXL"), new Dvojice(3999,"MMMCMXCIX"), ; 51

52 public void testtoromanknownvalues() { for(int i=0; i<knownvalues.length; i++){ String vysl= Roman.toRoman(knownValues[i].arab); assertequals(knownvalues[i].roman, vysl); public void testfromromanknownvalues() { for(int i=0; i< knownvalues.length; i++){ int vysl= Roman.fromRoman(knownValues[i].roman); assertequals(knownvalues[i].arab, vysl); 52

53 Testy výjimek Testy výjimek otestují, zda se v případě chybných vstupních parametrů bude zahlášena chyba metody. Odchytávání výjimek se provádí v kódu testu, v Odchytávání výjimek se provádí v kódu testu, v případě, že se výjimka neobjeví, ohlásí se chyba pomocí metody JUnit fail(string textchyby)

54 public void testtoromanexception() { int badvalues[] = {0, -1, 4000; for(int i=0; i<badvalues.length; i++){ try{ String vysl= Roman.toRoman(badValues[i]); catch(illegalargumentexception e) { continue; fail("expected IllegalArgumentException"); // test vyjimky public void testillegalcharacters() { String badvalues[] = {"I ", "i", "a", "mm", "d", "MCi"; for(int i=0; i< badvalues.length; i++) { try { int vysl= Roman.fromRoman(badValues[i]); catch (NumberFormatException e) { continue; fail("expected IllegalArgumentException for: "+ badvalues[i]); ; 54

55 public void testsanity() { for(int i= 1; i< 4000; i++){ int vysl = Roman.fromRoman(Roman.toRoman(i)); assertequals(i, vysl); 55

56 Vlastní třída a testování Do třídy Roman metody toroman() -doplnit test intervalu hodnot public static String toroman(int i) throws IllegalArgumentException { if((i>3999) (i<= 0)) throw new IllegalArgumentException(); else { return vysl;

57 Vlastní třída a testování Dále je třeba doplnit třídu Dvojice a tabulku pro převod a doplnit odpovídajícím způsobem metodu toroman() Výpis třídy Roman Výpis třídy RomanTest

58 public class Roman { public static int fromroman(string s) throws NumberFormatException { int vysl = 0; return vysl; public static String toroman(int i) throws IllegalArgumentException { if((i>3999) (i<= 0)) throw new IllegalArgumentException(); else { int cislo =i; String vysl= ""; while(cislo >0) { for(int j=0; j< tabulka.length; j++){ if(cislo >= tabulka[j].arab) { vysl= vysl+ tabulka[j].roman; cislo= cislo- tabulka[j].arab; break; return vysl; static class Dvojice { int arab; String roman; Dvojice(int arab, String roman){ this.arab = arab; this.roman = roman; 58

59 static Dvojice tabulka[] = { new Dvojice (1000, "M"), new Dvojice (900, "CM"), new Dvojice (500, "D"), new Dvojice (400, "CD"), new Dvojice (100, "C"), new Dvojice (90, "XC"), new Dvojice (50, "L"), new Dvojice (40, "XL"), new Dvojice (10, "X"), new Dvojice (9, "IX"), new Dvojice (5, "V"), new Dvojice (4, "IV"), new Dvojice (1, "I"), ; 59

60 public class RomanTest extends TestCase{ class Dvojice { int arab; String roman; Dvojice(int arab, String roman) { this.arab = arab; this.roman = roman; ; Dvojice knownvalues[] = { new Dvojice(1,"I"), new Dvojice(2,"II"), new Dvojice(3,"III"), new Dvojice(4,"IV"), new Dvojice(5,"V"), new Dvojice(6,"VI"), new Dvojice(7,"VII"), new Dvojice(8,"VIII"), new Dvojice(9,"IX"), new Dvojice(10,"X"), new Dvojice(50,"L"), new Dvojice(100,"C"), new Dvojice(500,"D"), new Dvojice(1000,"M"), new Dvojice(31,"XXXI"), new Dvojice(148,"CXLVIII"), new Dvojice(3940,"MMMCMXL"), new Dvojice(3999,"MMMCMXCIX"), ; 60

61 public RomanTest(String name) { super(name); protected void setup() { protected void teardown() { // testy postupne doplnovane public void testtoromanknownvalues() { for(int i=0; i<knownvalues.length; i++){ String vysl= Roman.toRoman(knownValues[i].arab); assertequals(knownvalues[i].roman, vysl); public void testfromromanknownvalues() { for(int i=0; i< knownvalues.length; i++){ int vysl= Roman.fromRoman(knownValues[i].roman); assertequals(knownvalues[i].arab, vysl); 61

62 // test vyjimky public void testtoromanexception() { int badvalues[] = {0, -1, 4000; for(int i=0; i<badvalues.length; i++){ try{ String vysl= Roman.toRoman(badValues[i]); catch(illegalargumentexception e) { continue; fail("expected IllegalArgumentException"); // test vyjimky public void testillegalcharacters() { String badvalues[] = {"I ", "i", "a", "mm", "d", "MCi"; for(int i=0; i< badvalues.length; i++) { try { int vysl= Roman.fromRoman(badValues[i]); catch (NumberFormatException e) { continue; fail("expected IllegalArgumentException for: "+ badvalues[i]); ; 62

63 public void testtoomanyrepeatednumerals() { String badvalues[] = {"MMMM", "VV", "LL", "CCCC", "DD", "IIII"; for(int i=0; i< badvalues.length; i++) { try { int vysl= Roman.fromRoman(badValues[i]); catch (NumberFormatException e) { fail("expected IllegalArgument for: "+ badvalues[i]); ; public void testrepeatedpairs() { String badvalues[] = {"CMCM", "CDCD", "IVIV", "IXIX", "XLXL"; for(int i=0; i< badvalues.length; i++){ try { int vysl= Roman.fromRoman(badValues[i]); catch (NumberFormatException e){ continue; fail("expected IllegalArgumentException for: "+ badvalues[i]); 63

64 public void testmalformedantecedent() { String badvalues[] = {"IIMMCC", "VX", "DCM", "CMM", "CMD", "IXIV", "MCMC", "XCX", "IVI", "LM", "LD", "LC"; int vysl; for(int i= 0; i< badvalues.length; i++ ){ try { vysl= Roman.fromRoman(badValues[i]); catch(numberformatexception e){ continue; fail("expected IllegalArgumentException for: "+ badvalues[i]+ " (" + vysl); ; public void testsanity() { for(int i= 0; i< 4000; i++){ int vysl = Roman.fromRoman(Roman.toRoman(i)); assertequals(i, vysl); 64

65 // zaklad public static Test suite() { return new TestSuite(RomanTest.class); public static void main(string[] args) { junit.textui.testrunner.run(suite()); 65

66 Typování Abstrakce představuje nejdůležitější princip pro opětovnou použitelnost. Jedná se o nahrazení konkrétní datové entity, abstraktnější datovou entitou. Uvedená abstrakce nabývá většinou jedné ze dvou následujících forem: generalizace typování

67 Generalizace Generalizací se rozumí zobecnění specializované datové entity do obecnější datové entity; mezi těmito entitami se stanoví relace generalizace. Specifické vlastnosti relace generalizace: existuje jen mezi datovými entitami (třídami), nepřenáší se na instance, způsobuje dědění datových atributů a relací z obecnější do specializovanější datové entity, každá instance od obecnější entity dědí pouze strukturu datových atributů, nikoli však obsah,

68 Generalizace je to relace typu nebo existuje-li k jedné obecnější datové entitě více specializovanějších entit, daná instance se vytvoří právě k jedné z nich.

69 Diagramy Osoba a Lokalita Osoba atributy: jméno, rok narození Muž atributy: počet manželek (zdědí jméno, rok narození) Žena atributy: počet narozených dětí (zdědí jméno, rok narození)

70 Typování Při typování se místo obecnější datové entity definuje datová entita, která reprezentuje typ této datové entity. Tím, že se při typování obecnější datová entita specializuje ne datovou entitou jako při generalizaci, ale instancemi typové datové entity, vytvořená instance dědí nejen strukturu datových atributů obecnější datové entity, ale zároveň i jejich obsah. Uvedené datové entity jsou spojeny asociací. První příklad typování osob, druhý příklad typování lokalit.

71 Typování osob a lokalit TypOsobyjsou instance Muž(jméno, rok narození, počet manželek) a Žena(jméno, rok narození, počet narozených dětí) a instance od třídy Osoba pak patří buď pod Muže nebo Ženu. Hodnoty datových atributů zůstávají stejné pro všechny specializované instance.

72 Objednávka / Produkt (lepší příklad) ProductType (Objednávka) obsahuje všechny plánované položky (plánovaná váha, plánované složení příměsí). Instance od ProductTypepak představují různé objednávky lišící se různou hodnotou plánovaných položek. Instance od třídy Productjsou vždy svázány s konkrétní instancí třídy ProductTypea liší se v hodnotách skutečných položek (skutečná váha, skutečné složení příměsí).

73 Typování& generalizace 1/2 Typování je podobné generalizaci. V obou případech je využit princip obecnější datové entity. Při generalizaci se tato obecnější datová entita specializuje pomocí konkrétnějších datových entit. Při typování se obecnější datová entita specializuje instancemi typové datové entity. Při typování tak instance typové datové entity odpovídají konkrétnějším datovým entitám u generalizace.

74 Typování & generalizace 2/2 Typování se používá v případě, že seznam typů se mění a je malá důležitost dědění. Generalizace se používá v případě, že seznam specializovanějších entit statický a je větší důležitost dědění. Při generalizaci instance specializovanější datové entity dědí strukturu datových atributů od obecnější datové entity. Při typování specializovanější instance dědí od obecnější instance nejen strukturu datových atributů, ale zároveň i jejich obsah.

75 Typování Datové entity typ se vzájemnými relacemi patří do meta úrovně (směrnice, obecné zákony). Standardní entity vyjadřují operační úroveň (každodenní skutečnost). Mezi operativní úrovní a metaúrovníexistuje vzájemný vztah operativní úroveň zachycuje konkrétní případy, které musí (měly by být) splňovat pravidla předepsaná metaúrovní.

76 Stratifikované typování Instance od třídy TypUniversityjsou např. VŠB-TU,SU nebo OU. Ty mají konkrétní různé hodnoty jmen rektorů. V rámci instancí VŠB-TU se pak vytváří instance EkF, nebo FEI se svými děkany a společným rektorem. Pro SU a OU je to podobné. V rámci instancí fakult se vytváří konkrétní instance kateder např. katedra matematických metod, informatiky v ekonomii pro EkFnebo informatiky a matematiky pro FEI.

77 Relace mezi pracovními kategoriemi a pracovními vztahy Generalizace nepružné řešení Typování vhodné řešení

78 Flexibilní reprezentace organizační struktury Podobné řešení platí i pro organizační strukturu firem. Výsledné řešení odpovídá vzorům z článku o politikách

79 public class Objednavka { private int plancas; private double planmnozstvi; private Koruny plancena; public Objednavka(int cas, double mnozstvi, Koruny castka) { plancas = cas; planmnozstvi = mnozstvi; plancena = castka; public int getplancas() { return plancas; public double getplanmnozstvi() { return planmnozstvi; public Koruny getplancena() { return plancena; public String tostring() { return String.format("Planovany cas: %d planovane mnozstvi: %.2f planovana cena: %s", getplancas(), getplanmnozstvi(), getplancena().tostring()); public void tisk() { System.out.println(this.toString()); 79

80 public class Skutecnost { private int skutcas; private double skutmnozstvi; private Koruny skutcena; public Skutecnost(int cas, double mnozstvi, Koruny cena){ skutcas = cas; skutmnozstvi = mnozstvi; skutcena = cena; // skutcena = new Koruny(cena); public int getskutcas() { return skutcas; public double getskutmnozstvi() { return skutmnozstvi; public Koruny getskutcena() { return skutcena; public String tostring() { return String.format("%s \nskutecny cas: %d skutecne mnozstvi: %.2f " + "skutecna cena: %s", Objednavka.this.toString(), getskutcas(), getskutmnozstvi(), getskutcena().tostring()); public int rozdilcas() { return Objednavka.this.getPlanCas() - getskutcas(); Objednávka 80

81 public double rozdilmnozstvi() { return Objednavka.this.getPlanMnozstvi() - getskutmnozstvi(); public Koruny rozdilcena() { return Objednavka.this.getPlanCena().minus(getSkutCena()); public void tisk() { System.out.println("Plan: " + Objednavka.this.toString() + "\nskutecnost: "+ this.tostring()); public void tiskrozdilu(){ System.out.println("Rozdil cas: " +rozdilcas() + "\nrozdil mnozstvi: " + rozdilmnozstvi() + "\nrozdil cena: " + rozdilcena()); public Skutecnost getskutecnost(int cas, double mnozstvi, Koruny cena){ return new Skutecnost(cas, mnozstvi, cena); 81

82 public class ObjednavlaTest { public static void main(string[] args) { Objednavka objednavka = new Objednavka(12, 52.36, new Koruny(53.21)); Objednavka.Skutecnost sk1 = objednavka.getskutecnost(13, 49.83, new Koruny(55.20)); objednavka.tisk(); sk1.tisk(); sk1.tiskrozdilu(); 82

JUnit příklad na použití

JUnit příklad na použití JUnit příklad na použití 1 Zadání příkladu Převod mezi římskými a arabskými číslicemi. Platí následující pravidla: hodnoty písmen se až na výjimky sčítají (I, II, VIII) Písmena vyjadřující mocniny se mohou

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

Testování. Zadání příkladu. Vytvoření kostry třídy. Obsah:

Testování. Zadání příkladu. Vytvoření kostry třídy. Obsah: Obsah: Testování... 1 Zadání příkladu... 1 Vytvoření kostry třídy... 1 Napsání testů... 2 Testy správnosti... 3 Testy výjimek... 3 Testy vztahů/závislostí... 4 Zdrojový text testu... 4 Spuštění testů...

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

Datové modelování a typování

Datové modelování a typování Datové modelování a typování František Huňka Ostravská univerzita v Ostravě, frantisek.hunka@osu.cz Ferdinand Mácha Charonware, s.r.o. Ostrava, f.macha@seznam.cz -minutesneededperunit «EconomicResourceType»

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 : 22. Otázka : Úvodní fáze rozpracování softwarového projektu. Postupy při specifikaci byznys modelů. Specifikace požadavků a jejich rozpracování pomocí

Více

KTE / ZPE Informační technologie

KTE / ZPE Informační technologie 4 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Největší

Více

Informační systémy 2008/2009. Radim Farana. Obsah. Nástroje business modelování. Business modelling, základní nástroje a metody business modelování.

Informační systémy 2008/2009. Radim Farana. Obsah. Nástroje business modelování. Business modelling, základní nástroje a metody business modelování. 3 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Business modelling, základní nástroje a metody business modelování.

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

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd 7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená

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

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

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

Ú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

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

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

Více

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

Abstraktní datové typy: zásobník

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

Více

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

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 23. Otázka : Problematika analýzy a návrhu softwarového systému. Sestavení UML diagramů popisující statickou i dynamickou část díla. Problematika návrhových

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

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

7.5 Diagram tříd pokročilé techniky

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

Více

Testování, ladění a dokumentace programů

Testování, ladění a dokumentace programů Testování, ladění a dokumentace programů doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Strategie ladění programů

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

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

Elektronická podpora výuky předmětu Komprese dat

Elektronická podpora výuky předmětu Komprese dat Elektronická podpora výuky předmětu Komprese dat Vojtěch Ouška ouskav1@fel.cvut.cz 19. června 2006 Vojtěch Ouška Elektronická podpora výuky předmětu Komprese dat - 1 /15 Co je to SyVyKod? SyVyKod = Systém

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

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ý 1 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

7.5 Diagram tříd pokročilé techniky

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

Více

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

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

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

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

Modelování informačních systémů s využitím jazyka UML. Jaroslav Šmarda

Modelování informačních systémů s využitím jazyka UML. Jaroslav Šmarda Modelování informačních systémů s využitím jazyka UML Jaroslav Šmarda Využití jazyka UML při vývoji IS na příkladu jednoduché aplikace pro evidenci knih Model IS Modelování případů užití Diagram případů

Více

Principy objektově orientovaného programování

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

Více

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

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

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

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

Více

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

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

Diagramy tříd - základy

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

Více

Generické programování

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

Více

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

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

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

Více

Java - řazení objektů

Java - řazení objektů Java - řazení objektů Kapitola seznamuje se základními principy řazení objektů Klíčové pojmy: Přirozené řazení, absolutní řazení, ideální porovnávatelná třída ŘAZENÍ OBJEKTŮ U objektů není příliš jasné,

Více

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

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

Více

Seminář Java II p.1/43

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

Více

DATOVÉ MODELOVÁNÍ A TYPOVÁNÍ

DATOVÉ MODELOVÁNÍ A TYPOVÁNÍ DATOVÉ MODELOVÁNÍ A TYPOVÁNÍ František Huňka Ostravská univerzita v Ostravě, frantisek.hunka@osu.cz Ferdinand Mácha Charonware, s.r.o. Ostrava, f.macha@seznam.cz ABSTRAKT: Datové modelování poskytuje celou

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

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

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

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans. 1 Grafické rozhraní Studijní cíl Tento blok je věnován vytváření programů s využitím grafického rozhraní (GUI). Vysvětlen bude základní filozofie pro vytváření aplikací s GUI ve srovnání s konzolovými

Více

OOPR_05. Případové studie

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

Více

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

Třídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Třídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické Třídy, polymorfismus A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické Polymorfizmus ~ vícetvarost Polymorfizmus základní vlastnost objektového přístupu základní princip polymorfismu:

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

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová Struktura třídy, operátory, jednoduché algoritmy, junit 2. cvičení Alena Buchalcevová Cíle cvičení seznámit se s rozhraním (interface) v Javě seznámit se s testováním při vývoji (makety, JUnit) naučit

Více

Soubor jako posloupnost bytů

Soubor jako posloupnost bytů Soubory Soubor je množina údajů uložená ve vnější paměti počítače, obvykle na disku Pro soubor jsou typické tyto operace. otevření souboru čtení údaje zápis údaje uzavření souboru Přístup k údajům (čtení

Více

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

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

Více

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

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

Více

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

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

Více

UML. Unified Modeling Language. Součásti UML

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

Více

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

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

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018 Informační technologie 1 - Doporučená doba zpracování: 40 minut 1) Termín DCL v relačně databázové technologii

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

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

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Maturitní otázky z předmětu PROGRAMOVÁNÍ Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti

Více

Paměť počítače. alg2 1

Paměť počítače. alg2 1 Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových

Více

OOT Objektově orientované technologie

OOT Objektově orientované technologie OOT Objektově orientované technologie Logická struktura systému (Diagram tříd) Daniela Szturcová Institut geoinformatiky, HGF Osnova Třídy Statický pohled na systém Atributy a operace, řízení přístupu

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

Objektově orientované programování

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

Více

Semin aˇr Java V yjimky Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Unor 2008 Radek Koˇc ı Semin aˇr Java V yjimky 1/ 25

Semin aˇr Java V yjimky Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Unor 2008 Radek Koˇc ı Semin aˇr Java V yjimky 1/ 25 Seminář Java Výjimky Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Výjimky 1/ 25 Výjimky Co a k čemu jsou výjimky výjimka je mechanizmus umožňující psát robustní, spolehlivé

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

Informační systémy 2008/2009. Radim Farana. Obsah. UML - charakteristika

Informační systémy 2008/2009. Radim Farana. Obsah. UML - charakteristika 2 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Jazyk UML, základní modely, diagramy aktivit, diagramy entit.

Více

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

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

Více

Datové struktury. alg12 1

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

Více

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti NetBeans platforma Aplikační programování v Javě (BI-APJ) - 7 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme

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

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

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

Více

Abstraktní třída a rozhraní

Abstraktní třída a rozhraní Abstraktní třída a rozhraní Někdy se může stát, zejména při psaní v hierarchické struktuře hodně nadřazených tříd, že tušíme, že bude ve zděděných třídách vhodné použít nějakou metodu. Tuto metodu ještě

Více

7 Jazyk UML (Unified Modeling Language)

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

Více

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

RMI - Distribuované objekty v Javě

RMI - Distribuované objekty v Javě Vysoká škola báňská - Technická univerzita Ostrava 30. března 2009 Osnova Co je to RMI? 1 Co je to RMI? 2 Vnější pohled Vrstvy RMI Stub & Skeletons Layer Remote Reference Layer Transport Layer Pojemnování

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

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

7 Jazyk UML (Unified Modeling Language)

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

Více

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

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

Více

2. Systémová analýza SA návrhová část projektu = příručka projektu - systémový přístup k analýze problémů, nejdůležitější etapa projektu - podrobné st

2. Systémová analýza SA návrhová část projektu = příručka projektu - systémový přístup k analýze problémů, nejdůležitější etapa projektu - podrobné st 1. IŘS, definice, třídění, projekt, životní cyklus IŘS systémy na zpracování získaných (naměřených) informací a jejich využití pro řízení IŘS : a) IS informační systémy systémy sběru a zpracování dat (hromadné),

Více

Výjimky. Tomáš Pitner, upravil Marek Šabo

Výjimky. Tomáš Pitner, upravil Marek Šabo Výjimky Tomáš Pitner, upravil Marek Šabo K čemu jsou výjimky Výjimky jsou mechanizmem umožňujícím reagovat na nestandardní (tj. chybové) běhové chování programu, které může mít různé příčiny: chyba okolí:

Více

Dědičnost (inheritance)

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

Více

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

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 21. Otázka : Softwarový process. Jeho definice, modely a vyspělostní úrovně. Standardizovaný přístup pomocí RUP (Rational Unified Process). Obsah :

Více

Ruční návrh Připravíme si odpovědi na základní otázky Co chceme řešit (projektovat) a proč Komu to bude sloužit Jaký užitek z toho bude mít uživatel I

Ruční návrh Připravíme si odpovědi na základní otázky Co chceme řešit (projektovat) a proč Komu to bude sloužit Jaký užitek z toho bude mít uživatel I Návrh řešení IS Vývoj informačních systémů Ruční návrh Připravíme si odpovědi na základní otázky Co chceme řešit (projektovat) a proč Komu to bude sloužit Jaký užitek z toho bude mít uživatel IS a jaký

Více

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

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí Kolekce obecně Seznamy a iterátory doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Kolekce ::= homogenní sada prvků

Více

Motivační příklad reálný svět. výroba (assembly line)

Motivační příklad reálný svět. výroba (assembly line) Template method Motivační příklad reálný svět n Pásová výroba (assembly line) Motivační příklad SW inženýrství n Otevírání souborů n Třídy Application a Document (+potomci) Motivační příklad SW inženýrství

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006 Michal Krátký Tvorba informačních systémů 1/35 Konceptuální

Více

1 Webový server, instalace PHP a MySQL 13

1 Webový server, instalace PHP a MySQL 13 Úvod 11 1 Webový server, instalace PHP a MySQL 13 Princip funkce webové aplikace 13 PHP 14 Principy tvorby a správy webového serveru a vývojářského počítače 14 Co je nezbytné k instalaci místního vývojářského

Více

EXTRAKT z mezinárodní normy

EXTRAKT z mezinárodní normy EXTRAKT z mezinárodní normy Extrakt nenahrazuje samotnou technickou normu, je pouze informativním ICS 03.220.01; 35.240.60 materiálem o normě. Inteligentní dopravní systémy Požadavky na ITS centrální datové

Více

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

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

Více

Ú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

Návrhové vzory Design Patterns

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

Více

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

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

Více