Programování II 1. přednáška Alena Buchalcevová
Cíle kurzu Seznámit se s principy objektově orientovaného programování v jazyce Java Základní seznámení s objekty Třídy a instance Volání metod, datové atributy Ladění programů Primitivní a referenční datové typy Základní řídící struktury Jednoduché algoritmy Datové struktury (kolekce, mapy a pole) Statické proměnné a metody Výjimky Dědičnost a rozhraní Práce se soubory Grafické uživatelské rozhraní 2
Co v kurzu nebude vytváření síťových, databázových a vícevrstvých aplikací programování pro web programování pro mobilní zařízení 3
Alena Buchalcevová Programování II Metodika výuky metodika Object First s prvky metodik Design Patterns First a Test First. Základní principy jsou: Výuka probíhá od začátku objektově. Většina projektů hned od začátku obsahuje několik tříd, studenti se učí pracovat s jejich metodami, skládají nové objekty ze stávajících. Co nejdříve je vysvětlen pojem rozhraní. Studenti se učí používat vývoj řízený testy tj. psát jednotkové testy. Studenti jsou od začátku seznamováni se zásadami správného objektového návrhu a s existencí návrhových vzorů. Studenti jsou vedeni k dodržování základních pravidel pro zápis kódu tj. dodržování konvencí pro identifikátory, odsazování kódu, správné pojmenovávání datových atributů, metod, tříd. Pro kontrolu se využívá pmd. 4
Alena Buchalcevová Programování II Vývojová prostředí BlueJ Netbeans 5
Alena Buchalcevová Programování II Literatura Literatura základní PECINOVSKÝ, RUDOLF. JAVA 7 UČEBNICE OBJEKTOVÉ ARCHITEKTURY PRO ZAČÁTEČNÍKY. 1. VYD. PRAHA : GRADA PUBLISHING, 2012. 495 S. ISBN 978-80-247-3665-5. PECINOVSKÝ, RUDOLF. JAVA 8 ÚVOD DO OBJEKTOVÉ ARCHITEKTURY PRO MÍRNĚ POKROČILÉ 1. VYD. PRAHA : GRADA PUBLISHING, A.S, 2014. 656 S. ISBN 978-80-247-4638- 8. Literatura doporučená BRUCKNER, Tomáš, VOŘÍŠEK, Jiří, BUCHALCEVOVÁ, Alena, STANOVSKÁ, Iva, CHLAPEK, Dušan, ŘEPA, Václav. Tvorba informačních systémů. 1. vyd. Praha : Grada Publishing, 2012. 357 s. ISBN 978-80-247-4153-6. PECINOVSKÝ, Rudolf. Návrhové vzory. Computer Press. 2007 6
Alena Buchalcevová Programování II Internetové zdroje http://www.oracle.com/technetwork/java/index.html oficiální stránky Javy 7
Java objektově orientovaný programovací jazyk přenositelný na různé platformy můžeme vytvářet různé druhy programů aplikace applety serverlety a JSP midlety verze 1.0, 1.1, atd. od verze 1.2 se označují jako Java2 poslední verze Java SE 8u72 8
Základní pojmy Zdrojový kód kód programu zapsaný v nějakém programovacím jazyce Cílový kód binární kód, kód vytvořený po překladu zdrojového kódu, je spustitelný Bytekód (Java) specifický mezikód, vzniká jako cílový kód, ale je spouštěn a prováděn běhovým prostředím (Runtime Environment, Virtualní stroj) Knihovna množina souborů obsahujících kód pomocných podprogramů a objektů. Program pak může tyto knihovny připojit a využívat jejich obsah. 9
Java Kompilátor jazyka Java byte kód Java Virtual Machine (interpret) SŘBD: databáze OS: procesy, paměť, disk, síť HW: procesor, paměť, strojový kód 10
procedurální přístup OO přístup Procedura objekt Mars Vypočti rychlost Vypočti tření Vypočti celkovou potřebu paliva objekt Raketa Vypočti váhu rakety... objekt Země 11
procedurální přístup OO přístup Procedury Vypočti mzdu dělníka Vypočti mzdu úředníka objekt Úředník.VypočtiMzdu objekt Dělník.VypočtiMzdu 12
Srovnání obou přístupů základním principem je abstrakce rozdíl je jen ve způsobu provádění této abstrakce procedurální přístup OO přístup data a funkce odděleny data a procedury jsou spojeny v objektech 13
Základní principy OOP používání abstrakce, existence objektů, definování tříd objektů, zapouzdření, ukrývání implementace, komunikace objektů, dědičnost, polymorfismus. 14
Abstrakce proces vytváření jednoduché reprezentace složité reality Nelze udržovat veškeré informace, je třeba rozhodnout, které informace jsou důležité a které ne Např. objekt Student váha, krevní skupina, barva vlasů,..? jméno a příjmení, adresa, rodné číslo, fakulta, obor Základní principy OOP používání abstrakce, existence objektů, definování tříd objektů, zapouzdření, ukrývání implementace, komunikace objektů, dědičnost, polymorfismus. 15
Objekt je určitá část IS (programu), která zpravidla odráží reálný objekt, ale zachycuje jej v kontextu daného IS příklady objektů - Studentský IS Student Jan Vokurka Učitel Pekárek Zkouška, kterou dělal Jan Vokurka u učitele Pekárka dne 15.9.2005 Základní principy OOP používání abstrakce, existence objektů, definování tříd objektů, zapouzdření, ukrývání implementace, komunikace objektů, dědičnost, polymorfismus. 16
Alena Buchalcevová Programování II obsahuje zvnějšku neviditelnou vnitřní paměť (atributy, data) má schopnost přijmout a zpracovat zprávu zvnějšku obsahuje metody, tj. procedury a funkce, které vykonávají nějakou činnost nad vnitřní pamětí objektu 17 může obsahovat jiné objekty
Objekt abstrakce objektu reálného světa má svou identitu každý objekt má určité vlastnosti, které nazýváme atributy, určité chování, které je reprezentováno metodami objektu, reaguje na určité události, má určité vztahy s jinými objekty. 18
Životní cyklus objektu zrod objektu život objektu zánik objektu zajišťuje konstruktor alokace paměti pro objekt naplnění atributů objektu zrod vnořených objektů reakce objektu na zprávy objektu zaslané uvolnění paměti alokované objektem zabezpečení zániku vnořených objektů 19 Programování II Alena Buchalcevová
Třída objektů(class) Každý objekt (např. student) má stejné datové položky a musí reagovat na stejné zprávy. Nemá smysl deklarovat každý objekt znovu a uvádět u něj data a metody - je možné definovat třídu jako typ proměnné, na základě které se potom deklarují objekty je abstrakcí objektů se stejnými vlastnostmi, stejným chováním a stejnými vztahy k ostatním objektům. Příklady tříd Osoba, Firma, Auto, Student Základní principy OOP používání abstrakce, existence objektů, definování tříd objektů, zapouzdření, ukrývání implementace, komunikace objektů, dědičnost, polymorfismus. 20
Třída objektů Každý objekt "zná" svou třídu - třída je implicitní vlastností objektu Objekty téže třídy mají vždy stejné atributy, většinou se liší hodnotami atributů mají mít stejný sémantický význam 21
Třídy pro kreslení tvarů Ctverec velikost xpozice ypozice barva Kruh prumer xpozice ypozice barva kresli vymaz zmenbarvu posunvpravo kresli vymaz zmenbarvu posunvpravo 22
Zapouzdření (encapsulation) nejdůležitější princip OOP data a s nimi pracující procedury a funkce jsou zabaleny do jednoho celku data objektu jsou skryta před ostatními objekty a lze k nim přistupovat pouze pomocí metod objektu Základní principy OOP používání abstrakce, existence objektů, definování tříd objektů, zapouzdření, ukrývání implementace, komunikace objektů, dědičnost, polymorfismus. 23
Výhody zapouzdření kód mění jen vlastník třídy, při změně uvnitř třídy (např. změna typu vnitřní proměnné) se nezmění kód, který tuto třídu používá, uživatel třídy nemusí znát detailní implementaci třídy, zná jen rozhraní jednou odladěné části programu se nemusí znovu ladit, je možné vytvářet objekty simulanty, které mají definováno jen rozhraní a vnitřní zpracování je simulováno, při ladění programu je možné modifikovat metody 24
Ukrývání implementace ( information hiding ) možnost používat metody objektů bez znalosti jejich implementace objekt je černá skříňka, uživatele zajímá jen rozhraní objektu - metody, které objekt zpřístupňuje navenek Základní principy OOP používání abstrakce, existence objektů, definování tříd objektů, zapouzdření, ukrývání implementace, komunikace objektů, dědičnost, polymorfismus. 25
Komunikace objektů Základní vlastností objektů je vysílání a přijímání zpráv, objekt musí mít přístup k druhému objektu musí mít referenci (odkaz) na druhý objekt Základní principy OOP používání abstrakce, existence objektů, definování tříd objektů, zapouzdření, ukrývání implementace, komunikace objektů, dědičnost, polymorfismus. 26
Dědičnost (inheritance) není primárním objektovým principem, i když je důležitým konstruktem OO jazyků představuje znovupoužitelnost na úrovni deklarace třídy je realizací vztahu generalizace-specializace Základní principy OOP používání abstrakce, existence objektů, definování tříd objektů, zapouzdření, ukrývání implementace, komunikace objektů, dědičnost, polymorfismus. 27
Dědičnost Odvozená třída obsahuje všechny datové položky třídy předka kopíruje rozhraní třídy předka, dědí chování třídy předka Student idstudenta jmeno prijmeni fakulta obor stupen rodnecislo Osoba jmeno prijmeni rodnecis lo VSStudent fakulta obor stupen idstudenta 28
Polymorfismus (polymorphism) Alena Buchalcevová Programování II mnoho forem různé objekty mohou reagovat na stejnou zprávu různě vlastnost, která umožňuje pojmenovat určitou akci jedním jménem, přičemž její implementace se v jednotlivých třídách může lišit Základní principy OOP používání abstrakce, existence objektů, definování tříd objektů, zapouzdření, ukrývání implementace, komunikace objektů, dědičnost, polymorfismus. 29
Přínosy OOP snadné použití části kódu v různých programech, snížené náklady na vývoj, možnost snadno rozdělit projekt mezi členy týmu, vylepšené možnosti testování a ladění, vyšší kvalita SW, možnost vytvářet jednoduché a konzistentní objekty a skrýt přitom implementační detaily 30