OOP v jazyku Java Rudolf Pecinovský VSE, 2009 © Rudolf Pecinovský

Slides:



Advertisements
Podobné prezentace
Makra v Excelu.
Advertisements

Stodůlky 1977 a 2007 foto Václav Vančura, 1977 foto Jan Vančura, 2007.
Webové služby nad IS/STAG 1 / 21 Seminář IS/STAG Kunžak 2008 Seminář IS/STAG – Kunžak 2008 Webové služby nad IS/STAG Lukáš Valenta.
Zpracování informací a znalostí Další přístupy k vyhledávání textových dokumentů Doc. RNDr. Jan Rauch, CSc. Katedra informačního a znalostního inženýrství.
Stručný úvod do UML.
Vlastní skript může být umístěn: v hlavičce stránky v těle stránky
VÝVOJ PROGRAMOVACÍCH JAZYKŮ PERSPEKTIVY ELEKTRONIKY 3. Celostátní seminář, 18. března 2003 Ing. Pavel Pokorný UNIVERZITA TOMÁŠE BATI VE ZLÍNĚ Fakulta technologická.
HYPERTEXT PREPROCESSOR. PROGRAMOVÁNÍ. DEFINICE POJMŮ Problém Problém nevyřešený, nežádoucí stav obvykle vyžaduje nějaké řešení Neřešitelný problém Neřešitelný.
Vaše jistota na trhu IT Quo vadis, programování? Rudolf PECINOVSKÝ 2012 – e-bezpečnost v Kraji Vysočina 1.
Student: Ing. Olga Minaříková školitel: doc.akad.soch. Miroslav Zvonek, PhD. srpen 2009.
C# pro začátečníky Mgr. Jaromír Osčádal
Programování v C++ Cvičení.
Operační systém Adam Greguš, 4.A.
PROGRAMOVACÍ JAZYKY (c) Tralvex Yeap. All Rights Reserved.
NÁSOBENÍ ČÍSLEM 10 ZÁVĚREČNÉ SHRNUTÍ
Téma: SČÍTÁNÍ A ODČÍTÁNÍ CELÝCH ČÍSEL 2
Vzdělávací materiál / DUMVY_32_INOVACE_02B14 Příkazový řádek: obsah souborů PŘÍKLADY AutorIng. Petr Haman Období vytvořeníLeden 2013 Ročník / věková kategorie3.
VY_32_INOVACE_INF_RO_12 Digitální učební materiál
Tvorba webových aplikací
VY_32_INOVACE_ 14_ sčítání a odčítání do 100 (SADA ČÍSLO 5)
Definování prostředí pro provozování aplikace dosud jsme řešili projekt v obecné rovině aplikace bude ovšem provozována v konkrétním technickém a programovém.
Algoritmizace a programování
Zábavná matematika.
Dělení se zbytkem 6 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Dělení se zbytkem 5 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Jazyk vývojových diagramů
Čtení myšlenek Je to až neuvěřitelné, ale skutečně je to tak. Dokážu číst myšlenky.Pokud mne chceš vyzkoušet – prosím.
Představujeme službu Samepage
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Dělení se zbytkem 8 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Náhoda, generátory náhodných čísel
Zásady pozorování a vyjednávání Soustředění – zaznamenat (podívat se) – udržet (zobrazit) v povědomí – představit si – (opakovat, pokud se nezdaří /doma/)
OS Windows 7 I. Úprava a nastavení PC Práce se složkami a soubory
TRUHLÁŘ II.ročník Výrobní zařízení Střední škola stavební Teplice
Základy algoritmizace a programování
Programování Michal Žůrek.
DĚLENÍ ČÍSLEM 7 HLAVOLAM DOPLŇOVAČKA PROCVIČOVÁNÍ
Softwareová architektura
PHP – Základy programování
Objektové programování
Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49 Výukový materiál zpracovaný v rámci projektu „Učíme moderně“ Registrační číslo projektu:
Gymnázium, Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Hodonín Software – úvod.
ICQ. Co je ICQ? ICQ je nejpoužívanější a nejpopulárnější komunikační program. ICQ je zkratka slangového výrazu „I seek you“ (hledám tě). Slouží ke komunikaci.
Číslo projektuCZ.1.07/1.5.00/ Číslo materiáluVY_32_INOVACE_257 Název školyGymnázium, Tachov, Pionýrská 1370 Autor Ing. Roman Bartoš Předmět Informatika.
OBJEKTOVÉ METODOLOGIE – JEJICH UŽITÍ A VÝKLAD Ing. Martin Molhanec, CSc.
Přednost početních operací
Dokumentace objektů a zveřejnění funkcí
OSNOVA: a) Úvod do OOPb) Třídy bez metod c) Třídy s metodamid) Konstruktory a destruktory e) Metody constf) Knihovní třídy g) Třídy ve tříděh) Přetížení.
Algoritmizace a programování Objektově orientované programování - 16 Mgr. Josef Nožička IKT Algoritmizace a programování
2 Ing. Jan Keprt Centrální správa uživatelů 3 Jak to bylo dosud Bylo třeba nastavení uživatelů provést zvlášť, v každém modulu samostatně. Uživatel si.
KONTROLNÍ PRÁCE.
IB111 Programování a algoritmizace
Gymnázium, SOŠ a VOŠ Ledeč nad Sázavou I NFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE Ing. Jan Roubíček.
Dokumentace informačního systému
Algoritmizace a programování Úvod do Delphi - 04 Mgr. Josef Nožička IKT Algoritmizace a programování
Úvod do OOP Rudolf Pecinovský VSE, 2009 © Rudolf Pecinovský
Metodika objektového přístupu při tvorbě překladačů. Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
PHP PHP - úvod - 02 Mgr. Josef Nožička IKT PHP
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Programování POCSI. Programovani/POCSI2 Základní pojmy Akce - děj nad objekty, mající začátek a konec, a mající přesně definovaný účinek. Příkaz - popis.
Visual Basic - programování
Klient pro správu databází MySQL 1 Klient pro správu databází MySQL Zbyněk Munzar České vysoké učení technické v Praze Fakulta elektrotechnická.
SOFTWAROVÁ PODPORA PRO VYTVÁŘENÍ FUZZY MODELŮ Knihovna fuzzy procedur Ing. Petr Želasko, VŠB-TU Ostrava.
NÁZEV ŠKOLY:SOŠ Net Office, spol. s r.o. Orlová Lutyně
SOFTWARE Operační systémy.
Výukový materiál zpracován v rámci projektu
Vlastnosti souborů Jaroslava Černá.
Soubor Soubor v informatice označuje pojmenovanou sadu dat uloženou na nějakém datovém médiu, se kterou lze pracovat nástroji operačního systému jako.
Instalace programů do Linuxu
Transkript prezentace:

Rudolf Pecinovský rudolf@pecinovsky.cz OOP v jazyku Java Rudolf Pecinovský rudolf@pecinovsky.cz VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Předmět 4IT101 – Úvod do programování Rudolf Pecinovský Přednášky: http://vyuka.pecinovsky.cz/vse/101 Konzultace: Vždy až po předchozí domluvě Út – Pá, 17:00 – 20:00, Kavčí Hory, Na Hřebenech II 1718/10 Metro Pražského povstání Podrobnosti (včetně GPS souřadnic) ISIS E-mail: rudolf@pecinovsky.cz Tel: +420 603 33 00 90 ICQ: 158-156-600 Jabber: Pecinovsky@jabbim.cz VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Školní 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 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Stránky s informacemi o Javě www.oracle.com/technetwork/java oficiální stránky Javy – v angličtině java.cz Pel-mel o Javě, převážně česky dione.zcu.cz/java/ Řada česky psaných materiálů, avšak některé neaktualizované www.netbeans.org Seriál pro naprosté začátečníky (anglicky) VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Učebnice ke kurzu 1/5 OOP – Naučte se myslet a programovat objektově, Computer Press © 2010, ISBN 978-80-251-2126-9. 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 První polovina plánovaného dvoudílného kompletu učícího OOA&D Didinfo 2010

Učebnice ke kurzu 2/5 Myslíme objektově v jazyku Java Vydala Grada, 2008 ISBN 978-80-247-2653-3 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á VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Učebnice ke kurzu 3/5 J. Pavlíčková, L. Pavlíček: Úvod do Javy ISBN 80-245-0963-6 Skriptum VŠE První část je referenční příručka syntaxe Druhá část obsahuje vzorová řešení předloňských semestrálních prací Vyprodané, lze stáhnout na http://java.vse.cz/4it101/Literatura VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Učebnice ke kurzu 4/5 Vydal Computer Press 2005, ISBN 80-251-0615-2 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 http://knihy.pecinovsky.cz/java5novinky VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Učebnice ke kurzu 4/5 Návrhové vzory – 33 vzorových postupů pro objektové programování, Computer Press, © 2007, ISBN 978-80-251-1582-4 Učebnice návrhu programů pro pokročilejší, předpokládá znalosti zhruba na úrovni modré učebnice Koncipovaná opět jako rozhovor Didinfo 2010

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í VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Proč Java 27–37 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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

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í VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Java = platformní nezávislost Java je programovací jazyk, ale také platforma Aplikace napsaná v Javě, může běžet na každé HWOS platformě, pro níž je vyvinut virtuální stroj Inovace HW či OS doprovázené aktualizací VS neovlivní chod provozovaných programů Aplikace Java Wind Win Linux MacOS Intel Alpha Apple VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 Aplikace Forth Groovy Java Scala JRuby Jython Knihovna P L A J T A F V O Y R M A Virtuální stroj Operační systém P L A H T W F + O O R S M A Hardware VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Java EE Platformy Javy – výčet Java SE 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 My se omezíme na Java SE Java ME JavaCard Java EE Java SE VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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

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

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) VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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/ Java4ever: www.videacesky.cz/parodie-parody-youtube/java-navzdy-trailer VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Vývojová a běhová prostředí 28 38–41 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 20 MB (záleží na cílovém OS) Instalace zabere (dle instalovaných vlastností) cca 100 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 7 mají okolo 80 MB (dle cílového OS) Samostatně se stahuje dokumentace – dalších 58 MB Po instalaci zabere (dle instalovaných vlastností) 150 – 300 MB Rozbalená dokumentace zabere dalších 300 MB Rozbalené zdrojové soubory zaberou dalších 90 MB VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Instalace JDK 6.0 JDK 7: http://www.oracle.com/technetwork/java/javase/downloads /index-jsp-138363.html Stáhněte offline verzi – lépe se s ní pracuje 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_7 JRE instalovat ve Windows do složky C:\Java\JRE_7 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_7\docs Dokumentace ke standardní knihovně má pak kořen v souboru C:\Java\JDK_7\docs\api\index.html VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 používat prostředí BlueJ Vyvinuté speciálně pro výuku Lze se je kompletně naučit za 20 minut (standardní IDE je složité asi jako celá Java) Nabízí možnost interaktivní komunikace s vytvořenými objekty – to v klasických IDE nenajdete Automatizuje tvorbu některých tříd interaktivní metodou podobnou metodě tvorby maker v programech MS Office Umožňuje od samého počátku výuky nahlížet na projekt také z hlediska architektury a ne jenom z hlediska kódu VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Instalace BlueJ BlueJ 3.0.5: http://www.bluej.org/download/download.html Předkonfigurovaný lokalizovaný systém na mých stránkách http://vyuka.pecinovsky.cz/bluej_config Samostatná lokalizace BlueJ a dodatečná konfigurace: http://vyuka.pecinovsky.cz/bluej_config Zde je i návod jak vše instalovat Třetí možnost jsou školní stránky, avšak na nich je systém konfigurovaný trochu jinak VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 http://www.netbeans.org/downloads Instalační soubory verze určené pouze pro Java SE mají 67 MB Plná verze včetně Java ME, Java EE, UML, C++, PHP, Ruby, obsahující i Tomcat a GlassFish má cca 250 MB Eclipse Vývoj iniciovala firma IBM Jeho vzhled je bližší nativním okenním aplikacím Lze je stáhnout na adrese http://www.eclipse.org/downloads Instalační soubory verze 3.7.1 Indigo mají v základní verzi 131 MB, ale je k nim třeba doinstalovat ještě nějaké pluginy VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Ohlédnutí do historie VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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# VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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++ 1985 – 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 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Quo vadis programování? VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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í Programy pracovaly samostatně, navzájem příliš nespolupracovaly Klíčovou úlohou programátora byl návrh algoritmů a základních datových struktur Nyní Většina běžných úloh je vyřešena a řešení jsou dostupná v komponentách či knihovnách Nové program jsou téměř vždy součástí rozsáhlejších aplikací a rámců 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 Klíčovou úlohou je návrh architektury systému VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Programování se vyvíjí (3/3) Dříve Prvotní úlohou programátora bylo vymyslet, jak úkol vyřešit 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) Testy navrhovali programátoři a ověřovali v nich, že program dělá to, co chtěl programátor naprogramovat Návrh testů byl interní záležitostí vývojového týmu Nyní Prvotní úlohou programátora je zjistit, jestli už někde není problém vyřešen Testy se většinou 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 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ů se často stává součástí smlouvy o vývoji programu VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Shrnutí Doba programován jako umění skončila, nastupuje programování jako technologie Chceme-li si programováním vydělávat, musíme umět programovat tak, abychom se naše výtvory dobře prodávali Nejsme-li schopni vyhovět s rozumnou rychlostí a cenou požadavkům zákazníka, najde si vstřícnějšího dodavatele Všechny důležité (a dobře placené) projekty jsou nyní vyvíjeny s využitím OOP a návrhových vzorů => budou-li se chtít studenti dobře uplatnit v praxi, budou se muset naučit OOP a návrhové vzory VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Priority současného programování Funkčnost Robustnosti Modifikovatelnost Srozumitelnost Vstřícnost ke změnám Spravovatelnost Znovupoužitelnost Dosahování těchto cílů výrazně napomáhá používání návrhových vzorů VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Objektově orientované programování 11–15 31–33 50–53 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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í, …) … VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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, e-mail, …) 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é VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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í) VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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í VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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ů VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 Design Patterns First Začíná s výukou klíčových dovedností Další zařazuje až tehdy, když jsou pro řešení úloh potřebné VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Třídy a objekty v interaktivním režimu 50–93 114–119 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 2.5.0 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 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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é VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Klíčová slova abstract continue for new switch assert default if package synchronized boolean do goto private this break double implements protected throw byte else import public throws case enum instanceof return transient catch extends int short try char final interface static void class finally long strictfp volatile const float native super while VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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) VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Animované ukázky Ve složce I:\!RUP\Animace Na webu http://vyuka.pecinovsky.cz/animace Č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 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Testovací třídy 50–93 114–119 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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ů VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Zprávy s parametry a návratovou hodnotou 50–93 114–119 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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 18 000 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 Atové typy VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

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ů VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Ukázky práce v interaktivním režimu Ve složce I:\!RUP\Animace Na webu http://vyuka.pecinovsky.cz/animace Č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 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP

Děkuji za pozornost Rudolf Pecinovský http://vyuka.pecinovsky.cz/vse mail: rudolf@pecinovsky.cz ICQ: 158 156 600 VSE, 2009 © Rudolf Pecinovský 1. Základy OOP