Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Vaše jistota na trhu IT 1. Základy OOPVSE, 2009 © Rudolf Pecinovský 1 Úvod do OOP Rudolf Pecinovský

Podobné prezentace


Prezentace na téma: "Vaše jistota na trhu IT 1. Základy OOPVSE, 2009 © Rudolf Pecinovský 1 Úvod do OOP Rudolf Pecinovský"— Transkript prezentace:

1 Vaše jistota na trhu IT 1. Základy OOPVSE, 2009 © Rudolf Pecinovský 1 Úvod do OOP Rudolf Pecinovský

2 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 2 Předmět 4IT101 – Úvod do programování ►Rudolf Pecinovský ►Prozatímní stránka předmětu: ► ►Tel: ►Konzultace:

3 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 3 Stránky související s kursem ►java.vse.cz ● Studijní informace (harmonogram, podmínky) ● Konvence, dokumentace a tutoriál k Javě (anglicky) ● Informace o navazujících kurzech a další ►isis.vse.cz ● Prezentace k přednáškám a cvičením ● Odevzdávání semestrálních prací ● Bodové hodnocení odevzdaných prací ►vyuka.pecinovsky.cz/vse/101 ● Moje přednášky ● Některé doplňující informace ● Informace pro moje kroužky

4 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 4 Učebnice ke kurzu1/6 ►Java 7 – Učebnice objektové architektury pro začátečníky ● Grada © 2012 ISBN ►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í ►Letos v říjnu vyjde 2. díl: Java 8 – Učebnice objektové architektury pro mírně pokročilé ● Grada © 2014 ISBN

5 Učebnice ke kurzu2/6 ►OOP - Learn Object Oriented Thinking & Programming ● Eva & Tomas Bruckner Publishing © 2013 ● ISBN (paper) ● ISBN (PDF) ● Anglická verze učebnice OOP – Naučte se myslet a programovat objektově ►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 Didinfo

6 Učebnice ke kurzu3/6 ►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 Didinfo

7 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 7 Učebnice ke kurzu4/6 ►Myslíme objektově v jazyku Java ● Grada © 2008 ISBN ►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í ►Nové vydání pokrývá celou látku prvního semestru ►Pořadí jednotlivých témat je sice trochu jiné, ale obsah zůstává

8 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 8 Učebnice ke kurzu5/6 ►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

9 Učebnice ke kurzu6/6 ►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 Didinfo

10 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 10 NEdoporučované učebnice ►OOP Objektově orientované programování bez předchozích znalostí – Průvodce pro samouky ►Předchozí znalosti bohužel neměl ani autor ►Kniha učí OOP podle představ, podle nichž se učilo před 20 lety, když pravého ducha OOP mnozí vyučující ještě nechápali ►Bude-li někdo u zkoušky tvrdit to, co autor knihy, bezpečně od zkoušky vyletí

11 Vaše jistota na trhu IT 1. Základy OOPVSE, 2009 © Rudolf Pecinovský 11 Java – jazyk a platforma 27–37

12 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 12 Význam a funkce platformy ►Použitelnost SW je dána aktuální kombinací HW+OS Platforma HW Instrukční soubor Aplikace OS Dostupné funkce

13 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 13 Překlad × interpretace – charakteristika ►Zdrojový kód – textový soubor, v němž je program zapsán v jazyku, kterému rozumí člověk ►Překlad ● Překladač převede zdrojový kód do binárního tvaru, který je počítač schopen přímo provádět ● Přeložený program je pak schopen spustit přímo operační systém ►Interpretace ● Pro spuštění programu musí být v počítači interpret, který čte zdrojový kód a rovnou jej provádí ►Hybridní přístup ● Program je sice přeložen, ale ne do jazyka počítače, ale do jazyka předem známého interpretu který je optimalizován ●Pro maximální rychlost interpretace ●Pro JIT (Just In Time) Compiling – Program se překládá až při svém spuštění

14 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 14 Problémy překladu s platformami ►OS může zakrýt drobné odchylky HW, rozdílné OS na stejném HW však definují různé platformy ►Velké aplikace běží často na několika platformách ● Každá rodina procesorů má vlastní instrukční soubor ● Různé počítače běží pod různými operačními systémy ►Překládaný program musí být přeložen a odladěn pro danou platformu ►Při inovacích HW nebo OS je často nutno pořídit také novou verzi příslušného programu

15 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 15 Překlad × interpretace – výhody ►Výhody překladu ● Rychlost ● Možnost lepšího naladění na konkrétní HW + OS ►Výhody interpretace ● Nezávislost na použité platformě – stačí vyvinout interpret (překládané programy potřebují pro každou kombinaci HW+OS znovu přeložit) ►Hybridně zpracovávané programy ● Překlad z jazyka do snadno interpretovatelného mezikódu ● Často opakované části mezikódu lze před provedením přeložit ● Interpret mezikódu bývá označován jako virtuální stroj ● Pro každou platformu stačí vyvinout virtuální stroj

16 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 16 Platforma Java ►Aplikace napsaná pro platformu Java, může běžet na každé HWOS platformě, pro níž je vyvinut virtuální stroj ►Inovace HW či OS doprovázené odpovídající aktualizací virtuálního stroje neovlivní chod provozovaných programů Intel AlphaIntel AlphaApple WindWin Linux MacOS Java Aplikace

17 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 17 Platforma Javy – sestava ►Použitelnost programu je závislá na implementaci platformy Javy na dostupném HW+OS ►Platformu Javy definují tři komponenty ● Použitý virtuální stroj ● Použité knihovny ►Překladač jazyka přeloží program do bajtkódu platformy Java ►Aplikace komunikuje se systémem prostřednictvím knihovny ►Celý program interpretuje virtuální stroj Hardware Operační systém P L A H T W F + O R S M A Virtuální stroj Knihovna Forth GroovyJava P L A J T A F V O Y R M A ScalaJRubyJython Aplikace

18 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 18 Platformy Javy – výčet ►Java SE (Standard Edition) ● Desktopové aplikace ►Java EE (Enterprise Edition) ● Nadstavba nad JSE ● Velké distribuované aplikace ● Podporuje vícevrstvou architekturu ►Java ME (Micro Edition) ● Především v mobilních telefonech ● Zatím převážně hry, ale množí se aplikace spolupracující se servery ►JavaCard ● Programování čipových karet Java EE Java SE Java ME My se omezíme na Java SE JavaCard

19 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 19 Platforma Java ►Aplikace napsaná pro platformu Java, může běžet na každé HWOS platformě, pro níž je vyvinut virtuální stroj ►Inovace HW či OS doprovázené odpovídající aktualizací virtuálního stroje neovlivní chod provozovaných programů Intel AlphaIntel AlphaApple WindWin Linux MacOS Java Aplikace

20 Rozšířenost programovacích jazyků 9/ Základy OOP VSE, 2009 © Rudolf Pecinovský 20

21 Rozšířenost programovacích jazyků 9/ Základy OOP VSE, 2009 © Rudolf Pecinovský 21

22 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 22 Výhody Javy pro výuku programování ►Jednoduchá (základy jazyka lze naučit za semestr) ● Jednodušší než C #, C++, Delphi, Visual Basic, … ►Čistá (neobsahuje sporné konstrukce) ►Objektově orientovaná ►Bezpečná (nabízí málo příležitostí k dělání chyb) ►Univerzální ● Používaná od čipových karet pro rozsáhlé distribuované aplikace ● Podporuje klíčové technologie: výjimky, paralelní procesy, distribuované aplikace, webové aplikace ►Nezávislá na platformě ►Nejpoužívanější jazyk současnosti (firmy požadují její znalost)

23 Zajímavosti Citáty ►Some people prefer other languages, but that’s okay if you’re retarded I guess. Eric Schmidt ►Any fool can write code that a computer can understand. Good programmers write code that humans can understand. Martin Fowler, Refactoring O Javě ►Lady Java: techcrunch.com/2010/08/20/lady-java/ techcrunch.com/2010/08/20/lady-java/ ►Java4ever: 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 23

24 Vaše jistota na trhu IT 1. Základy OOPVSE, 2009 © Rudolf Pecinovský 24 Vývojová a běhová prostředí 28 38–41

25 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 25 Prostředí JRE a JDK ►Pro Běh programů se používá JRE (Java Runtime Environment – běhové prostředí Javy) ● Instalační soubory mají okolo 40 – 90 MB (záleží na cílovém OS) ● Instalace zabere (dle instalovaných vlastností) cca 160 MB ● Obsahuje virtuální stroj a standardní knihovny ● Umožňuje pouze spouštět hotové programy ►Pro vývoj se používá JDK (Java Development Kit) ● Obsahuje JRE + vývojové nástroje ● Instalační soubory verze 8 mají od 100 MB (Solaris) do 200 MB (Mac OS) ● Po instalaci zabere (dle instalovaných vlastností) cca 320 MB (Windows) ● Součástí instalace je i ZIP se zdrojovými soubory knihovny; rozbalené zdrojové soubory zaberou dalších 120 MB ●Základní knihovna je v jednom souboru a grafická knihovna JavaFX v druhém ● Samostatně se stahuje dokumentace – dalších 100 MB ●Dokumentace základní knihovny a knihovny JavaFX se stahuje zvlášť ● Rozbalená dokumentace zabere dalších 420 MB

26 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 26 Instalace JDK 8.0 ►JDK 8: ● Dokumentace se stahuje ze stejné adresy, ale samostatně (je na stránce dole) ►Doporučuji neinstalovat do nabídnuté složky, ale vytvořit složku Java pro všechny programy v Javě ● JDK instalovat ve Windows do složky C:\Java\JDK_8 ● JRE instalovat ve Windows do složky C:\Java\JRE_8 ● Smazané číslo revize umožňuje snadnější aktualizaci aniž by bylo třeba rekonfigurovat programy ►Dokumentaci doporučuji instalovat do složky C:\Java\JDK_8\docs ►Dokumentace ke standardní knihovně má pak kořen v souboru C:\Java\JDK_8\docs\api\index.html

27 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 27 Vývojová prostředí ►Vývojové prostředí = sada nástrojů, které mají maximálně usnadnit vývoj aplikací ►IDE – Integrated Development Environment ►V tomto semestru budeme zpočátku používat prostředí BlueJ ● Vyvinuté speciálně pro výuku ● Lze se je kompletně naučit za 20 minut (typické profesionální IDE je složité asi jako celá Java) ● Umožňuje od samého počátku výuky nahlížet na projekt také z hlediska architektury a ne jenom z hlediska kódu ● Nabízí možnost interaktivní komunikace s vytvořenými objekty, což klasická IDE nenabízejí ● Automatizuje tvorbu některých tříd interaktivní metodou podobnou metodě tvorby maker v programech MS Office

28 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 28 Instalace BlueJ ►BlueJ ● Oficiální stránky prostředí: ● Nedoporučuji z nich prostředí instalovat, protože budeme používat prostředí s upravenou konfigurací ►Předkonfigurovaný lokalizovaný systém na mých stránkách ►Na stránkách učebnic jsou i generátory projektů s doprovodnými programy ● Česky:http://knihy.pecinovsky.cz/uoa1_j7/index.html#ForDownloadhttp://knihy.pecinovsky.cz/uoa1_j7/index.html#ForDownload ● Anglicky:http://edu.pecinovsky.cz/books/lootp/index.html#Programyhttp://edu.pecinovsky.cz/books/lootp/index.html#Programy

29 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 29 Další vývojová prostředí ►NetBeans ● Vyvíjené pod patronací firmy Sun v Praze (Sun je koupil od české firmy, která je vyvinula) ● Lze je stáhnout na adrese ● Instalační soubory verze určené pouze pro Java SE mají 90 MB ● Bude používáno vyučujícím ►Eclipse ● Vývoj iniciovala firma IBM ● Jeho vzhled je bližší nativním okenním aplikacím ● Lze je stáhnout na adrese ►IntelliJ IDEA ● Jediné placené, ale existuje zdarma stáhnutelná komunitní verze ● Lze je stáhnout na adrese

30 Vaše jistota na trhu IT 1. Základy OOPVSE, 2009 © Rudolf Pecinovský 30 Ohlédnutí do historie

31 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 31 Historické mezníky programování ►1843 – První programy – Charles Babbage, Lady Lovelance ►1941 – První fungující samočinný počítač (Zuse – Německo) ►1946 – První programovací jazyk Plankalkül (Konrad Zuse) ►1947 – ENIAC a von Neumannova architektura (Maďar s německým jménem žijící v USA) ►1957 – První implementovaný programovací jazyk FORTRAN ►1967 – První objektově orientovaný jazyk: Simula 67 ►1968 – Dijkstra: Go To Statement Considered Harmful ►1970 – Programovací jazyk Pascal – Start projektu Smalltalk – Programovací jazyk C

32 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 32 Historické mezníky OOP ►1967 – Jazyk Simula 67 – zavedl základní myšlenky ►1980 – Zveřejnění jazyka Smalltalk 80 (start 1970) ● Jazyk, který dotáhl myšlenky OOP ● Doposud používán, často považován za „nejobjektovější“ jazyk ►1985 – Vydána první verze jazyka C++ (start 1979) ● Rozšířil myšlenky OOP mezi programátory ● Stále jeden z nejrozšířenějších jazyků ►1995 – Zveřejněn jazyk Java (start 1991) ● Nejrozšířenější jazyk současnosti ● 1999 – Platformy JavaCard, J2ME, J2SE, J2EE ● 2004 – Java 5.0 – nejvýraznější rozšíření syntaxe ►2002 –.NET jako reakce na obrovský úspěch J2EE – Jazyky C #, Visual Basic.NET, časem J #

33 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 33 Historické mezníky posledních 25 let 1980–Nástup mikropočítačů, o programování se začínají zajímat masy nadšenců –Pod vlivem OO jazyků se narodil jazyk C –C++ nastupuje svoji vítěznou dráhu světem –OOP začíná stále silněji pronikat do praxe, často je však implementováno špatně (a mnozí jej takto špatně učí dodnes) 1990–Přibývá textů vysvětlujících rozdíl mezi prostým používáním tříd a skutečným OOP 1995–Vyšla kniha Design Patterns, nastartovala celé hnutí –Narodil se současný nejpoužívanější jazyk Java 2000–Metodika Object First 2005–Metodika Design Patterns First

34 Vaše jistota na trhu IT Co je to „bezpečné“? ►Bezpečné × zabezpečené aplikaceBezpečné × zabezpečené aplikace ►Nebezpečnost geniálních programátorůNebezpečnost geniálních programátorů ►Používané paradigmaPoužívané paradigma ►Nevýhody předčasné koncentrace na kódNevýhody předčasné koncentrace na kód ►Problémy přechodu na nové paradigmaProblémy přechodu na nové paradigma 2012 – e-bezpečnost v Kraji Vysočina 34

35 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 35

36 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 36

37 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 37

38 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 12 – 18 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 38

39 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 39 Common 2011

40 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 40 Metodika Design Patterns First ►Jiný způsob myšlení vyžadovaný OOP dělá někdy problémy těm, kteří již programovali strukturovaně ● Musí se nejprve odnaučit mnohé z toho, na co jsou zvyklí ● Programy dříve považované za ukázkové, se občas stávají ukázkami toho, jak se to nemá dělat ►To, co je třeba dostat co nejhlouběji „pod kůži“, tj. způsob myšlení, je třeba učit od samého počátku ● Jiný způsob myšlení při návrhu programu ● Třídy, objekty a práce s nimi ● Rozhraní ● Návrhové vzory ►Metodika Architecture First ● Začíná s výukou klíčových dovedností ● Další zařazuje až tehdy, když jsou pro řešení úloh potřebné

41 Vaše jistota na trhu IT 1. Základy OOPVSE, 2009 © Rudolf Pecinovský 41 Objektově orientované programování 11–15 31–33 50–53

42 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 42 Základní idea OOP: Všechno je objekt ►Simula67 byla vyvinuta jako jazyk pro programování simulací ►Později chytrým došlo: Každý program je simulací reálného či virtuálního světa ►Ve světě lze vše považovat za objekt => má-li být simulace přesná, musí umět s objekty pracovat ►Myšlenku, že vše je objekt, OOP rozšiřuje na vše, co můžeme označit podstatným jménem … ►=> jako objekt jsou v OO programech zpracovávány i ● vlastnosti (velikost, barva, směr, …) ● děje (spojení, komunikace, výpočet, …) ● události (spuštění, přerušení, ukončení, …) ●…●…

43 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 43 Zprávy ►V reálném světě jsou všechny děje důsledkem toho, že spolu objekty navzájem interagují – jeden objekt působí na druhý a ten na to reaguje ►Interakce objektů se v OO programech simuluje zasíláním zpráv ● Židle zašle podlaze zprávu o své váze, podlaha ji odpoví, jestli ji unese ►Část kódu definující reakci objektu na zaslanou zprávu nazýváme metoda ►Analogie s telefonem ● Mohu poslat zprávu (SMS, MMS, , …) jen tomu, na koho mám číslo ● Mohu posílat různé zprávy ● Reakce různých lidí na stejnou zprávu mohou být různé

44 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 44 Třídy a jejich instance ►V některých OO jazycích sdružujeme objekty s podobnými vlastnostmi do tříd ►Příslušnost objektu do třídy vyjadřujeme tvrzením, že objekt je instancí dané třídy (termíny objekt a instance jsou synonyma) ►Třída je zvláštní druh objektu, který umí na požádání vytvořit svoji instanci (třída je „továrna“ na vytváření svých instancí) ►Třída = zobecněný klasický datový typ ● Vedle množiny hodnot definuje i množinu přípustných operací nad těmito hodnotami ● Jinými slovy: Třída definuje vlastnosti a schopnosti svých instancí ● Všechno je objekt => i třída je objekt ►Příklad: ● Auto = třída představující obecné auto ● Moje auto, sousedovo auto a každé další auto jsou její instance

45 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 45 Základní pilíře OOP ►Zapouzdření (kód je pohromadě se zpracovávanými daty) ● Skrývání implementace (nikdo nemá mít šanci zjistit, jak je program implementován) ● Zvýšení bezpečnosti a robustnosti (nemožnost nekorektního použití) ● Usnadnění budoucích modifikací ►Identita ● Každá zpráva musí mít svého adresáta, nelze ji posla „do prostoru“ ● Objekt sám rozhodne, jak na zprávu zareaguje ● Důsledek: polymorfizmus – operativní změna typu za chodu programu (nyní jsem číšník, za chvíli budu obsluhovaný host) ►Skládání ● Objekt může obsahovat jiné objekty ● Dědičnost – speciální případ, při němž s objektem převezmu i jeho rozhraní ●Omezuje duplicity v kódu ●Nebezpečí špatného použití (narušuje zapouzdření)

46 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 46 Návrhové vzory – Design Patterns ►Programátorský ekvivalent matematických vzorečků ►Výhody: ● Zrychlují návrh (řešení se nevymýšlí, ale jenom použije) ● Zjednodušují a zpřesňují komunikaci mezi členy týmu (větou, že diskriminant je záporný, řeknu znalým jednoduše řadu věcí, které bych musel jinak složitě vysvětlovat) ● Zkvalitňují návrh ● Jsou ověřené, takže výrazně snižují pravděpodobnost potenciálních chyb typu na něco jsme zapomněli ►Znalost návrhových vzorů patří k povinné výbavě současného objektově orientovaného programátora

47 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 47 Strukturovaný versus OO program ►Strukturovaný program „=“ posloupnost příkazů ● Analýza: vymýšlejí se postupy ● Stavební kameny: procedury/funkce; (proměnné) ● Výsledek: většinou samostatný program ● Vedlejší cíle: efektivita ►Objektově orientovaný program = množina objektů, které si posílají zprávy ● Analýza: definují se účastníci a jejich spolupráce ● Stavební kameny: třídy a objekty ● Výsledek: velmi často komponenta, služba či jiná část celku ● Vedlejší cíle: přehlednost, modifikovatelnost, znovupoužitelnost ►OOP vyžaduje výrazně jiný způsob uvažování než klasické strukturované programování

48 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 48 Výhody objektové orientace ►Zmenšuje sémantickou mezeru ● Přibližuje vyjadřování programátora vyjadřování zákazníka ►Dovoluje lépe zvládat obludné projekty ● Rozkládá celý problém na menší, mentálně uchopitelné části ● Umožňuje snáze spravovat vzájemnou spolupráci těchto částí ►Vyšší stabilita kódu ● Umožňuje zapouzdření kódu spolu s daty nad nimiž kód pracuje ● Dokáže program zabezpečit proti řadě dříve běžných chyb ►Výrazně levnější a snazší údržba kódu ● Umožňuje program předem připravit na změny zadání ►Snazší příprava znovupoužitelného kódu ►V současné době je OOP jedinou akceptovanou technologií pro vývoj kritických programů

49 Vaše jistota na trhu IT 1. Základy OOPVSE, 2009 © Rudolf Pecinovský 49 Třídy a objekty v interaktivním režimu 50–93 114–119

50 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 50 Diagram tříd v BlueJ ►BlueJ usnadňuje koncepční pohled na řešený problém, primárně ukazuje jeho diagram tříd ►Každá třída je představována obdélníkem ►Název třídy je v horní částí obdélníku ►Šipky mezi třídami oznamují, že třída, od níž vede šipka, závisí na třídě, ke které vede šipka ►Šrafování označuje, že třída není dosud přeložena ►V BlueJ si můžeme zahrát na část programu a sami posílat zprávy třídám a jejich instancím

51 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 51 Soubory na disku podle přípon Soubory, jejichž smazání vede narušení projektu ►*.java – zdrojové soubory ►bluej.pkg a package.bluej – služební soubory BlueJ ● Obsahuje informace o diagramu tříd (umístění, uspořádání, vazby, …) ● Soubor bluej.pkg byl používán do verze 2.2.1, ● Od verze se kvůli asociaci používá soubor package.bluej Soubory, které se při každém překladu vytvoří znovu ►*.class – přeložené soubory ● Každý datový typ má vlastní přeložený soubor ►*.ctxt – služební soubory BlueJ ● Obsahuje informace, které jsou následně zobrazovány v dialogových oknech volaných metod

52 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 52 Zaslání zprávy třídě ►V BlueJ lze v interaktivním režimu zaslat zprávu objektu zadáním příkazu z jeho místní nabídky ►Zprávy třídě začínající new požadují vytvoření instance (vyvolávají konstruktor) ►První (u new druhé) slovo příkazu říká, co objekt po zaslání dané zprávy vrátí ►V závorkách za názvem zprávy je seznam upřesňujících parametrů dané zprávy

53 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 53 Vytvoření instance ►V Javě můžeme komunikovat s instancí pouze prostřednictvím odkazu na ni ►Před vytvořením instance se BlueJ zeptá na název odkazu na tuto instanci – na její identifikátor ►Zástupce odkazu na vytvořenou instanci umístí do zásobníku odkazů a označí jej zadaným názvem spolu s názvem její třídy

54 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 54 Pravidla pro tvorbu identifikátorů ►Termín identifikátor se používá pro označení názvu čehokoliv v program (identifikuje ono „cokoliv“) ►Smí obsahovat písmena, číslice a znaky _ a $ ● Znak $ raději nepoužívat ● Písmenem se rozumí jakýkoliv znak, který je v sadě UNICODE označen jako písmeno (včetně japonštiny & spol.) ►Nesmí začínat číslicí ►Nesmí být shodné s některým z klíčových slov ani s názvem některé z předdefinovaných konstant true, fale a null ►Java respektuje velikost znaků, identifikátory ahoj, Ahoj a AHOJ jsou různé

55 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 55 Klíčová slova abstractcontinuefornewswitch assertdefaultifpackagesynchronized booleandogotoprivatethis breakdoubleimplementsprotectedthrow byteelseimportpublicthrows caseenuminstanceofreturntransient catchextendsintshorttry charfinalinterfacestaticvoid classfinallylongstrictfpvolatile constfloatnativesuperwhile

56 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 56 Konvence pro tvorbu identifikátorů Jednotlivé entity jsme ještě neprobírali, ale chci, aby vše o identifikátorech bylo pohromadě. V průběhu kurzu se budu k těmto konvencím vracet ►Velbloudí notace (každé další slovo víceslovného názvu začíná velkým písmenem MojeSkvěláTřída, mojeSkvěláMetoda ) ►Názvy tříd začínají velkým písmenem ( MojeTřída ) ►Názvy proměnných a metod začínají malým písmenem ( mojeMetoda, mojeProměnná ) ►Názvy konstant obsahují jen velká písmena, slova odděluje znak podtržení ( MOJE_KONSTANTA ) ►Názvy balíčků obsahují jen malá písmena, oddělování slov není specifikováno ( můjbalíček, můj_balíček )

57 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 57 Interaktivní zasílání zpráv instancím ►Stejně jako třídám lze zprávy posílat i vytvořeným instancím ►Instanci pošleme zprávu zadáním příkazu z místní nabídky jejího odkazu ►Bude-li to zpráva s parametry, otevře BlueJ dialogové okno, v němž uživatel zadá jejich hodnoty ►Bude-li zpráva něco vracet, otevře na závěr dialogové okno s výsledkem

58 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 58 Animované ukázky ►Ve složce I:\!RUP\Animace Na webu ►Česky komentované animace ● A01_1_Projekty_BlueJ.htm ● A01_2_Slozka_projektu.htm ● A02_1_BlueJ_Interakce.htm ►Anglicky komentované animace ● OOTiJ_A_001a_Animations.htm ● OOTiJ_A_001c_IDE_BlueJ.htm ● OOTiJ_A_002a_Compilation.htm ● OOTiJ_A_003a_FirstInstances.htm

59 Vaše jistota na trhu IT 1. Základy OOPVSE, 2009 © Rudolf Pecinovský 59 Testovací třídy 50–93 114–119

60 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 60 Vývoj řízený testy ►TDD = Test Driven Development ►Nejprve vytvořit testy, teprve pak testovaný program ►Zásady ● Při počátečním návrhu testů programátor definuje testy, které prověřují co má testovaná entita (třída, metoda) umět ● (Při návrhu testů po vytvoření entity programátor většinou netestuje to, co má entita umět, ale to, co naprogramoval) ● Cílem následného vývoje je pak již pouze dosažení toho, aby připravené testy prošly ►Výhody ● Výrazný nárůst produktivity ● Neméně výrazný nárůst spolehlivosti výsledných programů

61 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 61 Jednotkové testy a knihovna JUnit ►Jednotkové testy (Unit tests) jsou testy programových jednotek ►Jednotkou bývá většinou třída, ale mohu to být i větší celky ►Pro tvorbu automaticky vyhodnocovaných jednotkových testů se nejčastěji používá knihovna JUnit nebo její odvozeniny ►Všechna „lepší“ vývojová prostředí mají zabudovanou podporu knihovny JUnit ►Většinou bývá stejná sada objektů testována z různých pohledů; JUnit proto zavádí následující technologii: ● Testovaná sada objektů označovaná jako testovací přípravek je připravena samostatně ● Testovací přípravek je nahrán před spuštěním každého testu; test pak pouze prověřuje chování objektů z přípravku ● Pro každý testovací přípravek musí být vytvořena samostatná testovací třída s testy objektů z tohoto přípravku

62 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 62 Testovací třídy v BlueJ 1/2 ►S vytvořením testovací třídy je nám BlueJ ochoten pomoci ● My mu ukážeme, co má třída umět, on ji naprogramuje ● Používá se podobný mechanizmus jako při deklarování maker v různých kancelářských programech ►Testovací přípravek ● Kód vytvářející testovací přípravek je pro všechny testy dané třídy společný, a proto se definuje zvlášť ● BlueJ zaznamenává všechny akce od posledního restartu VM ● Na požádání pak vše zapíše do metody vytvářející přípravek ● BlueJ umožňuje spustit tento kód nezávisle a získat tak přípravek ►Testy ● Pro start záznamu dalšího testu je speciální příkaz ● Po zadání příkazu se nejprve vytvoří přípravek a pak začne záznam ►Zprávy posílané testovací třídě žádají spuštění testu

63 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 63 Testovací třídy v BlueJ 2/2 ►Tvorba přípravku Po restartu postupně předvedeme, jak se má přípravek vytvářet a na konci zadáme příkaz Dosavadní činnost -> Testovací přípravek ►Přípravek můžeme kdykoliv upravit ►Tvorba testu Po zadání příkazu Vytvořit testovací metodu se automaticky zavede přípravek, který pak budeme testovat ►Testy není možno upravit, musí se nahrát znovu

64 Vaše jistota na trhu IT 1. Základy OOPVSE, 2009 © Rudolf Pecinovský 64 Zprávy s parametry a návratovou hodnotou 50–93 114–119

65 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 65 Zprávy s parametry ►Při zasílání některých zpráv je možno zadat upřesňující parametry ►Jako parametry se zadávají hodnoty, na jejichž základě objekt modifikuje svoji reakci na zprávu

66 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 66 Datové typy ►Veškerá data, s nimiž chceme v programu v Javě pracovat, musí mít předem určen svůj datový typ, který definuje, co jsou příslušná data zač ►Java dělí datové typy do dvou skupin ● Typ-netyp void ● Primitivní datové typy – pouze 8 zástupců: boolean, byte, short, int, long, float, double, char, ● Objektové datové typy – vše ostatní (ve standardní knihovně Javy 6.0 je definováno přes datových typů, z toho je 3777 veřejných) ►Při práci s daty musíme používat data deklarovaného typu nebo typů s ním kompatibilních ►Při práci s hodnotami objektových typů dostane v Javě (a obecně ve všech moderních programovacích jazycích) žadatel vždy pouze odkaz na daný objekt

67 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 67 Parametry – použití ►Typ hodnoty parametru musí přesně odpovídat deklarovanému typu daného parametru ►Pořadí předávání hodnot parametrů musí dodržovat pořadí jejich deklarace ►Jako hodnoty parametrů objektových typů se předávají odkazy na instance těchto typů

68 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 68 Ukázky práce v interaktivním režimu ►Ve složce I:\!RUP\Animace Na webu ►Česky komentované animace ● A02_2_Testovaci_trida.htm ►Anglicky komentované animace ● OOTiJ_A_004a_Test_Class.htm ● OOTiJ_A_005a_MsgWithReturnValues.htm ● OOTiJ_A_005b_MsgReturningObject.htm ● OOTiJ_A_006a_MsgWithParameters.htm ● OOTiJ_A_006b_ObjectParameters.htm

69 Vaše jistota na trhu IT 1. Základy OOPVSE, 2009 © Rudolf Pecinovský 69 Děkuji za pozornost ►Rudolf Pecinovský mail: ICQ:

70 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 70

71 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 71 Pgm Používaná písma a objekty ► Pgm Příliš žluťoučký kůň úpěl ďábelské ódy (Demi) ● Pgm Příliš žluťoučký kůň úpěl ďábelské ódy (Medium) ● Pgm Příliš žluťoučký kůň úpěl ďábelské ódy (Cond) ►Příliš žluťoučký kůň úpěl ďábelské ódy (Heavy) ● Příliš žluťoučký kůň úpěl ďábelské ódy (Franklin Gothic Book) ● Příliš žluťoučký kůň úpěl ďábelské ódy (Comic Sans MS) ● Příliš žluťoučký kůň úpěl ďábelské ódy (Consolas) Program Keyword Opakování Příliš žluťoučký kůň úpěl ďábelské ódy

72 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 72

73 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 73 Bodování PráceBody Povinné minimum Domácí úkoly, testy, semestrální úloha 405 Semestrální úloha – Adventura 3010 Závěrečný test3015 Celkem100(60)

74 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 74 Podmínky pro ukončení ►Body lze získat za semestrální úlohy (programy), průběžné testy, domácí úkoly a závěrečný písemný test ►Ze závěrečného testu je nutno získat minimálně 15 bodů ►Opakovat lze pouze závěrečný test ►Body lze ztratit za neúčast na cvičeních (více než 3 neomluvené absence) ►Lze získat prémiové body za nadstandardní řešení úkolu. ►Při zjištěném pokusu o podvod (odevzdání cizí práce, cizího programu) bude práce ohodnocena -5 body. ZnámkaBody 190 – – – – 59 4<= 59

75 1. Základy OOP VSE, 2009 © Rudolf Pecinovský 75 Úspěšnost v 1. ročníku dle předmětů 4MM % 5EN % 2PR % 4FI % 4IT % 4IZ % 2AJ % 3MA % 4MM % 4IT % 3MI % 4IZ % 2AJ % 4FI % 4EK % Zimní semestr Letní semestr


Stáhnout ppt "Vaše jistota na trhu IT 1. Základy OOPVSE, 2009 © Rudolf Pecinovský 1 Úvod do OOP Rudolf Pecinovský"

Podobné prezentace


Reklamy Google