Programování II 1. přednáška Alena Buchalcevová
©Alena Buchalcevová
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í
Programování II
Cíle kurzu
2
©Alena Buchalcevová
• vytváření síťových, databázových a vícevrstvých aplikací • programování pro web • programování pro mobilní zařízení
Programování II
Co v kurzu nebude
3
• 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.
©Alena Buchalcevová
• metodika Object First s prvky metodik Design Patterns First a Test First. • Základní principy jsou:
Programování II
Metodika výuky
4
©Alena Buchalcevová
• BlueJ • Netbeans
Programování II
Vývojová prostředí
5
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
©Alena Buchalcevová
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-46388.
Programování II
Literatura
6
©Alena Buchalcevová
• http://www.oracle.com/technetwork/java/index.html • oficiální stránky Javy
Programování II
Internetové zdroje
7
• • • •
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
©Alena Buchalcevová
• objektově orientovaný programovací jazyk • přenositelný na různé platformy • můžeme vytvářet různé druhy programů
Programování II
Java
8
©Alena Buchalcevová
• 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.
Programování II
Základní pojmy
9
Java
Java Virtual Machine (interpret)
SŘBD: databáze
OS: procesy, paměť, disk, síť…
HW: procesor, paměť, strojový kód
©Alena Buchalcevová
byte kód
Programování II
Kompilátor jazyka Java
10
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ě
Programování II
OO přístup
©Alena Buchalcevová
procedurální přístup
11
Procedury Vypočti mzdu dělníka Vypočti mzdu úředníka objekt Úředník.VypočtiMzdu
objekt Dělník.VypočtiMzdu
Programování II
OO přístup
©Alena Buchalcevová
procedurální přístup
12
procedurální přístup data a funkce odděleny
OO přístup data a procedury jsou spojeny v objektech
©Alena Buchalcevová
základním principem je abstrakce rozdíl je jen ve způsobu provádění této abstrakce
Programování II
Srovnání obou přístupů
13
používání abstrakce, existence objektů, definování tříd objektů, zapouzdření, ukrývání implementace, komunikace objektů, dědičnost, polymorfismus.
©Alena Buchalcevová
• • • • • • • •
Programování II
Základní principy OOP
14
Abstrakce • proces vytváření jednoduché reprezentace složité reality
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.
©Alena Buchalcevová
Programování II
Nelze udržovat veškeré informace, je třeba rozhodnout, které informace jsou důležité a které ne
15
Objekt
• 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.
©Alena Buchalcevová
Programování II
• 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
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
17 obsahuje metody, tj. procedury a funkce, které vykonávají nějakou činnost nad vnitřní pamětí objektu
může obsahovat jiné objekty
©Alena Buchalcevová
• 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 .
Programování II
Objekt
18
Životní cyklus objektu zrod objektu zajišťuje konstruktor alokace paměti pro objekt naplnění atributů objektu zrod vnořených objektů
život objektu reakce objektu na zprávy objektu zaslané
zánik objektu uvolnění paměti
alokované objektem zabezpečení zániku vnořených objektů
19 Programování II
©Alena Buchalcevová
Třída objektů(class)
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.
©Alena Buchalcevová
• 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
Programování II
• 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
20
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
©Alena Buchalcevová
• Každý objekt "zná" svou třídu - třída je implicitní vlastností objektu
Programování II
Třída objektů
21
Kruh
velikost xPozice yPozice barva
prumer xPozice yPozice barva
kresli vymaz zmenBarvu posunVpravo ……
kresli vymaz zmenBarvu posunVpravo ……
©Alena Buchalcevová
Ctverec
Programování II
Třídy pro kreslení tvarů
22
Zapouzdření (encapsulation)
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.
©Alena Buchalcevová
Programování II
• 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
23
©Alena Buchalcevová
• 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
Programování II
Výhody zapouzdření
24
Ukrývání implementace ( information hiding )
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.
©Alena Buchalcevová
Programování II
• 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
25
Komunikace 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.
©Alena Buchalcevová
Programování II
• 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
26
Dědičnost (inheritance)
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.
©Alena Buchalcevová
Programování II
• 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
27
Dědičnost
Student idStudenta jmeno prijmeni fakulta obor stupen rodneCislo
Osoba jmeno prijmeni rodneCis lo
©Alena Buchalcevová
všechny datové položky třídy předka kopíruje rozhraní třídy předka, dědí chování třídy předka
Programování II
Odvozená třída obsahuje
VSStudent fakulta obor stupen idStudenta
28
Polymorfismus
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.
©Alena Buchalcevová
• 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
Programování II
(polymorphism)
29
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
©Alena Buchalcevová
• • • • • •
Programování II
Přínosy OOP
30