10 Balíčky, grafické znázornění tříd, základy zapozdření



Podobné dokumenty
Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

8 Třídy, objekty, metody, předávání argumentů metod

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.

Vaše jistota na trhu IT. Balíčky. Rudolf Pecinovský

7.3 Diagramy tříd - základy

1. Dědičnost a polymorfismus

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

Úvod do programovacích jazyků (Java)

7.5 Diagram tříd pokročilé techniky

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

7.3 Diagramy tříd - základy

1. Programování proti rozhraní

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Základy objektové orientace I. Únor 2010

Vyřešené teoretické otázky do OOP ( )

7.5 Diagram tříd pokročilé techniky

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Diagramy tříd - základy

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

PB161 Programování v jazyce C++ Přednáška 7

Výčtový typ strana 67

Seminář Java II p.1/43

5 Přehled operátorů, příkazy, přetypování

PB161 Programování v jazyce C++ Přednáška 7

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

TÉMATICKÝ OKRUH Softwarové inženýrství

IRAE 07/08 Přednáška č. 1

Vytváření a použití knihoven tříd

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

KTE / ZPE Informační technologie

Vývojové nástroje jazyka Java

Dědění, polymorfismus

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo

6 Příkazy řízení toku

Tvorba informačních systémů

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

6 Objektově-orientovaný vývoj programového vybavení

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Programování II. Dědičnost změna chování 2018/19

Objektově orientovaný přístup

Vytváření uživatelských datových typů a funkcí v Javě

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

Úvod do programovacích jazyků (Java)

Programování II. Polymorfismus

NPRG031 Programování II 1 / :25:46

NMIN201 Objektově orientované programování 1 / :36:09

První kapitola úvod do problematiky

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

3. Třídy. Základní pojmy objektového programování. Třídy

Modelování informačních systémů s využitím jazyka UML. Jaroslav Šmarda

UJO Framework. revoluční architektura beans. verze

Programování v C++ 2, 4. cvičení

Objektově orientované programování v jazyce Python

7 Jazyk UML (Unified Modeling Language)

Klíčová slova: OOP, konstruktor, destruktor, třída, objekt, atribut, metoda

Programování v Javě I. Leden 2008

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Programování v jazyce C a C++

Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal

Dalším příkladem může být například výstup dat na různá zařízení, souborů, grafických rozhraní, sítě atd.

Teoretické minimum z PJV

01. HODINA. 1.1 Spuštění programu VB Prvky integrovaného vývojového prostředí. - pomocí ikony, z menu Start.

2 Postup při programování, úvod do programovacího jazyka Java

Abstraktní datové typy: zásobník

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Objekty, třídy, vazby 2006 UOMO 30

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

7 Jazyk UML (Unified Modeling Language)

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

Objektově orientované programování v jazyce Python

PB161 Základy OOP. Tomáš Brukner

Sdílení dat mezi podprogramy

Principy OOP při tvorbě aplikací v JEE. Michal Čejchan

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Programování II. Návrh programu I 2018/19

Programování v C++ 3, 3. cvičení

Objektové programování

Práce s texty, Transformace rastru, Připojení GPS

2 Grafický výstup s využitím knihovny

Úvodem... 9 Kapitola 1 Karetních

C# - OOP (object oriented programming)

Algoritmizace a programování

Softwarové komponenty a Internet

Programování v Javě I. Únor 2009

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

9. Polymorfismus a rozhraní

Objektově orientované programování

Objekty strana 11. Abstrakce je základní objektovou vlastností. Skutečnost, kterou chceme do programu promítnout,

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

PB161 Programování v jazyce C++ Přednáška 1

Algoritmizace a programování

Transkript:

10 Balíčky, grafické znázornění tříd, základy zapozdření 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 příkazům balíčkům, grafickému znázornění tříd a základům zapouzdření. Doba nutná k nastudování 2 2,5 hodiny 10.1 Rozhraní, implementace, signatura, kontrakt V úvodu tohoto bloku seznámíme s pojmy rozhraní, implementace, signatura a kontrakt. Pod pojmem rozhraní rozumíme množinu informací, které o sobě třída zveřejní (např. vše označené jako public). Vše, co nemá být zpřístupněno, tak označíme jako soukromé (tedy private). Pro příklad rozhraní tříd je možné nahlédnou do Java API. 10.2 Balíčky Při programování v jazyce Java se prakticky vždy používají balíčky (package). Balíčky umožňují organizovat větší projekty a členit programy na logické celky. Pomocí balíčky vytváříme tzv. jmenné prostory, přičemž v každém balíčku může být vždy jen jedna třída stejného názvu. Pokud chceme v programu mít dvě třídy (nebo i více tříd) se stejným názvem, tak je nutné každou z těchto tříd umístit do jiného balíčku. Z hlediska práce s balíčky můžeme říci, že se v zásadě jedná se o podobnou práci jako se složkami v operačním systému. Název balíčku také úzce souvisí s názvem třídy, neboť plný název třídy se skládá z uvedení balíčků a názvu třídy, např. třídy Math a String mají tyto plné názvy: java.lang.math java.lang.string Při využívání tříd z balíčků je nutné uvádět příkaz import. Import není nutné uvádět pro balíček java.lang. Při vytváření většího počtu tříd je vhodné přemýšlet nad uspořádáním tříd tak, aby byl program členěn na nějaké logické celky. KST/IZAPR - Základy programování blok 10, strana 1 (5) Michael Bažant

Pro předcházení konfliktů při volbě názvů balíčků je doporučeno používat doménové jméno v opačném pořadí (doménová jména jsou unikátní), např: import cz.upce.fei.izapr.matematika.matice; import cz.upce.fei.izapr.matematika.*; Pro bezproblémovou kompilaci zdrojových souborů je nutné, aby struktura balíčků odpovídala struktuře složek (adresářů) na disku. Pro umístění třídy do balíčku používáme příkaz package, který je vždy (pokud chceme třídu do nějakého balíčku zahrnout) na prvním řádku dané třídy. Příkaz package může být ve zdrojovém souboru třídy vždy pouze jeden, pokud deklarujeme v jednom souboru více tříd, tak tyto třídy musí být vždy v jednom balíčku. 10.3 Java API Java API (Application Programming Interface) zajišťuje klíčové funkce programovacího jazyka Java. Obsahuje celou řadu užitečných tříd (každá třída v Java API je umístěna v balíčku), které lze okamžitě použít ve vlastních aplikacích. Základní API je tak rozsáhlé, že by bylo nad rámec tohoto dokumentu uvádět bližší informace. Java API se pro jednotlivé verze jazyka může značně lišit. 10.4 Grafické znázornění tříd Pro názorné znázornění obsahu tříd a vazeb mezi třídami se používá jazyk UML (Unified Modeling Language). Tento jazyk je natolik rozsáhlý, že je obsahem jiného kurzu. My se v rámci tohoto kurzu seznámíme s úplnými základy tohoto jazyka, přičemž se omezíme pouze na ikonu třídy, asociační vazbu mezi třídami a dědičnost. Nejprve se podíváme na ikonu třídy viz Obrázek 1. Obrázek 1: Ikona třídy KST/IZAPR - Základy programování blok 10, strana 2 (5) Michael Bažant

V záhlaví ikony třídy je uveden název třídy, ve druhé části ikony třídy jsou uvedeny instanční proměnné třídy včetně datového typu a ve třetí části jsou uvedeny metody včetně návratové hodnoty metody. Podtržením jednotlivých prvků znázorňujeme skutečnost, že se jedná o statické proměnné, případně statické metody. 10.5 Přístupová práva V jazyce Java jsou k dispozici základní 4 přístupová práva: default - neuvádí se žádný modifikátor (bez klíčového slova), třída, data nebo metody jsou přístupné pouze v daném balíčku. Graficky znázorňujeme přístupové právo default pomocí symbolu ~. public - třída, data nebo metody jsou přístupné jakýmkoliv třídám v libovolném balíčku. Graficky znázorňujeme přístupové právo public pomocí symbolu +. private - data nebo metody jsou přístupné pouze v deklarující třídě. Graficky znázorňujeme přístupové právo private pomocí symbolu -. protected k bližším informacím o tomto modifikátoru bude uvedeno v části věnované dědičnosti. Graficky znázorňujeme přístupové právo protected pomocí symbolu #. U implicitního konstruktoru jsou přístupová práva vždy stejná jako přístupová práva třídy. 10.6 Základy zapouzdření Pod pojmem zapouzdření rozumíme zamezení přístupu k hodnotám atributů objektů (z důvodu bezpečnosti). Atributy objektů tedy označíme jako privátní a nebudou svému okolí k dispozici pro čtení ani zápis. Pokud je nutné zabezpečit přístup k privátním atributům objektů, tak se používají metody, v jejich tělech máme možnost omezit operace, které budou s daným atributem povolené a tedy bezpečné. Tato praktika je znázorněna na následujícím obrázku - Obrázek 2. Data patřící jednomu objektu jsou tedy skryta objektům dalším, přičemž důležité je mít informace o tom, jaké operace objekt může realizovat, nikoliv jak je realizuje (rozhraní vs. implementace). Skrývání informací (information hiding) zvyšuje stupeň nezávislosti, nezávislost modulů je důležitá pro výstavbu větších systémů a jejich údržbu. KST/IZAPR - Základy programování blok 10, strana 3 (5) Michael Bažant

Cílem zapouzdření je dosáhnout skrytí implementačních detailů třídy a nutit uživatele využívat rozhraní pro přístup k datům, což má za následek lepší údržbu zdrojového kódu. Mezi základní zásady tedy patří atributy tříd definovat privátní a pouze metody zamýšlené pro používání jinými třídami mají být veřejné (public). Obrázek 2: Ikona třídy s přístupovými právy Pokud bychom tento přístup neuplatňovali, mohlo by docházet k zadávaní neplatných dat do programů apod. viz Obrázek 3. Obrázek 3: Veřejné atributy objektu Příklad: d.den = 32; // neplatny den d.mesic = 2; d.den = 30; // mozne, ale spatne d.den = d.den + 1; // zadne overeni platnosti Otázky na procvičení 1. Jak znázorníme přístupová práva default v ikoně třídy? 2. Jak znázorníme statické metody v ikoně třídy? 3. Co znamená přístupové právo private? 4. K čemu slouží balíčky? 5. Jaký příkaz slouží pro definici balíčku? KST/IZAPR - Základy programování blok 10, strana 4 (5) Michael Bažant

Odkazy a další studijní prameny 1. Java API - http://download.oracle.com/javase/6/docs/api/ 2. Java Tutorial - http://docs.oracle.com/javase/tutorial/ KST/IZAPR - Základy programování blok 10, strana 5 (5) Michael Bažant