Vývoj bezpečných aplikací
|
|
- Lenka Ševčíková
- před 8 lety
- Počet zobrazení:
Transkript
1 Vaše jistota na trhu IT Vývoj bezpečných aplikací Rudolf PECINOVSKÝ 2012 e-bezpečnost v Kraji Vysočina 1
2 Vaše jistota na trhu IT Obsah s odkazy Quo vadis, programování? Co je to bezpečné? Zásady správného a bezpečného programování 2012 e-bezpečnost v Kraji Vysočina 2
3 Vaše jistota na trhu IT Quo vadis, programování? 2012 e-bezpečnost v Kraji Vysočina 3
4 Programování se vyvíjí (1/3) Dříve Řada běžných, často se vyskytujících úloh stále čekala na vyřešení Nyní Většina běžných úloh je vyřešena a řešení jsou dostupná v komponentách či knihovnách Programy pracovaly samostatně, navzájem příliš nespolupracovaly Nové program jsou téměř vždy součástí rozsáhlejších aplikací a rámců Klíčovou úlohou programátora byl návrh algoritmů a základních datových struktur Klíčovou úlohou je návrh architektury systému Důležitější než znalost algoritmů je znalost knihoven a aplikačních rámců, v nichž jsou potřebné algoritmy a datové struktury připraveny 2012 e-bezpečnost v Kraji Vysočina 4
5 Programování se vyvíjí (2/3) Dříve Metodika vývoje programů počítala s pevným zadáním Zákazníci hledali firmu, která jejich projekt naprogramuje O výsledné podobě projektu rozhodovali analytici a programátoři Při vývoji programů se kladla váha především na jejich efektivitu U programátorů byla oceňována jejich schopnost vyvíjet programy, s malými HW požadavky Nyní Zadání většiny vyvíjených projektů se v průběhu vývoje neustále mění Programátorské firmy hledají zákazníky, kteří si u nich objednají tvorbu projektu O výsledné podobě projektu rozhoduje zákazník Při vývoji programů se klade váha především na jejich spravovatelnost a modifikovatelnost U programátorů je oceňována jejich schopnost vyvíjet programy, které je možno rychle a levně přizpůsobovat neustále se měnícím požadavkům zákazníka 2012 e-bezpečnost v Kraji Vysočina 5
6 Programování se vyvíjí (3/3) Dříve Prvotní úlohou programátora bylo vymyslet, jak úkol vyřešit Nyní Prvotní úlohou programátora je zjistit, jestli už někde není problém vyřešen Testy se většinou navrhovaly po dokončení projektu či jeho části a spouštěly se na závěr před odevzdáním projektu (byl-li čas) Stále častěji se testy navrhují před začátkem vývoje každé části a spouští se v průběhu celého vývoje po každé drobné změně Testy navrhovali programátoři a ověřovali v nich, že program dělá to, co chtěl programátor naprogramovat Testy se navrhují ve spolupráci se zákazníkem a ověřuje se v nich, že program dělá to, do po něm zákazník požadoval Návrh testů byl interní záležitostí vývojového týmu Návrh testů se často stává součástí smlouvy o vývoji programu 2012 e-bezpečnost v Kraji Vysočina 6
7 Vaše jistota na trhu IT Co je to bezpečné? Bezpečné zabezpečené aplikace Nebezpečnost geniálních programátorů Používané paradigma Nevýhody předčasné koncentrace na kód Problémy přechodu na nové paradigma 2012 e-bezpečnost v Kraji Vysočina 7
8 Bezpečné zabezpečené aplikace Bezpečná aplikace = aplikace, která je robustní vůči uživateli i vůči programátoru, který dostane za úkol ji upravit anebo rozšířit Zabezpečená aplikace = aplikace s dodatečnými nadstavbovými prvky, které mají zabránit případným útočníkům v realizaci jejich nekalých úmyslů Aplikaci, která není primárně vytvořena jako bezpečná, nezabezpečí žádné dodatečné zabezpečovací mechanizmy Existuje i druhý pohled: Bezpečná aplikace je taková, která firmě bezpečně přináší zisk Aplikace, která není bezpečná z programátorského hlediska nebude bezpečná ani z hlediska účetního, protože bude mít špatnou pověst (moc se jí neprodá) a navíc její údržba bude neúnosně drahá 2012 e-bezpečnost v Kraji Vysočina 8
9 Nebezpečnost geniálních programátorů Napsat program, kterému rozumí počítač, dokáže každý trouba, dobří programátoři píší programy, kterým rozumějí lidé. Martin Fowler, Refactoring Zkušenost ukazuje, že programátor vytvářející programy, kterým jeho kolegové nerozumí, je pro firmu stejně nebezpečný jako záměrný záškodník Když takovéhoto geniálního programátora zlanaří jiný zaměstnavatel nebo se stane obětí dopravní nehody, musí firma celou jím navrženou část aplikace zahodit a nahradit jinou Nemusím umět napsat stejně geniální program jako kolega, ale když už jej kolega vytvoří, měl by být pro mě natolik srozumitelný, abych v něm dokázal udělat jednoduché úpravy 2012 e-bezpečnost v Kraji Vysočina 9
10 Jednoduchý příklad nesrozumitelného kódu Klasický zápis programátorů v jazyce C int znak; while ((znak = bufreader.read())!= očekávaný); Zápis, který preferují méně zkušení programátoři int znak; do { znak = bufreader.read(); } while (znak!= očekávaný); 2012 e-bezpečnost v Kraji Vysočina 10
11 Používané paradigma Bezpečnost aplikace je do značné míry závislá na použitém paradigmatu Složitost programů se stále zvětšuje, avšak kapacita mozku zůstává konstantní V průběhu 80 let se proto prosadilo objektové paradigma, které umožňuje psát větší, robustnější a snáze spravovatelné programy Výzkumy ukázaly, že tvorba programů větších než příkazů je předobjektovými technologiemi jen těžko realizovatelná Zastánci tradičních paradigmat tvrdí, že stačí dodržovat zásady modularity. Bohužel nestačí; OO paradigma přináší několik konstrukcí, které přibližují náš programový popis simulované skutečnosti a umožňuje tak efektivnější a současně robustnější realizaci Publikace o programování bezpečných aplikací už většinou ani s jiným než s objektovým přístupem nepočítají 2012 e-bezpečnost v Kraji Vysočina 11
12 Nevýhody předčasné koncentrace na kód Kurzy programování na školách se většinou soustředí na kód a opomíjejí nutnost výuky výrazně jiného způsobu myšlení, namísto OO paradigmatu učí jenom kódování v OO jazyce Absolventi těchto kurzů dále vyvíjejí své strukturované programy, jenom je nyní vyvíjejí v objektově orientovaném jazyce Takto vychovaný programátor myslí a hovoří v termínech kódu; mezi ním a zákazníkem vzniká sémantická mezera Common
13 Problémy přechodu na nové paradigma Trocha psychologie Děti před pubertou jsou schopny přijmout nová fakta, aniž by si je musely spojovat s tím, co již znají; s postupným získáváním dalších informací si předchozí informace propojují a zařazují do kontextu Puberta mění naše myšlení z konkrétního na abstraktní a při té příležitosti nás o tuto schopnost připraví Člověk po pubertě si každý nový poznatek okamžitě podvědomě propojí s tím, co zná, i když při tom často dojde k výrazné dezinterpretaci Strukturovaný programátor při výkladu OOP podvědomě převádí vysvětlované termíny do paradigmatu, v němž je doma Problémem tohoto přechodu je k výrazná desinterpretace pojmů, v hlavě zůstane něco jiného, než co přednášející říkal Na počátku kurzu se domnívá, že slyší triviality, aby v další části zjistil, že se nechal zmást svou předchozí zkušeností a nyní se v termínech ztrácí Přechod trvá typicky měsíců; čím zkušenější je přeškolovaný programátor, tím delší a bolestivější je jeho přechod 2012 e-bezpečnost v Kraji Vysočina 13
14 Vaše jistota na trhu IT Zásady programování bezpečných aplikací Architektonické zásady Jednoduchost Zapouzdření a rozhraní Průzračnost kódu i aplikace Modifikovatelnost a rozšiřitelnost Jasné rozdělení zodpovědností Neopakovat kód s podobnou funkcí A další 2012 e-bezpečnost v Kraji Vysočina 14
15 Architektonické zásady Dobře navržená architektura výrazně snižuje pravděpodobnost vzniku slabých míst napadnutelných útočníkem Maximalizovat soudržnost (maximize cohesion) Míra soudržnosti označuje jak spolu souvisí funkcionalita jednotlivých části daného modulu Řešení úkolu by nemělo být rozcourané po programu Části programu s podobnou funkcionalitou by měly být součástí společné komponenty a naopak by se v ní neměly vyskytovat součásti řešící něco zcela jiného Minimalizovat provázanost (minimize coupling) Při definici každé entity bychom měli minimalizovat počet entit, které daná entita pro splnění daného úkolu oslovuje S konkrétními pravidly přichází zákon bohyně Demeter e-bezpečnost v Kraji Vysočina 15
16 Jednoduchost Čím je kód složitější, tím snáze přehlédneme dírku pro útočníka KISS (Keep it simple, Stupid!) Principle of good enough (POGE) Jednoduchý kód je vytvořen rychleji, obsahuje méně chyb, je robustnější a snadněji se modifikuje Často se také formuluje : vytvoř to nejjednodušší, co ještě bude fungovat Nevytvářejte YAGNI (You aren t going to need it) Řada programátorů má nutkavou potřebu vytvářet podprogramy, které by se mohly hodit; vytvářejte je, až budou opravdu potřeba, protože snižují robustnost kódu viz princip KISS e-bezpečnost v Kraji Vysočina 16
17 Zapouzdření a rozhraní Minimalizovat dostupnost informací použitelných pro napadení Zapouzdření: Zveřejněte, co umíte, ale tajte, jak to děláte Programátor musí u každé entity (třída, objekt, metoda, ) jasně oddělit, co musí okolní program o dané entitě vědět, aby ji mohl použít, a co definoval jenom proto, aby daná entita plnila svůj úkol Programujte proti rozhraní, ne proti implementaci Programátor by nikdy neměl využívat toho, jak je některá část programu definována, leda by tato skutečnost byla přímo uvedena v dokumentaci a stala se tak součástí rozhraní používané entity (třída, objekt, metoda, ) e-bezpečnost v Kraji Vysočina 17
18 Průzračnost kódu i aplikace Kód, v němž se nevyznáme, se hůře zabezpečuje proti případným záměrným útokům Tvořte kód pro potenciálního modifikátora Každá aplikace, která za něco stojí, bude v budoucnu upravována => pište tak, aby byly případné budoucí úravy co nejjednodušší Princip minimálního překvapení (Principle of least astonishment) Nenuť mne přemýšlet (Don t make me think) Kód by měl být srozumitelný s minimálním mentálním úsilím Aplikace by měla respektovat zavedené zvyklosti a očekávání a nevymýšlet si na budoucího uživatele (ani programátora) žádné překvapující obraty e-bezpečnost v Kraji Vysočina 18
19 Modifikovatelnost a rozšiřitelnost Připravenost kódu k modifikacím zvyšuje pravděpodobnost, že modifikace budou udělány čistě a nevzniknout skryté slabiny Open/Close Principle Jednotlivé části kódu by měly být uzavřeny vůči přímým modifikacím, ale otevřeny vůči dalším rozšířením Jakmile je kód jednou dokončen, mělo by se do něj zasahovat pouze při opravách objevených chyb; nové funkce by měly být realizovány pouze přidáním dalšího kódu Připravenost na změny zadání Při návrhu programu bychom měli počítat s tím, že jedinou konstantou současného programování je jistota, že zadání se brzy změní e-bezpečnost v Kraji Vysočina 19
20 Jasné rozdělení zodpovědností Potřebujeme usnadnit budoucí rozhodnutí kam sáhnout, abychom kód požadovaně upravili, a současně minimalizovat množství potřebných zásahů Princip jediného odpovědného (objektu) Single Responsibility Principle Každá část kódu by měla být zodpovědná za jedinou věc, měla by mít jediný, dobře definovaný úkol Oddělení zodpovědností (Separation of concerns SoC) Různá funkcionalita by měla být řešena různými částmi kódu, které by se měly překrývat pouze minimálně To ovšem neznamená, že by různé části kódu nemohly používat společné entity e-bezpečnost v Kraji Vysočina 20
21 Neopakovat kód s podobnou funkcí Objevuje-li se stejný či podobný kód na více místech, musíme při každé modifikaci oběhnout všechna tato místa a všude příslušný kód správně opravit DRY - Don t repeat yourself ; DIE Duplication is Evil Zavrhněte programování copy-paste, neopakujte znovu dříve napsaný kód Princip korektní abstrakce Každá důležitá část funkcionality by měla být implementována na jednom místě. Řeší-li několik částí kódu podobnou funkci, měli bychom je abstrahovat jako obecnější princip a společné jádro pak definovat na jednom místě e-bezpečnost v Kraji Vysočina 21
22 A další Neukládejte důvěrné informace jako běžný text Verifikujte všechny vstupy uživatele Vyvarujte se předčasných snah o optimalizace 60 % zkrachovalých projektů krachuje právě kvůli předčasným snahám o optimalizaci kódu Nechovejte se podle hesla: Proč řežete tupou pilou? Nemáme čas ji nabrousit Sledujte nové trendy v programování OOP, návrhové vzory, nová paradigmata, paralelní programování Sledujte nové technologie Frameworky, jazyky Naučte se anglicky, nebo změňte povolání 2012 e-bezpečnost v Kraji Vysočina 22
23 Vaše jistota na trhu IT Pachy v kódu 2012 e-bezpečnost v Kraji Vysočina 23
24 Uvnitř tříd 1/4 Dlouhé metody Kratší metody se lépe čtou a jsou celkově pochopitelnější Kratší metody obsahují méně chyb a snáze se udržují Komentáře Všechny veřejné metody by měly mít dokumentační komentáře; jejich vynechání je omluvitelné pouze u těch nejjednodušších metod se samovysvětlujícími názvy (většinou getry a setry ) Komentáře by měly vysvětlovat PROČ a ne CO; neměly by duplikovat kód Nutnost použít komentáře bývá často příznakem toho, že metoda je příliš složitá a bylo by ji vhodné rozdělit na několik metod jednodušších Dlouhé seznamy parametrů Snižují srozumitelnost kódu Zavání tím, že kód bude zbytečně složitý Často je výhodné nahradit seznam parametrů přepravkou 2012 e-bezpečnost v Kraji Vysočina 24
25 Uvnitř tříd 2/4 Opakování stejného či podobného kódu Potenciální problémy při úpravách kódu Musíme si pamatovat, kam všude jsme upravovaný kód zkopírovali Na všech místech jej správně upravit Příliš složité podmínky a větvení V převážné většině případů se po rozbití složitých podmíněných konstrukcí kód nejenom zpřehlední, ale také zrychlí Kombinatorická exploze V mnohých případech se objevuje množství variant kódu, které se navzájem liší pouze v maličkostech Často pomáhá vhodné zavedení genericity nebo použití návrhového vzoru Dekorátor Názvy typů v názvech metod Pokud musíte náhodou upravit název typu, musíte pak upravovat i názvy postižených metod 2012 e-bezpečnost v Kraji Vysočina 25
26 Uvnitř tříd 3/4 Velké třídy Jsou stejně obtížně čitelné a spravovatelné jako dlouhé metody Většinou porušují řadu další zásad, především zásadu, že každý objekt (a tím je i třída) má být zodpovědný za jedinou, přesně definovanou věc Kryptické názvy tříd, metod a proměnných Z názvu by mělo být vždy patrné, co má daný objekt na starosti a za co je zodpovědný Nekonzistentní názvy Stejná věc by se měla pokaždé nazývat stejně Java: length size Mrtvý kód Nepoužívaný kód by měl být odstraněn dříve, než jej někdo omylem použije, a to nejspíš spatně Díky správě verzí se k němu můžeme v případě potřeby vrátit 2012 e-bezpečnost v Kraji Vysočina 26
27 Uvnitř tříd 4/4 Zbytečná obecnost Tvořte kód, který řeší současné problémy, a nepřemýšlejte zbytečně nad řešením problémů, které by možná mohly někdy nastat až nastanou, budou se řešit Podivuhodná řešení Řešení problému by mělo být přímočaré a průzračné Podivuhodná řešení jsou často zbytky po duplikovaném a následně všelijak přizpůsobovaném kódu Pomocné atributy Množství pomocných, dočasných atributů bývá příznakem špatně navrženého kódu 2012 e-bezpečnost v Kraji Vysočina 27
28 Příklad důsledku špatného názvu public Vec odebervec(string vec) {//Špatný název parametru for (Vec cokoli2: seznamveci) { if (vec.getnazev().equals(vec)) {//Plete proměnné seznamveci.remove(vec); return vec; } return null; } } public Vec odebervec(string nazevveci) { //Dobrý název for (Vec vec: seznamveci) { if (vec.getnazev().equals(nazevveci)) {//Neplete se seznamveci.remove(vec); return vec; } return null; } } 2012 e-bezpečnost v Kraji Vysočina 28
29 Mezi třídami 1/5 Podobné třídy s rozdílnými rozhraními Třídy, které jsou si podobné uvnitř, ale liší se navenek, je vhodné upravit tak, aby i jejich rozhraní byla podobná či dokonce stejná Posedlost primitivy Nepoužívejte sadu primitiv jako náhradu objektu, který by všechna data sdružoval pod jednou střechou Datové třídy Třídy s instancemi určenými pouze k úschově dat jsou podezřelé; objekt by měl uschovávat data proto, aby s nimi mohl něco dělat Existují i výjimky např. přepravka; tam je ale jasný cíl Shluky dat Vyskytují-li se často pohromadě nějaká data, nejspíš k sobě patří => uvažujte o objektu, který tato data sdruží 2012 e-bezpečnost v Kraji Vysočina 29
30 Mezi třídami 2/5 Odmítnuté vazby Pokud dceřiná třída nepoužívá žádnou funkčnost své rodičovské třídy, je dědičnost nejspíše zbytečná Nevhodné důvěrnosti Jednotlivé třídy by měly mít co nejméně společného Třídy, které toho dělají příliš mnoho spolu bývají příznakem nevhodného návrhu Nevhodné zveřejňování Třída by měla minimalizovat zveřejňování jakýchkoliv informací o svých útrobách, tj. o své implementaci Cíleně minimalizujte zveřejňování takovýchto informací a posilujte tak zapouzdření 2012 e-bezpečnost v Kraji Vysočina 30
31 Mezi třídami 3/5 Líné třídy Každá třída by měl mít pádný důvod pro svoji existenci. Zbytečně definované třídy pouze zvyšují celkovou složitost projektu. Máte-li třídu, která skoro nic nedělá, zamyslete se nad tím, nebylo-li by výhodnější rozpustit její funkčnost mezi ostatní třídy Prostředníci Pokud třída většinu své funkčnosti na někoho deleguje, je v projektu pravděpodobně zbytečná Dávejte si pozor na třídy, které slouží pouze jako obaly na instance jiných tříd a jejich funkcionalitu Prostředníci bývají převlečené závislosti Zřetězení zpráv Dlouhé posloupnosti volání metod a dočasných proměnných potřebné k získání potřebných dat většinou přinášejí skryté závislosti 2012 e-bezpečnost v Kraji Vysočina 31
32 Mezi třídami 4/5 Špatně umístěná metoda Metoda, která intenzivně používá atributy a metody jiné třídy by měla být nejspíš definována ve třídě, jejíž členy používá Rozptýlené změny Vyžaduje-li změna v jedné části třídy nutnost upravit i jinou část, promyslete si, jestli třída neobsahuje dvě relativně nezávislé části, a nebylo-li by ji proto vhodné rozdělit na dvě třídy tak, aby případné změny byly vždy omezeny na jedinou třídu Domino Vyvolá-li změna v jedné třídě kaskádu změn v závislých třídách, je vhodné uvažovat o takové refaktoraci, po níž bude změna omezena pokud možno na jedinou třídu 2012 e-bezpečnost v Kraji Vysočina 32
33 Mezi třídami 5/5 Paralelní hierarchie dědičnosti Občas se stává, že s každou definicí potomka jedné třídy musíte současně definovat i potomka jiné třídy; v takovém případě je vhodné se zamyslet nad tím, zda by nebylo vhodné obě hierarchie dědičnosti nějak sloučit Nekompletní knihovní třída Máme-li knihovnu, jejíž obsah nemůžeme změnit, a potřebujeme-li metodu, která v této knihovně není definovaná, často její definici připíchneme k jiné třídě; vhodnější by ale bylo definovat separátní knihovní třídu, která bude schránkou na takovéto metody Rozmělněné řešení O rozmělněném řešení hovoříme tehdy, je-li k dosažení řešení potřeba příliš mnoho (třeba 5) tříd dané vrstvy; v takovém případě bychom měli uvažovat o úpravě návrhu 2012 e-bezpečnost v Kraji Vysočina 33
34 Vaše jistota na trhu IT Literatura 2012 e-bezpečnost v Kraji Vysočina 34
35 Doporučená literatura 1/7 OOP Naučte se myslet a programovat objektově, Computer Press 2010, ISBN Učebnice pro středoškoláky psaná jako rozhovor Soustředí se na to, jak program navrhnout Není to učebnice jazyka, jazyk je pouze nástroj Učí navrhovat programy podle výše uvedených zásad ICZ, 2011 Rudolf Pecinovský Úvod do OOP 35
36 Doporučená literatura 2/7 Myslíme objektově v jazyku Java Vydala Grada, 2008 ISBN , chystá se nové vydání pro Javu 7 Nepředpokládá žádné předchozí programátorské znalosti Na rozdíl od ostatních učebnic neučí hlavně syntaxi a knihovny, učí především programování Učí navrhovat programy podle výše uvedených zásad a na příkladech ukazuje nebezpečí při jejich nedodržení ICZ, 2011 Rudolf Pecinovský Úvod do OOP 36
37 Doporučená literatura 3/7 M. Fowler: Refaktoring zlepšení existujícího kódu, Grada 2003, ISBN Katalog metod úprav kódu zlepšujících návrh a neměnících funkčnost Velmi dobrý překlad J. Bloch: Java efektivně, 57 zásad sw experta, Grada 2002, ISBN Důležité zásady návrhu dobrého kódu; jedna z nejlepších knih o programování Akceptovatelný překlad K. Beck: Programování řízené testy, Grada 2004, ISBN Představení koncepce + řada doporučení Akceptovatelný překlad, je psána pro Američany Už nejsou v nabídce, je třeba hledat v knihovnách Copyright 2009, Rudolf Pecinovský ICZ 37
38 Doporučená literatura 4/7 Joshua Bloch: Effective Java Second Edition, 2008 Sun Microsystems, Inc. ISBN Prezentace klíčových zásad defenzivního programování spolu s podrobným výkladem možných důsledků porušování těchto zásad Vyhodnocena jako nejlepší kniha o Javě všech dob Autor Javy prohlásil, že kdyby knihu znal, navrhl by podle ní Javu lépe 2012 e-bezpečnost v Kraji Vysočina 38
39 Doporučená literatura 5/7 The CERT Oracle Secure Coding Standard for Java, 2012 Pearson Education, Inc. ISBN Kompendium zásad pro vývoj bezpečných aplikací deklarovaných (a vyžadovaných) firmou Oracle 2012 e-bezpečnost v Kraji Vysočina 39
40 Doporučená literatura 5/7 Vydal Computer Press 2005, ISBN Podrobně vysvětluje řadu konstrukcí, které jinde podrobně česky vysvětlené nenajdete: Parametrizované typy a typové parametry Výčtové typy Anotace Kódování znaků rozšířené sady Unicode Je vyprodaná, ale můžete si ji legálně zdarma stáhnout ve formátu PDF na adrese ICZ, 2011 Rudolf Pecinovský Úvod do OOP 40
41 Doporučená literatura 7/7 Návrhové vzory 33 vzorových postupů pro objektové programování, Computer Press, 2007, ISBN Učebnice návrhu programů pro pokročilejší, předpokládá znalosti zhruba na úrovni modré učebnice Koncipovaná opět jako rozhovor ICZ, 2011 Rudolf Pecinovský Úvod do OOP 41
42 Vaše jistota na trhu IT Rozhraní Implementace Rozhraní Implementace Signatura Kontrakt Dokumentační komentáře Zásady správného programování
43 Programování proti rozhraní Jedna z hlavních zásad říká, že programovat se má proti rozhraní a ne proti implementaci Řada studentů ale stále netuší, co to je rozhraní a k čemu je v programu dobré Další možná umějí implementovat interface, ale vůbec netuší, kdy by jej měli zakomponovat do svého návrhu => Následuje malé opakování 2012 e-bezpečnost v Kraji Vysočina 43
44 Rozhraní Implementace Definuje, co bude zbytek programu o dané entitě vědět Všem na sebe všechno řekne Zabezpečuje, aby entita plnila svoji funkci Všechno se snaží maximálně utajit I samotné rozhraní má dvě složky Signatura Specifikuje vlastnosti, které může zkontrolovat překladač (názvy, typy, ) Kontrakt Doplňuje další důležité informace, které však překladač zkontrolovat nedokáže o jejich dodržení se musí postarat programátor Copyright 2006, Rudolf Pecinovský VŠE 03 44
45 Příklad rozhraní ITvar v projektu Tvary Copyright 2006, Rudolf Pecinovský VŠE 03 45
46 Příklad: Přesouvač Definici plynulého posunu nebudeme programovat v každé třídě, ale vytkneme ji do zvláštní třídy, která bude všechny tvary obsluhovat Instance třídy Přesouvač jsou ochotny plynule přesunout každého, kdo implementuje interface ITvar K implementaci se třídy musí veřejně přihlásit ICZ, 2011 Rudolf Pecinovský Úvod do OOP 46
47 Obsluha instancí neznámí třídy Pokud Přesouvač obsluhuje všechny instance rozhraní ITvar, je schopen plynule přesunout i instance třídy, která v době jeho vzniku ještě vůbec neexistovala stačí, aby třída implementovala ITvar ICZ, 2011 Rudolf Pecinovský Úvod do OOP 47
48 Zjednodušení požadavků Z hlediska objektů, které chtějí být pouze plynule přesouvány, má rozhraní ITvar z předchozího příkladu na implementující třídy zbytečně velké nároky Přesouvači by mělo stačit, když instance umí prozradit svoji pozici a umí se přesunout na zadanou pozici; vše ostatní je zbytečné Lepší řešení je proto definovat nové rozhraní, např. IPosuvný, které omezí své požadavky na ty, jejichž splnění přesouvač bezpodmínečně potřebuje Třída může implementovat několik rozhraní současně Můžeme proto definovat a implementovat i další rozhraní, která např. definují požadavky instancí třídy Kompresor na instance, které chtějí plynule měnit svůj rozměr ICZ, 2011 Rudolf Pecinovský Úvod do OOP 48
49 Implementace více rozhraní Když budou všechny třídy tvarů implementovat všechna rozhraní, diagram se opět znepřehlední K zpřehlednění diagramu využijeme možnosti definovat mezi rozhraními vztahy dědičnosti: Potomek přebírá všechny požadavky předka a může přidat i své vlastní ICZ, 2011 Rudolf Pecinovský Úvod do OOP 49
50 Pravidla dědičnosti rozhraní Rozhraní může být potomkem jiného rozhraní; svého rodiče pak uvede v hlavičce za slovem extends interface IHýbací extends IPosuvný, INafukovací V diagramu tříd znázorňujeme vztah předek potomek šipkou s trojúhelníkovým koncem ukazujícím k předku Dceřiné rozhraní přebírá (dědí) všechny metody deklarované rodičem Třídy implementující dceřiné rozhraní musí implementovat všechny jeho metody včetně zděděných Copyright 2006, Rudolf Pecinovský VŠE 05 50
51 Použití v projektu ICZ, 2011 Rudolf Pecinovský Úvod do OOP 51
52 Vaše jistota na trhu IT Děkuji za pozornost Rudolf Pecinovský mail: ICQ: e-bezpečnost v Kraji Vysočina 52
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íce3. 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íce1. 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íceQuo 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íceMetodika. 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íce1. 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ČÁ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íceGenerá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íceProgramování II. Modularita 2017/18
Programování II Modularita 2017/18 Modul? Osnova přednášky Vývoj programování Modularita Příklad Vývoj programování Paradigmata programování Jak a proč se jazyky vyvíjejí? V čem se OOP liší od předchozích
VíceMetodika Architecture First a její podpora v prostředí BlueJ++
Metodika Architecture First a její podpora v prostředí BlueJ++ Rudolf PECINOVSKÝ rudolf@pecinovsky.cz DidInfo 2015 1 Proč prosazuji metodiku Architecture First Technologická signatura Je třeba předvídat
VícePHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette
Kapitola 1 PHP framework Nette 1.1 Úvod Zkratka PHP (z anglického PHP: Hypertext Preprocessor) označuje populární skriptovací jazyk primárně navržený pro vývoj webových aplikací. Jeho oblíbenost vyplývá
VíceVÝVOJ DISTRIBUOVANÝCH APLIKACÍ V SYSTÉMU PLAANT
VÝVOJ DISTRIBUOVANÝCH APLIKACÍ V SYSTÉMU PLAANT Rudolf Pecinovský Amaio Technologies, Inc., rudolf@pecinovsky.cz ABSTRAKT: Systém Plaant je nástrojem pro vývoj a následnou údržbu distribuovaných databázových
VíceCopyright Rudolf Pecinovský, Soubor: 02_Rozhraní x Interfejs.doc, verze 1.00.2413, uloženo čt 9.10.2014 12:44 1z 55. Rozhraní. interface (interfejs)
Copyright Rudolf Pecinovský, Soubor: 02_Rozhraní x Interfejs.doc, verze 1.00.2413, uloženo čt 9.10.2014 12:44 1z 55 Rozhraní interface (interfejs) Obsah Copyright Rudolf Pecinovský, Soubor: 02_Rozhraní
VíceSada 1 - Základy programování
S třední škola stavební Jihlava Sada 1 - Základy programování 01. Základní pojmy a principy programování Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284
Více14.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íceBridge. 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íceTento 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ícePrincipy OOP při tvorbě aplikací v JEE. Michal Čejchan
Principy OOP při tvorbě aplikací v JEE Michal Čejchan Témata přednášky Principy OOP - připomenutí Úvod - co nás vede k používání OOP Reálný svět - jak (ne)používáme OOP Nedostatky na úrovni programovacích
VíceProgramování II. Abstraktní třída Vícenásobná dědičnost 2018/19
Programování II Abstraktní třída Vícenásobná dědičnost 2018/19 Osnova přednášky Polymorfismus - důsledky. Abstraktní třída. Vícenásobná dědičnost. Polymorfismus - důsledky Polymorfismus Polymorfismus je
VíceVýč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íceZá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íceVyuž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ícePB161 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ícePB161 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ícetypová 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íceVýchozí a statické metody rozhraní. Tomáš Pitner, upravil Marek Šabo
Výchozí a statické metody rozhraní Tomáš Pitner, upravil Marek Šabo Výchozí a statické metody rozhraní Java 8 přidává ohledně metod v rozhraní nové možnosti. Neuvidíme je tedy ve starém kódu a mnozí vývojáři
VíceProgramování II. Třídy a objekty (objektová orientovanost) 2018/19
Programování II Třídy a objekty (objektová orientovanost) 2018/19 Osnova přednášky Objektový přístup (proč potřebujeme objekty). Třídy, objekty,... Příklad. Proč potřebujeme objekty? Udržovatelnost softwaru
VíceŘízení reálných projektů, agilní metodiky
Agent Technology Group Katedra kybernetiky Fakulta elektrotechnická - České vysoké učení technické Praha, 2009 Osnova Lze vyvíjet software bez metodiky? - bohužel ano menší komerční firmy (zejména vývoj
VíceČ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íceknihovna programátora
knihovna programátora Učebnice pro ty, kteří nechtějí zůstat obyčejnými kodéry, ale chtějí se stát špičkovými architekty Postupuje podle metodiky Architecture First Soustředí se na návrh programů a osvojení
VíceŠVP Gymnázium Ostrava-Zábřeh. 4.8.16. Úvod do programování
4.8.16. Úvod do programování Vyučovací předmět Úvod do programování je na naší škole nabízen v rámci volitelných předmětů v sextě, septimě nebo v oktávě jako jednoletý dvouhodinový kurz. V případě hlubšího
VíceObsah. 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íceObjektově 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íceVý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íceObjektově 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ícePolymorfismus. Č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íceAnalýza a Návrh. Analýza
Analysis & Design Návrh nebo Design? Design = návrh Není vytváření použitelného uživatelského prostředí (pouze malinká podmnožina celého návrhu) Často takto omezeně chápáno studenty nedokáží si představit,
VíceOsnova předmětu IB053. Historie předmětu IB053
Osnova předmětu IB053 Část A: Efektivita práce při tvorbě programu 1. Snížení chybovosti při tvorbě programu 2. Snížení doby potřebné k odstraňování chyb 3. Využití dříve napsaných částí programu 4. Nezávislost
VíceVaš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íceObjektově orientované programování? Co to je?
Objektově orientované programování? Co to je? RUDOLF PECINOVSKÝ 1 1 ICZ a.s. Hvězdova 2a, 140 00 Praha 4; VŠE, nám. W. Churchilla 4, 130 67 Praha 3; Tel.: +420 603 330 090, e-mail: rudolf@pecinovsky.cz;
VíceTří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íceIB111 Programování a algoritmizace. Objektově orientované programování (OOP)
IB111 Programování a algoritmizace Objektově orientované programování (OOP) OP a OOP Objekt Kombinuje data a funkce a poskytuje určité rozhraní. OP = objektové programování Vše musí být objekty Např. Smalltalk,
VíceGenerické 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íceProgramování II. Polymorfismus
Programování II Polymorfismus Osnova přednášky Vztah přetížení, překrytí a protected přístupu. Co je polymorfismus? Příklad. Přetížení, překrytí, protected Přetížení x překrytí Přetížením řešíme doplnění
VíceMATURITNÍ 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íceVlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací.
Trochu teorie Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací. Každá spuštěná aplikace má alespoň jeden proces
Více1 Strukturované programování
Projekt OP VK Inovace studijních oborů zajišťovaných katedrami PřF UHK Registrační číslo: CZ.1.07/2.2.00/28.0118 1 Cíl Seznámení s principy strukturovaného programování, s blokovou strukturou programů,
VíceDynamicky vázané metody. Pozdní vazba, virtuální metody
Dynamicky vázané metody Pozdní vazba, virtuální metody Motivace... class TBod protected: float x,y; public: int vrat_pocet_bodu() return 1; ; od třídy TBod odvodíme: class TUsecka: public TBod protected:
VíceDatabázové patterny. MI-DSP 2013/14 RNDr. Ondřej Zýka, ondrej.zyka@profinit.eu
Databázové patterny MI-DSP 2013/14 RNDr. Ondřej Zýka, ondrej.zyka@profinit.eu Obsah o Co je databázový pattern o Pattern: Přiřazení rolí o Pattern: Klasifikace Databázové patterny o Odzkoušené a doporučené
Více1 Úvod 1.1 Vlastnosti programového vybavení (SW)
1 Úvod 1.1 Vlastnosti programového vybavení (SW) - dávkové zpracování - omezená distribuce - zakázkový SW - distribuované systémy - vestavěná inteligence - laciný HW - vliv zákazníka 1950 1960 1970 1980
VíceProgramování II. Dědičnost změna chování 2018/19
Programování II Dědičnost změna chování 2018/19 Osnova přednášky Rozšíření chování. Změna chování. Příklad. Rozšíření chování Když rozšiřujeme chování Můžeme bezpečně použít to, co už máme. Nehrozí žádný
VíceDědění, polymorfismus
Programování v jazyce C/C++ Ladislav Vagner úprava Pavel Strnad Dědění. Polymorfismus. Dnešní přednáška Statická a dynamická vazba. Vnitřní reprezentace. VMT tabulka virtuálních metod. Časté chyby. Minulá
VíceDalším příkladem může být například výstup dat na různá zařízení, souborů, grafických rozhraní, sítě atd.
1. Zapouzdření Cíl látky Tento blok nejdříve přiblíží zásadu zapouzdření a odpoutání kódu a po té na relacích, jako jsou asociace, agregace a kompozice, vysvětlí jak lze objektový zdrojový kód zapouzdřovat
VíceSdílení dat mezi podprogramy
Sdílení dat mezi podprogramy Datové objekty mohou být mezi podprogramy sdíleny pomocí ne-lokálních referenčních prostředí, která jsou vytvářena na základě æ explicitních modifikací (formální parametry
VíceProjekt do předmětu PAS. Textový editor
Projekt do předmětu PAS Textový editor 1. prosince 2005 Kamil Dudka, xdudka00@gmail.com Fakulta informačních technologií Vysoké Učení Technické v Brně Obsah 1 Úvod 1 2 Návrh 1 2.1 Uživatelskérozhraní.....
VíceINOVACE PŘEDMĚTŮ ICT. MODUL 11: PROGRAMOVÁNÍ WEBOVÝCH APLIKLACÍ Metodika
Vyšší odborná škola ekonomická a zdravotnická a Střední škola, Boskovice INOVACE PŘEDMĚTŮ ICT MODUL 11: PROGRAMOVÁNÍ WEBOVÝCH APLIKLACÍ Metodika Zpracoval: Jaroslav Kotlán srpen 2009s Úvod Modul Programování
VíceDOTAZNÍK PRO URČENÍ UČEBNÍHO STYLU
DOTAZNÍK PRO URČENÍ UČEBNÍHO STYLU Projekt MOTIVALUE Jméno: Třida: Pokyny Prosím vyplňte vaše celé jméno. Vaše jméno bude vytištěno na informačním listu s výsledky. U každé ze 44 otázek vyberte a nebo
VíceALGORITMIZACE. Výukový materiál pro tercii osmiletého gymnázia
ALGORITMIZACE Výukový materiál pro tercii osmiletého gymnázia Možnosti zápisu algoritmů 1. Slovní vyjádření 2. Matematický zápis 3. Rozhodovací tabulky 4. Vývojové diagramy 5. Počítačové programy Slovní
VíceProgramování II. Návrh programu II
Programování II Návrh programu II Osnova přednášky Dědičnost shrnutí. Návrh programu s využitím dědičnosti Dědičnost shrnutí Klíčové otázky CO je dědičnost? PROČ použít dědičnost? KDY použít dědičnost?
VíceKapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů
- 1.1 - Kapitola 1: Úvod Účel databázových systémů Pohled na data Modely dat Jazyk pro definici dat (Data Definition Language; DDL) Jazyk pro manipulaci s daty (Data Manipulation Language; DML) Správa
VíceVýsledky bezpečnostního auditu TrueCryptu. Ing. Josef Kokeš. CryptoFest 2015
Výsledky bezpečnostního auditu TrueCryptu Ing. Josef Kokeš CryptoFest 2015 Obsah TrueCrypt Bezpečnostní audity TrueCryptu Audit č. 1 Audit č. 2 Zhodnocení Diskuse TrueCrypt Populární nástroj pro šifrování
VíceCo je refaktorování Historie Proč refaktorovat Kdy refaktorovat Jak refaktorovat Code obfuscation Shrnutí. Refaktorování.
Refaktorování Code refactoring Lukáš Hájek Objektově orientované programování ČVUT v Praze - Fakulta jaderná a fyzikálně inženýrská 8. října 2013 1 / 31 Struktura prezentace 1 Co je refaktorování 2 Historie
VíceNMIN201 Objektově orientované programování 1 / :36:09
NMIN201 Objektově orientované programování 1 / 26 8.10.2013 15:36:09 Objekty Svět se skládá z objektů! konkrétní x abstraktní hmatatelné x nehmatatelné (letadlo) x (chyba v programu) Objekty mohou obsahovat
Více24-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íceKOPENOGRAMY A JEJICH IMPLEMENTACE V NETBEANS
KOPENOGRAMY A JEJICH IMPLEMENTACE V NETBEANS Rudolf Pecinovský ICZ a.s., Na hřebenech II 1718/10, 147 00 Praha 4, VŠE Praha, Fakulta informatiky a statistiky, Katedra informačních technologií rudolf@pecinovsky.cz
VíceIRAE 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Úvod. Programovací paradigmata
.. Úvod. Programovací paradigmata Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Cíl: programování efektivně a bezpečně Programovací techniky
VíceState. Známý jako. Účel. Použitelnost. Stav, Object for States. umožňuje objektu měnit svoje chování v závislosti na stavu objekt mění svou třídu
State State Známý jako Stav, Object for States Účel umožňuje objektu měnit svoje chování v závislosti na stavu objekt mění svou třídu Použitelnost chování objektu závisí na jeho stavu, který se mění za
VíceVÝ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íceVirtuální metody - polymorfizmus
- polymorfizmus - potomka lze použít v místě, kde je možné použít předka - v dosud probraných situacích byly vždy volány funkce, které jsou známy již v době překladu. V situaci, kdy v době překladu není
VíceObjektové 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íceDatabázové patterny. RNDr. Ondřej Zýka
Databázové patterny RNDr. Ondřej Zýka 1 Co to je databázový pettern 2 Databázové patterny Odzkoušené a doporučené způsoby, jak řešit často se vyskytující požadavky Jednoduché N-ární relace Dědičnost Katalog
VícePřekladač a jeho struktura
Překladač a jeho struktura Překladače, přednáška č. 1 Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz http://fpf.slu.cz/ vav10ui Poslední aktualizace: 23. září 2008 Definice
VícePrincipy objektového návrhu. Přednáška 8, LS 2013/2014
Principy objektového návrhu Přednáška 8, LS 2013/2014 Principy objektového návrhu Cílem je vytvořit kvalitní návrh, který bude předcházet vzniku symptomů jako: Ztuhlost - změna SW je obtížná Křehkost -
VícePř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íceMatematika v programovacích
Matematika v programovacích jazycích Pavla Kabelíková am.vsb.cz/kabelikova pavla.kabelikova@vsb.cz Úvodní diskuze Otázky: Jaké programovací jazyky znáte? S jakými programovacími jazyky jste již pracovali?
VíceNávrhové vzory OMO, LS 2014/2015
Návrhové vzory OMO, LS 2014/2015 Motivace Cílem objektového návrhu je strukturu aplikace navrhnout tak, aby splňovala následující kritéria: snadná rozšiřitelnost účelnost testovatelnost dokumentovatelnost
VíceVlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost
Programování Algoritmus návod na vykonání činnosti, který nás od (měnitelných) vstupních dat přivede v konečném čase k výsledku přesně definovaná konečná posloupnost činností vedoucích k výsledku (postup,
VíceNPRG031 Programování II 1 / :25:46
NPRG031 Programování II 1 / 26 28. 2. 2018 11:25:46 Objekty Svět se skládá z objektů! konkrétní x abstraktní hmatatelné x nehmatatelné (letadlo) x (chyba v programu) Objekty mohou obsahovat jiné objekty
VíceVÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Čí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íceSystémy pro podporu rozhodování. Hlubší pohled 2
Systémy pro podporu rozhodování Hlubší pohled 2 1 Připomenutí obsahu minulé přednášky Motivační příklad Konfigurace DSS Co to je DSS? definice Charakterizace a možnosti DSS Komponenty DSS Subsystém datového
Více11 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ícePreprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016
Preprocesor Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016 Programování v C++, A7B36PJC 4/2016, Lekce 9b https://cw.fel.cvut.cz/wiki/courses/a7b36pjc/start
VíceMVC (Model-View-Controller)
MVC vs PAC MVC (Model-View-Controller) Architektonický vzor zabývající se uživatelským rozhraním Odděluje doménovou (bussiness) logiku a uživatelské rozhraní do tří nezávislých komponent: Model View Controller
VíceProgramování v jazyce C a C++
Programování v jazyce C a C++ Příklad na tvorbu třídy Richter 1 4. prosince 2017 1 Ing. Richter Miloslav, Ph.D., UAMT FEKT VUT Brno Dvourozměrné pole pomocí tříd Zadání Navrhněte a napište třídu pro realizace
VíceOOT 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íceVývoj informačních systémů. Přehled témat a úkolů
Vývoj informačních systémů Přehled témat a úkolů Organizace výuky doc. Mgr. Miloš Kudělka, Ph.D. EA 439, +420 597 325 877 homel.vsb.cz/~kud007 milos.kudelka@vsb.cz Přednáška Znalosti Schopnosti Cvičení
Více( ) ( ) 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íceIS pro podporu BOZP na FIT ČVUT
IS pro podporu BOZP na FIT ČVUT Závěrečná zpráva pro 2. iteraci 21. dubna 2011 Zadavatel: Ing. Jiří Chludil Řešitelský tým: Jiří Kopecký Jan Kratochvíl Milan Matějček Štefan Pinďák Kristýna Streitová Úvod
Více20. 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íce6 Objektově-orientovaný vývoj programového vybavení
6 Objektově-orientovaný vývoj programového vybavení 6.1 Co značí objektově-orientovaný - organizace SW jako kolekce diskrétních objektů, které zahrnují jak data tak chování objekt: OMG: Objekt je věc (thing).
VíceVývoj řízený testy Test Driven Development
Vývoj řízený testy Test Driven Development Richard Salač, Ondřej Lanč Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze 23. - 30. 10. 2012 Obsah 1 Testování 2 Klasický přístup
VíceM4 PDF rozšíření. Modul pro PrestaShop. http://www.presta-addons.com
M4 PDF rozšíření Modul pro PrestaShop http://www.presta-addons.com Obsah Úvod... 2 Vlastnosti... 2 Jak modul funguje... 2 Zdroje dat... 3 Šablony... 4 A. Označení šablon... 4 B. Funkce Smarty... 5 C. Definice
VíceKlíčová slova: OOP, konstruktor, destruktor, třída, objekt, atribut, metoda
Anotace sady: Úvod do objektově orientovaného programování, VY_32_INOVACE_PRG_OOP_01 Autor: Blanka Sadovská Klíčová slova: OOP, konstruktor, destruktor, třída, objekt, atribut, metoda Druh učebního materiálu:
VíceVýuka programování pro praxi
Výuka programování pro praxi Rudolf Pecinovský ICZ a.s., 104 00 Praha 4, Hvězdova 1689/2a VŠE, Fakulta informačních technologií, 130 67, Praha 3, nám W. Cuhurchilla 4 rudolf@pecinovsky.cz 1 Úvod Procházíme-li
Víceknihovna programátora
knihovna programátora Učebnice pro ty, kteří nechtějí zůstat obyčejnými kodéry, ale chtějí se stát špičkovými architekty Postupuje podle metodiky Architecture First Soustředí se na návrh programů a osvojení
VíceCommon Object Request Broker Architecture
Common Object Request Broker Architecture Tvorba aplikací, jejichž komponenty budou komunikovat přes počítačovou síť Programátor jedné aplikace volá metody vzdálených objektů podobně jako u sebe lokální
VíceAbstraktní 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íceJak testovat software v praxi. aneb šetříme svůj vlastní čas
Jak testovat software v praxi aneb šetříme svůj vlastní čas Proč testy nepíšeme Nemáme na to čas Platí v cca 5% případů Nový projekt Prototyp je třeba mít během pár dní Počítá se s tím, že další verze
VíceROZDÍL MEZI VZTAHEM EXTEND A INCLUDE V USE CASE DIAGRAMECH
ROZDÍL MEZI VZTAHEM EXTEND A INCLUDE V USE CASE DIAGRAMECH 3. část RNDr. Ilja Kraval, srpen 2009 http://www.objects.cz ÚVOD Tento článek je pokračováním předešlých článků. Článek vysvětluje použití vztahu
Více