+ All Categories
Home > Documents > XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf ·...

XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf ·...

Date post: 29-May-2018
Category:
Upload: doankhanh
View: 214 times
Download: 0 times
Share this document with a friend
88
OSTRAVSKÁ UNIVERZITA P Ř ÍRODOV Ě DNÁ FAKULTA XJAV1 – OOP PRO INTERNET A INTRANET ING. DAVID BRAŽINA OSTRAVA 2002 1
Transcript
Page 1: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

OSTRAVSKÁ UNIVERZITA P Ř Í R O D O V Ě D N Á F A K U L T A

X J A V 1 – O O P P R O I N T E R N E T A I N T R A N E T

I N G . D A V I D B R A Ž I N A

OSTRAVA 2002

1

Page 2: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Cíle předmětu

Po prostudování textu budete znát: • základní tř ídy používané jazykem JAVA. Seznámíte se ze základními

prostředky pro tvorbu apl ikací a appletů . Poznáte s t rukturu programovacího jazyka JAVA a seznámíte se z jeho syntaxí .

Získáte: • dovednost i ve tvorbě dynamických internetových s tránek. Získáte prakt ické

zkušenost i s tvorbou interakt ivních appletů , budete umě t spoj i t vlastnost i apl ikace a appletu v rámci s loži tě jš ích programových s truktur .

Budete schopni: • Zpracovávat událost i myši a klávesnice a zároveň s těmito událostmi pracovat .

Budete schopni vytvo ř i t interakt ivní apl ikace v rámci webovských s tránek. Nauč í te se pracovat s edi torem JCreator od Xinox Software.

Čas potřebný k prostudování uč iva předmětu:13-14. týdnů

2

Page 3: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Obsah

1. ÚVOD............................................................................................................................. 5

2. HISTORIE JAVY ......................................................................................................... 6 2.1. VÝHODY A NEVÝHODY JAVY ................................................................................... 7

2.1.1. Vlastnosti Javy ................................................................................................ 9 2.2. APLIKACE A APPLETY ............................................................................................ 11

3. JAVASCRIPT ............................................................................................................. 14

4. VÝVOJOVÉ PROSTŘEDÍ JAVY - APLIKACE.................................................... 16 4.1. PLATFORMA JAVY.................................................................................................. 19

5. OBJEKTOVÉ PROGRAMOVÁNÍ JAVY............................................................... 20 5.1. PSANÍ PROGRAMU .................................................................................................. 21 5.2. ZÁKLADNÍ SCHÉMA PROGRAMU............................................................................. 24 5.3. PRÁCE S OBJEKTY .................................................................................................. 25

5.3.1. Odkazování objektů....................................................................................... 26 5.4. TŘÍDY A DĚDIČNOST........................................................................................... 27

5.4.1. Atributy a metody třídy ................................................................................. 29 5.4.2. Import třídy ................................................................................................... 30 5.4.3. Kontrola přístupu.............................................................................................. 31

5.5. METODY ................................................................................................................ 32 5.6. BALÍKY .................................................................................................................. 33

5.6.1. Tvorba a použití balíčků ............................................................................... 34 5.6.2. Výjimky.......................................................................................................... 35

5.7. VÝRAZY ŘÍZENÍ BĚHU PROGRAMU ......................................................................... 36 5.7.1. Komentář....................................................................................................... 37 5.7.2. Identifikátory................................................................................................. 37 5.7.3. Literály.......................................................................................................... 37 5.7.4. Pole ............................................................................................................... 38 5.7.5. Operátory...................................................................................................... 38 5.7.6. Větveni programu.......................................................................................... 39 5.7.7. Smyčky........................................................................................................... 40

5.8. VSTUP A VÝSTUP.................................................................................................... 41 5.8.1. Práce se soubory........................................................................................... 44

5.9. ZPRACOVÁNI VSTUPU A VÝSTUPU MYŠI ................................................................. 48 5.10. SÍŤOVÉ PROGRAMOVÁNÍ V PROSTŘEDÍ TCP/IP ...................................................... 50

6. TEST Č.1 ..................................................................................................................... 52

7. VÝVOJOVÉ PROSTŘEDÍ JAVY - APPLETY ...................................................... 56 7.1. PRÁCE S TEXTEM A GRAFIKOU ............................................................................... 57

7.1.1. Vložení textu.................................................................................................. 58 7.1.2. Typy písma .................................................................................................... 59 7.1.3. Barva písma .................................................................................................. 60

7.2. VYKRESLOVÁNÍ GEOMETRICKÝCH TVARŮ ............................................................. 61 7.2.1. Kreslení čar................................................................................................... 61 7.2.2. Kreslení obdélníků ........................................................................................ 61

3

Page 4: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

7.2.3. Kreslení kružnic a oblouků ........................................................................... 63 7.3. UDÁLOSTI MYŠI A KLÁVESNICE.............................................................................. 64

7.3.1. Události myši ................................................................................................ 64 7.3.2. Události klávesnice ....................................................................................... 71

7.4. PANELY.................................................................................................................. 74 7.5. ZPRACOVÁNI GRAFICKÉ UDÁLOSTI ........................................................................ 75

7.5.1. Další typy grafických objektů........................................................................ 76 7.6. POKROČILÉ PRVKY GRAFICKÉHO ROZHRÁNI .......................................................... 78

7.6.1. Grafické objekty a animace .......................................................................... 79 7.7. TŘÍDA MEDIATRACKER ......................................................................................... 82 7.8. ZVUKOVÉ PŘEHRÁVKY........................................................................................... 84

8. TEST Č.2 ..................................................................................................................... 86

9. SEZNAM POUŽITÉ A DOPORUČENÉ LITERATURY ..................................... 88

4

Page 5: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

1. Úvod

V této kapitole se dozvíte: jak bude členěn kurz XJAV1, podmínky úspěšného absolvování předmětu Doba potřebná k prostudování této kapitoly: 5 minut

Předmět OOP pro Internet a Intranet si klade za cíl seznámit účastníky kurzu

s možnostmi programovacího jazyku JAVA při tvorbě klientských aplikací a appletů. V první polovině semestru se seznámíte s tvorbou aplikací, se síťovými prostředky

Javy, se základním programovým vybavením, a s možnostmi vytváření samostatných programů a jejich výrazovými prostředky.

V druhé polovině semestru se soustředíme na tvorbu appletů, jako prostředků pro

oživení internetových stránek. Dále se seznámíte s množstvím prostředků, které pracují s multimédii jako je zvuk, obrazy a animace.

Pro studium tohoto předmětu je nutná alespoň částečná znalost tvorby internetových

stránek a jazyka HTML. Výhodou je znalost programování v libovolném objektově orientovaném programovacím jazyku.

Podmínkou úspěšného absolvování předmětu je vypracování úkolů označených

symbolem obálky a vypracování odpovědí na testy jedna a dvě. Veškeré dotazy a odpovědí na korespondenční úlohy a testy zasílejte na adresu

[email protected]

5

Page 6: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

2. Historie Javy

V této kapitole se dozvíte o: Vzniku Javy, dynamických WWW, integraci Javy do prohlížeče. Doba potřebná k prostudování této kapitoly: 15 minut

Programovací jazyk Java vznikal kolem roku 1990. Členové vývojového týmu

Green společnosti Sun Microsystems, si uvědomili, že v budoucnosti bude většina spotřební

elektroniky obsahovat počítačové mikroprocesory. Java pak byla výsledkem výzkumu

v oblasti komunikace mezi těmito spotřebními zařízeními.

Prvním spotřebním zařízením, které využívalo novou technologii byl dálkový

ovladač pro televizor a videorekordér. Pomocí animované postavičky přecházel uživatel

s jednoho grafického menu do druhého. Tak spatřila světlo světa první aplikace Javy.

V roce 1993 nastupuje World Wide Web a získává si velkou popularitu. Každý kdo

měl přístup k sítí, se mohl k němu připojit, a nezáleželo na tom jaký po užíval operační

systém.

World Wide Web (dále jen WWW) umožňoval přístup k statickým textům nebo

obrázkům. S rostoucím nárůstem uživatelů internetu se stupňovali požadavky na dynamické

prostředí webovských stránek.

Prvním prohlížečem, který umožňoval spouštění dynamických stránek byl

WebRuner, (později značen jako HotJava).

V roce 1995 byl prostřednictvím sítě internet, zveřejněn zdrojový kód Javy. V témže

roce společnost Netscape integrovala Javu do svého prohlížeče.

6

Page 7: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

2.1. Výhody a nevýhody Javy

n

v

v

u

k

d

n

t

v

n

z

s

V této kapitole se dozvíte o: Internetu a programování, přenositelnosti a virtuálním stroji. O vlastnostech Javy a kompilaci programu, Doba potřebná k prostudování této kapitoly: 30 minut

Může se zdát, že není třeba vyvíjet programovací jazyk pro internet. Vždyť stačí

apsat program v jakémkoliv programovacím jazyce a uložit jako spustitelný soubor

rámci HTML. Pokud by šlo pouze o sepsání a spuštění programu zdá se tento nápad

ynikající. Problémy ale nastanou v případě, pokud se má takto upravená stránka opravdu

místit na web a spouštět se z něj.

Každý takový program bude vyžadovat podporu knihoven, které budou

omunikovat s www stránkami. Tyto knihovny se budou navzájem lišit a tak bude třeba

alší množství knihoven, které program budou doprovázet.

Snad ale nejklíčovějším problémem, který by nastal, je délka programu a doba trvání

ačítání do paměti příjemcova počítače. I natažení velmi malého objemu dat po sítí, může

rvat dlouhou dobu. Poruchy na cestě způsobí, že některé data se budou muset poslat

ícekrát. Výhodou Javy v tomto směru je, že programy, které v Javě vznikají jsou

epoměrně menší než srovnatelné programy psány v jiném programovacím jazyce.

V neposlední řadě by bylo nutné do programu zahrnout spoustu knihoven tak, aby se

aručila potřebná bezpečnost kódu a spouštěcího prostředí.

Velkou zátěží by se stal každý operační systém lišící se architekturou od operačního

ystému autora programu.

7

Page 8: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

To všechno vedlo k tomu aby se z Javy stal programovací jazyk pro svět internetu.

Java je objektově orientovaný, na platformě nezávislý, programovací jazyk. Aplikace psaná

pro Linux, či Windows je bez větších problémů přenositelná na palm-top či mobilní telefon.

Nezávislost Javy je dána tzv. virtuálním strojem, který zajišťuje spustitelnost

zdrojového kódu. Lze ji využít k programování plnohodnotných aplikací na jedné straně a

appletů na straně druhé.

Java není vhodným programovacím jazykem pro systémové programování (operační

systémy, ovládače), tuto nevýhodu kompenzuje podpora internetových technologií, díky

nimž se Java stala univerzálním programovacím jazykem informačních sítí.

8

Page 9: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

2.1.1. Vlastnosti Javy

Syntaxe jazyka je odvozena od jazyků C a C++. Mnoho programových návyků

osvojených v C++ se vám při začátcích s Javou bude hodit. Na rozdíl od C++ není třeba

v Javě dealokovat nepotřebné objekty . Java je odstraní automaticky.

V Javě jsou odstraněny i pointery (ukazatele), preprocesor (makra, direktivy), a další

programové prostředky užívané v C++.

To vede k tomu, že kód je mnohem jednodušší a přehlednější. I když slovo

přehlednější je nutno brát občas s velkou rezervou.

Obr.1

9

Page 10: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Nejdůležitějšími vlastnostmi Javy jsou:

Na platformě nezávislý jazyk. Program který je napsán v javě lze

spustit na libovolném počítači nezávisle na operačním systému. Program

psaný pro javu lze bez větších komplikací přenést na mobilní zařízení

jako jsou mobilní telefony, palm-topy a podobně.

Objektově orientovaný jazyk. Stejně jako C++, Delphi a podobně se i

Java řadí do rodiny objektově orientovaných jazyků. Platí pro ní

stejné pravidla. Výhodou je zde zejména větší přehlednost a

jednoduchost.

Technologie Internetu. Rozmach Javy je víceméně odrazem rozmachu

Internetu. Internetový přenos se uskutečňuje prostřednictvím TCP/IP

protolu a Java jako univerzální programovací jazyk jej podporuje spolu

s řadou dalších internetových technologií jako jsou grafické, zvukové

i filmové formáty. Jazykovým kódem Unicode podporuje i řadu

neanglických jazyků.

Multithreading. Možnost provádění několika částí programů v jednom

okamžiku.

Bezpečnost. Součástí programových prostředků je třída SecurityManager,

která hlídá všechny akce, které mohou mít vliv na stav lokálních

souborů. Zároveň se stará o bezpečný přístup k síti.

10

Page 11: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

2.2. Aplikace a applety

V této kapitole se dozvíte o: Základních typech programů vyvíjených Javou. Naučíte se vytvořit applet z aplikace. Dovíte se o omezeních kladených na applety. Doba potřebná k prostudování této kapitoly: 30 minut

V Javě programujeme dva základní typy programů. Jsou to applety a aplikace. Může

se to zdát možná složité, tak si to zjednodušíme. Applety jsou malé aplikace, které

spouštíme prostřednictvím internetových stránek. Slouží jako prográmky, které naše stránky

mají oživit, dát do nich nějaký prvek originality a hlavně dynamiky.

Aplikaci myslíme samostatný program, který vyžaduje Java Platformu pro své fungování.

Na aplikaci nejsou kladená bezpečnostní omezení. To znamená, že aplikace může pracovat

se soubory (zapisovat do nich).

Applet je naproti tomu program určený pro umístění na webovský server. Je včleněn do

HTML kódu tvořícího www stránku. Po vstupu klienta se automaticky nahraje na jeho

počítač a je spuštěn. Protože představa, že kliknutím na něčí stránku si naformátujete disk

se nikomu nelíbila, nesmí applet vykonávat určité operace:

Applet Javy nesmí:

Číst a zapisovat do lokálních souborů.

Manipulovat s lokálními soubory.

Spouštět programy na klientském počítači.

Tisknout.

Přepisovat systémové proměnné.

Číst některé systémové proměnné.

Číst data ze schránky (clipboardu).

Ukončit práci virtuálního stroje.

Navazovat síťová spojení (s výjimkou svého domovského serveru).

11

Page 12: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Před spuštěním appletu je třeba na něj umístit odkaz do HTML tvořícího WWW stránku.

To se děje pomocí formátovací značky <APPLET>, která má následující strukturu <APPLET CODE = “trida.class” WIDTH= “sirka” HEIGHT=”vyska” [ NAME=”jmenoInstanceAppletu”] [CODEBASE=”url”] [ARCHIVE=”Jarsoubor1,2..n”] [ALT=”alternativni text”] [ALIGN=“zarovnani“] [HSPACE nebo VSPACE=“vodorovne nebo svisle Odsazeni“] </APPLET>

Applety na téže WWW stránce spolu mohou komunikovat pomocí volání svých

veřejných metod. Applet, kterého chceme volat musí být pojmenován (name) ve značce

<APPLET>. Podívejme se na příklad aplikace a appletu:

Aplikace import java.io.*; public class VypisAdresare { Public static void main(String[] argv) { String jmenoAktDir = System.get.property("user.dir") File aktDir = new File(jmeno AktDir); String[] jmena; jmena = aktDir.list(); for (int i=0; i<jmena.length; i++) System.out.println(jmena[i]); File[] soubory soubory = aktDir.listFiles(); for (int i=0; i<soubory.length; i++) System.out.println(soubory[i].getName()+"t\") +soubory[i].length()); } }

Příklad 1.

Tento program je poměrně složitý takže jej přelétněte jen opravdu velmi zběžně.

Důležité je si všimnout tučně označeného řádku. Ten volá knihovnu java.io.

Následující znak .* volá všechny funkce třídy java.io Podrobněji si to osvítíme

v příkladech věnovaných tvorbě appletů.

12

Page 13: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Pokud vezmeme tuto aplikaci a budeme chtít z ní udělat applet, provedeme to

jednoduše.

Applet <html> <head> <title>Applet</title> <body> Funguje mi tento applet?<p> <applet code=”VypisAdresare.class” width=”200” height=”200”> </applet> </body> </html>

Příklad 2

Co myslíte, bude daný applet fungovat? Když ne tak proč, a když ano tak kdy? ☺

13

Page 14: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

3. JavaScript

V této kapitole se dozvíte o: o tvorbě javascriptů. Dozvíte se jak je javascript uvozován na HTML stránce. Dovíte se jaký je rozdíl mezi javascriptem a Javou. Doba potřebná k prostudování této kapitoly: 30 minut

JavaScript je kompaktní objektově orientovaný programovací jazyk primárně určen

pro internetové aplikace, které pracují na bázi aplikací klient-server.

I přes podobnost obou názvů a vlastní syntaxe nelze říct, že jazyky Java a JavaScript

jsou totožné. JavaScript je vyvíjen firmou Netscape, která jej prezentuje jako prostředníka

mezi internetovou stránkou umístěnou na serveru a klientem, který se na server přihlásil.

Internetovou stránku psanou v JavaScriptu odlišíme od stránky psané v Javě snadno. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>javascript</title> </head> <body> <script language="JavaScript"> <!-- document.write("Tak co tady asi napsat?"); //--> </script> </body> </html>

Přiklad 3

14

Page 15: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Podívejme se na tučné řádky. Tyto informuji prohlížeč o tom jakým způsobem má

být daná stránka zpracována. Výsledkem taková stránky pak je:

Obr.2

Dvojklikem na obrázek zobrazíte originální stránku

15

Page 16: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

4. Vývojové prostředí Javy - Aplikace

V této kapitole se dozvíte o: zdrojích, kde najdete programové vybavení pro programování v Javě. Dozvíte se o kompilaci programu a naučíte se využívat programů obsažených ve vlastním vývojovém prostředí Javy Doba potřebná k prostudování této kapitoly: 15 minut

Hned v úvodu je třeba říct, že k tomu aby jste mohli úspěšně programovat v Javě,

musíte sehnat nějaké to programové vybavení. To najdete na domovských stránkách Sun

Microsystems. A to na:

http://java.sun.com/j2se/1.4/download.html

http://www.javasoft.com/products/jdk/

Stáhněte si soubor, který má velikost okolo 35Mb a nainstalujte. Po nainstalování

najdete několik nových souborů v adresáři c:\java\bin.

Než se na ně podíváme blíže řekneme si jakým způsobem vlastně program

vytvoříme.

Vytvoření zdrojového kódu

(soubor.java)

Přeložení kódu programem javac.exe

(soubor.class)

Spuštění souboru .class interpretem

java.exe

Appletviewer

.exe

Vytvoření appletů

Obr.3

16

Page 17: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Podle obrázku je vidět jakým způsobem postupujeme při vlastním chodu programu.

Poté co jej napíšeme, např. v textovém editoru notepad, a uložíme s příponou .java tento

soubor přeložíme programem javac.exe a dostaneme soubor s příponou .class.

Tento soubor pak spustíme programem java.exe, nebo jej vnoříme do html kódu

jako applet, nebo se na něj podíváme pomocí programu appletviewer.exe. Že je to složité?

Tak si to ukážeme:

1. V notepadu napíšu zdrojový kód programu, a hotový zdrojový kód

uložím jako MujProgram1.java

2. Z adresáře c:\java\bin spustím program javac.exe:

c:\java\bin\javac.exe c:\programy\MujProgram1.java

3. Výsledným souborem bude c:\programy\MujProgram1.class

4. Programem c:\java\bin\java.exe spustím soubor MujProgram1.class.

Obr.4

class MujProgram1 { public static void main (String args[]) { System.out.println ("Dobry Den!"); } }

Příklad 4

Všimněte si, že název programu a jméno třídy se shodují včetně velkých a malých

písmen.

Podívejme se co vlastně tento program dělá. První příkaz vytvoří počáteční třídu. Se

shodným názvem celé třídy. Další příkaz definuje funkci programu. Informuje nás o tom o

co vlastně půjde.

17

Page 18: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Činnost programu (aplikace), začíná vždy funkcí main. Její definici jste viděli. Složené

závorky uzavírají vlastní tělo programu. Systém je objekt, out je standardní výstupní

zařízení.

MujProgram1.class si můžu prohlédnout i v appletvieweru, nebo jako applet ho

integrovat na webovskou stránku a prohlédnout si jej přímo v prohlížeči.

Vedle programů javac.exe, java.exe a appletviewer.exe existují další

programy, které usnadňují práci při diagnostikování problémů a chyb.

Jedním z nich je javadoc.exe, který vytváří dokumentaci k souboru

MujProgram1.java v HTML formátu.

Program javap.exe se nazývá disassambler javy a převádí soubory třídy javy

(MujProgram1.class) do zdrojového kódu.

18

Page 19: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

4.1. Platforma Javy

s

p

(

h

č

p

p

j

t

n

V této kapitole se dozvíte o: JAVA virtual machin, JAVA Core o a bytecodu Doba potřebná k prostudování této kapitoly: 15 minut

Jak již bylo řečeno, Java je na platformě nezávislý programovací jazyk. Podívejme

e tedy na to jak toho dosahuje. Zdrojový kód programovacích jazyků (Pascal, C, C++) se

ři překladu přepisuje na strojový kód konkrétního procesoru.

V Javě se zdrojový kód místo do strojového přepisuje do tzv. bytového kódu

bytecode). Kompatibilita takového kódu je pak zajištěna na binární úrovni. Rozdíly mezi

ardwarovým vybavením pak vyrovnává vlastní Java Platforma, která se skládá ze dvou

ásti: Abstraktní počítač – je to virtuální zařízení (Java Virtual Machine

- JVM), které obsahuje interpret (vykonává vlastní kód) a runtime

systém (hardwarový optimalizátor)

Aplikační programové rozhraní (Java Core API) - jsou to základní

knihovny pro psaní programů.

Když požádáte kompilátor Javy o kompilaci programu, ten nevygeneruje normální

rogram. Místo generování spustitelného souboru s instrukcemi pro procesor 80x86

řekladač Javy vyrobí to čemu se říká Java bytecode.

Pokud tento program chcete spustit potřebujete k tomu Javovský virtuální stroj na

akémkoliv počítači a operačním systému, který zrovna potřebujete.

Interpretace bytecode v prohlížeči snižuje výkon programu. Tento problém řeší

akzvaná just-in-kompilace. Pokud je tato metoda povolena, zkonvertuje se bajtový kód

a vnitřní kód počítače (strojový kód). Tento se uloží na disk a následně spustí.

19

Page 20: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5. Objektové programování Javy

V této kapitole se dozvíte o: základní kostře programu, o tom co je objekt a zmíníme se o třídách Doba potřebná k prostudování této kapitoly: 15 minut

Nejjednodušším způsobem jak se naučit nový programovací jazyk, je…. programování!!!

No vida, když jsme objevili toto zlaté pravidlo můžeme se střemhlav vrhnout do víru

programátorských vášní a slastných opojení z toho, že to funguje. Každý program musí

obsahovat alespoň jednu třídu, class.

Class MujProgram1 { vlastní část }

Všimněte si, že název třídy je shodný s názvem výsledného souboru

.class včetně malých a velkých písmen, a že nekončí středníkem. Třídy v průběhu

programu vytvářejí jakési berličky, objekty, které využijí a odstraní.

Objekt spojuje programový kód a data do jedné samostatné jednotky. Třídy jsou

příkazy programu, které definují data a kód v objektu. Musíme si uvědomit, že třída je to

s čím se v Javě budeme setkávat na každém kroku. Jakmile vytvoříme jednu třídu pak

uvnitř ní můžeme vytvořit tolik objektů kolik potřebujeme. Díky tomu pak stačí takovou

třídu připojit do nového programu a nemusíme všechny metody definovat znovu a znovu.

Jak jsme si už ukázali, výsledné programy Javy dělíme podle umístění na aplikace a

applety. Appletem rozumíme program integrovaný do webovské stránky. Každý jiný

program je pak aplikací. Jak aplikace tak i applety jsou třídy, které vycházejí ze třídy

Object. O třídách si ještě povíme později.

20

Page 21: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5.1. Psaní programu

V této kapitole se dozvíte o: funkci a možnostech editoru JCreator firmy Xinox Software. Úlohou této kapitoly je aby jste se pokusili s tímto produktem seznámit a pochopili jeho ovládání. Doba potřebná k prostudování této kapitoly: 45 minut

Při psaní jakéhokoli programu potřebujeme nezbytně pár věcí. Předně si musíme

ujasnit v jakém prostředí vlastně chceme pracovat a jaký styl práce nám vyhovuje.

Pro účely tohoto kurzu nám poslouží program od firmy Xinox Software, který se

jmenuje JCreator. Je volně dostupný jak na internetu a vy jej můžete najít zde.

Obr.5

21

Page 22: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Obr.6 Vidíte, že máte na výběr ze tří základních možností: aplikace, appletu a prázdného

projektu. Kliknutím na políčko aplikace se vám otevře toto okno. V levé oblasti nahoře

máte seznam rozdělaných projektů.

Obr.7

22

Page 23: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Ve spodní části jsou pak funkce používané programem, což se vám bude hodit při

kontrole složitějších programů. Ovládání tohoto editoru je intuitivní a nechám na vás jak se

s ním seznámíte.

23

Page 24: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5.2. Základní schéma programu

V této kapitole se dozvíte o: definicích tříd v Javě, o balíčcích a algoritmu programování v Javě. Doba potřebná k prostudování této kapitoly: 15 minut

Program v Javě obsahuje jednu nebo více definici třídy. Pouze jedna třída může být

deklarována jako public. Tato třída musí nést stejné jméno jako zdrojový soubor (.java)

Každá třída je kompilována do samostatného souboru (.class)

Binární tvar třídy musí být uložen buď v aktuálním adresáři aplikace, nebo

v adresáři shodujícím se jménem balíku (package). Podívejme se jak vypadá takové

jednoduché schéma programu.

import java.lang.*; import java.io.*;

class jmeno.tridy

public static void main (String args[])

System.out.println(“ahoj”);

O

2

Jako první si definujeme třídy jejichž metody budeme chtít používat. Třída java.lang.* se vynechává protože bývá automaticky včleňována

Definice a implementace třídy. Název třídy musí shodný s názvem souboru.

Určení metody, která je součásti importované třídy.

Vlastní tělo programu vykonávající nějakou “práci”

br.8

4

Page 25: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5.3. Práce s objekty

N

s

S

r

ř

J

R

K

p

o

o

V této kapitole se dozvíte o: objektech a o jejich vzniku a zániku.seznámíte se s konstruktory a s metodou jejich odstraňování, povíme si i o odkazování Doba potřebná k prostudování této kapitoly: 30 minut

Objekt je inicializován klíčovým operátorem new. Pokud napíšu

ew = String (“slovo”) vytvoří se objekt třídy String a inicializuje ho konstruktorem

parametrem "slovo". A k čemu to je dobré?

tring retezec = new String("ahoj"); // vytvoření objektu

etezec = retezec.concat("!"); // volání metody

Příklad 5

Metoda concat() vrací nový řetězec, který vznikne připojením parametru na konec

etězce. Výsledek se přiřadí do proměnné retezec. Všimněte si spojení retezec.concat

ak bude vypadat výsledný řetězec?

Pokud budu chtít tento objekt zrušit musím tomuto objektu přiradit proměnnou null

etezec=null;

dy se objekt odstraní automaticky?

Java neumožňuje přímou prácí s pamětí. Voláním new vyvolám nový objekt, který

oužívám tak dlouho dokud jej potřebuji. O uvolnění paměti se stará proces, který je

značován jako garbage colection. V případě že zaniknout všechny odkazy na daný

bjekt, program to po čase zjistí sám, a objekt zruší.

25

Page 26: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

V jiných objektově orientovaných jazycích, jsou k dispozici metody, tzv.

destruktory, které volají odstranění objektu z paměti. V Javě destruktory neužíváme, a

tak nevíme kdy přesně bude náš objekt z paměti odstraněn. Pokud však chceme provést

určitou akci ještě před zrušením objektu, můžeme předdefinovat metodu Void

finalize(). Program tuto metodu zavolá těsně před odstraněním z paměti.

5.3.1. Odkazování objektů.

Víme z jazyka C co jsou to ukazatelé. V Javě ukazatelé nejsou, ale i tady si velmi

rychle pomůžeme díky tzv. odkazování. Odkaz si můžeme představit jako jméno. Jsem

člověk(doufám…). Jsem objekt. Jmenuji se David. David je odkaz na člověka(nebudeme o

tom polemizovat ☺) Něco se stane a já dostanu přezdívku. Všichni budou vědět, že jsem to

já, i když někteří mě budou znát jen podle přezdívky. Přezdívka působí jako odkaz. Brazina David = new Brazina; Brazina prezdivka = David; Brazina 2.prezdivka = David | 2.prezdivka = new Brazina

Příklad 6

Teď mě nikdo nezná jako Bražinu, ale jen pod přezdívkou, ačkoliv jsem to pořád já

(Bražina). Čili odkazuji se vlastně na jiný objekt, ale ze stejnými vlastnostmi.

26

Page 27: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5.4. Třídy a dědičnost

m

t

p

v

V této kapitole se dozvíte o: dědičnostech tříd o jejich atributech a metodách. Dovíte se co musí splňovatkaždá korektní třída i o tom co znamená import třídy. Zmíníme se i kontrole přístupu. Doba potřebná k prostudování této kapitoly: 60 minut

Třída je v Javě základním stavebním prvkem. Veškerý kód i data aplikace

usí být obsaženy ve třídách. Každá třída musí být potomkem kořenové třídy Object,

akže se vytváří jen jediná stromová struktura. Object je v Javě jediná třída, která nemá

ředka. Aby se nám to nepletlo můžeme říct, že koupaliště je třída. Termální koupaliště

Červené Lhotě pak je objektem..

Object

Třída 1

Třída 3

Třída 4

Třída 2

Třída 6

Třída 5

Obr.9

27

Page 28: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Obecná deklarace třídy vypadá takto:

[ modifikátor ] class jménoTřídy

[ extends jménoRodičovskéTřídy ]

[ implements seznamRozhraní ]

{ // tělo třídy }

Modifikátorem třídy rozumíme klíčové slovo, které nám říká o jaký typ třídy se

jedná.

Nejčastěji užívanými modifikátory jsou Public – Označuje veřejnou třídu, dostupnou i mimo balík

Abstrakt – Deklarována třída je pouze abstraktní.

Final – Oznamuje ukončení rodičovského procesu. Nemá další potomky.

Static – Odkazuje se pouze na svou třídu

Void – Určuje, že metoda main, nevrací žádnou hodnotu, jako

výsledek

Mohou následující třídu užít i jiné třídy? A kdy? class MujProgram1 { public static void main (String args[]) { System.out.println ("Dobry Den!"); } }

Vytvořte z této aplikace applet. Nezapomeňte importovat java.applet.*, java.awt.*

System.out.println vám vypíše oznámení na obrazovku. Pro applet použijte funkci,

g.drawString().

Args[] je deklaraci pole typu "String" a přijímá parametry z příkazového řádku.

Main je metodou. V další kapitole si o metodách něco povíme.

28

Page 29: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Není-li třída veřejná je dostupná pouze ve svém balíku. Podívejme se na příklad

abstraktní třídy. Vytvoříme třídu, ve které definujeme, Integer, Boolen, Real a danou

třídu nazveme Number. Pokud pak budeme chtít tuto třídu použít, musíme ji zavolat jako

Number, ale nevíme jestli budeme pracovat s integrem, nebo boolenem. Tuto třídu tedy

deklarujeme jako abstraktní.

5.4.1. Atributy a metody třídy

Atributy třídy popisují data třídy. Jsou deklarovány stejně jako lokální proměnné.

Naproti tomu, metody jsou funkce třídy. Definice metody začíná určením typu vracené

hodnoty. Pokud funkce (metoda), žádný typ nevrací, označujeme jí jako void.

Metody Javy musejí být definovány uvnitř třídy. Třída Javy by měla splňovat

následující podmínky:

Třída Javy splňuje:

Dobře definované API

Název třídy by měl být odvozený od její funkce. Mělo by být jasné

co třída dělá.

Třída by měla obsahovat všechny funkce, které ke své činnosti

potřebuje. Pokud tomu tak není mělo by být přesně definováno odkud

a které metody přejímáme z jiných tříd.

Třída by měla být odolná proti neobvyklým vstupům.

29

Page 30: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5.4.2. Import třídy

Slovo „import“ umožní aplikaci a appletu využít jíž hotových tříd. Pro vytváření

appletů je v Javě vytvořená třída java.applet.Applet.*, která definuje třídy webovských

nástrojů Javy. Podívejme se na důležité třídy, které můžeme s výhodou importovat

Java.applet – pro tvorbu webovských appletů

Java.awt – využívá grafické prostředí

Java.io – práce se standardními IO zařízeními (myš, klávesnice)

Java.lang – je automaticky přiřazena, není třeba vypisovat.

Java.net – přistupuje k sítí

Java.util – obsahuje různé utility

Klíčové slovo import je funkčně shodné s C-vským #include.

V čem se od sebe liší import a include?

Příklad importu tříd import java.awt.Graphics; import java.applet.Applet; public class DobryDen extends java.applet.Applet { public void paint (Graphics g) { g.drawString("Dobry Den!", 20, 20); } }

Příklad 7

Obr.10

30

Page 31: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5.4.3. Kontrola přístupu

Java dovoluje kontrolovat přístup ke třídám pomocí specifikací public a private.

Pokud neoznačíme třídu jedním z těchto znaků, říkáme že třída je přátelská. Veřejné třídy a

jejich atributy jsou volně dostupné. Privátní atributy jsou dostupné pouze atributům stejné

třídy. Možná že se vám zdá, že rozlišování tříd na veřejné a privátní je zbytečná

komplikace. Pojďme se na tento případ podívat blíž.

Privátní metody jsou myšlené jako pomocné a vykonávají skutečnou práci

programu. Díky tomu, že existují pouze v rámci určité třídy, nemůže se nám stát, že by

došlo ke kolizi uvnitř programu.

Programem může procházet jedna proměnná, která bude nabývat určitých hodnot,

lišících se krok od kroku. Díky zprivátnění si můžeme být jistí, že ta daná třída pracuje

s hodnotou, která ji přísluší, i když uvnitř nějaké jiné třídy má proměna už hodnotu úplně

jinou.

31

Page 32: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5.5. Metody

V této kapitole se dozvíte o: metodách tříd, zjistíte jakou funkci mají metody uvnitř třídy a jak vznikají objekty. Doba potřebná k prostudování této kapitoly: 15 minut

Jak jste si už jistě všimli třída obsahuje celý program. Z toho vyplývá že součástí

třídy jsou proměnné, funkce a taky metody. Metoda je vlastně funkce, která se uvnitř třídy

volá. Pojďme se podívat na jednoduchý příklad.

public class trida1 // mam class trida1 ve kterém definuji proměnnou i { int i; public trida1() // priradim promene i hodnotu 3, je to metoda { i = 3; } public void Pricti(int j) // Pricteni 3 k hodnote j, je to metoda { i = i + j } }

Příklad 8

Třída Trida1 obsahuje proměnnou „i“ a dvě metody. První metodou je Trida1() a

je konstruktorem třídy (class trida1). Druhou metodou je Pricti(int j).

Konstruktor trida1() inicializuje třídu Trida1. Pokud bych chtěl v rámci této třídy

vytvořit novou instanci (např. novou funkci, která se nebude odkazovat na hodnotu

v Trida1), použiji k tomu příkaz new.

Novatrida trida2;

Trida2 = new novatrida();

Co je zde konstruktorem?

32

Page 33: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5.6. Balíky

V této kapitole se dozvíte o: tom jakým způsobem vytvoříme balík příbuzných tříd. Povíme si o vyjímkách v běhu programu. Doba potřebná k prostudování této kapitoly: 30 minut

Balík (package), je množina tříd, které logicky patří k sobě. Je to obdoba knihovny a

zároveň prostoru jmen z C++. Každá třída patří do jednoho balíku. Buď je pevně daná do

kterého, nebo bude patřit do nepojmenovaného balíku.

Pamatujete si na hvězdičkovou konvenci? Pokud napíšu import java.awt.*,

importuji všechny třídy v balíčku awt.

Java umístí každý balíček do vlastního adresáře. Jméno adresáře je shodné se

jménem třídy. Tečka se nahrazuje opačným lomítkem. Tedy třídy balíčku awt budou

umístěny v adresáři c:\java\awt. Cesty vytvořených tříd nemusí začínat v kořenovém

adresáři. Java se dívá na proměnnou prostředí CLASSPATH, podle které hledá požadovaný

soubor. CLASSPATH nastavíme tak aby obsahoval všechny adresáře, do kterých umisťujeme

naše třídy.

33

Page 34: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5.6.1. Tvorba a použití balíčků

Každá třída je součásti balíčku. Třída je k balíčku přidaná při překladu. Třída

označuje balíček, ke kterému patří použitím klíčového slova package. Někdy je lepší pokud

při práci s velkým programem pracujeme s několika na sobě nezávislými třídami, přesto ale

potřebujeme, aby v konečném důsledku spolupracovali. K tomu nám slouží známý příkaz import.

Pokud chceme mít přístup ke všem třídám balíčku, použijeme syntax import

package1.subpackage.*;. Můžeme tedy říct, že třídy jsou kombinovány do shluků

označovaných jako balíčky.

Java mapuje koncepci balíčků do stromové struktury operačního systému na

platformě nezávislým způsobem.

Třída Object je nadtřídou všech tříd. Všechny třídy dědí metody z třídy Object.

Můžeme tedy říct, že třída Object je balíkem všech tříd.

34

Page 35: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5.6.2. Výjimky

Výjimka je prostředek, kterým Java detekuje a oznamuje chyby. Výjimka je

chybový stav, který přeruší chod programu. Pojďme se podívat na příklad package srd.math; import java.lang.Exception; class ComplexNumber { private double m_dReal; private double m_dImag; // konstruktory public ComplexNumber(double dR, double dI) { m_dReal = dR; m_dImag = dI; } public ComplexNumber(double dR) { this(dR, 0.0); } // operátor dělení napsaný pro použití výjimek public ComplexNumber Divide(double d) throws Exception { if (d == 0) { throw new Exception("Pokus o dŘlenˇ nulou v ComplexNumber.divide"); } return new ComplexNumber(m_dReal / d, m_dImag / d); } public String toString() { StringBuffer sb = new StringBuffer(); sb.append('(').append(m_dReal).append(','); sb.append(m_dImag).append(')'); return sb.toString(); } }

Příklad 9

Pokud je d rovno nule, rovnice nemá řešení. (dělení nulou). Pokud k tomu dojde

divide vyvolá výjimku obsahující chybovou zprávu.

35

Page 36: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5.7. Výrazy řízení běhu programu

V této kapitole se dozvíte: výrazech, které definují jakým způsobem bude program zpracováván. Seznámíte se s jejich syntaxí a způsobem využití. Doba potřebná k prostudování této kapitoly: 45 minut

Každý programovací jazyk musíme nějak řídit a přinutit aby dělal to co chceme(i

když někdy máme pocit, že si program dělá co chce on a ne my). K tomu slouží výrazy,

kterými vlastní běh programu řídíme. Pojďme si je ukázat, ať se můžeme pustit do vlastního

bezproblémového programování.

36

Page 37: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5.7.1. Komentář

Pokud budete programovat složitější aplikaci, nebo applet, jistě vám v určitém

okamžiku přijdou vhod komentáře. Díky ním se můžete hravě vyznat i v napohled složitém

kódu. Komentáře můžeme uvést více způsoby, podle toho jestli se nám vejde na jeden nebo

více řádků. Komentáře uvozujeme do lomítek podobně jako v jazyce C.

//komentář

/*komentář na více řádcích*/

/** komentáře k dokumentaci**/

Napište program s komentářem k dokumentaci. Ověřte si, funkčnost programu javadoc.exe

5.7.2. Identifikátory

Identifikátorem rozumíme symbol, kterým prezentujeme proměnnou, třídu, objekt

atd. Identifikátorem může být jakýkoli symbol nebo slovo začínající písmenem,

podtržítkem nebo označením dolaru $.

5.7.3. Literály

Literátem rozumíme číselný typ vyjadřující velikost uložení čísla v paměti. V javě

používáme typy integer, float, boolean, char a string. Jsou shodné s definicí v C

a C++. Není je tedy třeba uvádět.

37

Page 38: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5.7.4. Pole

Pole deklarujeme z libovolné platné proměnné. I zde platí stejná pravidla jako

v jiných programovacích jazycích. int i [] [] = new int [3] [6];

Jak je vidět, v jazyce Java je pole objektem. Délku pole zjistíme funkci length

dotazem proměnná.length.

S výhodou užijeme zápisu string pole [] = {“x1”,”x2”,x3}; předtím ovšem

musíme nadefinovat jakého druhu budou hodnoty polem obsažené.

Tedy dle příkladu osm nadefinujeme string pole [] = int [3]. Z toho vyplývá,

že výsledné pole bude třímístné a bude obsahovat proměnné typu integer.

5.7.5. Operátory

Tak jako u většiny případů, jsou i operátory Javy velmi blízké operátorům jazyka C.

Na rozdíl od jazyka C, Java podporuje operace typu:

“string1“ + “string2“=string1string2“

38

Page 39: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5.7.6. Větveni programu

Nejdůležitější vlastnosti všech programovacích jazyků je schopnost vykonat příkaz

pokud je splněna jedna podmínka, a zároveň vykonat jiný, pokud je splněná podmínka

druhá. Větvení v Javě je (jaké překvapení ☺) téměř shodné z jazyků C++, C či Pascal.

Podívejme se na syntaxi příkazů if, then, else: if (splneno)

{ prikaz;

} else {

prikaz; }

Další z možností jak větvit program je pomoci příkazu switch-case:

switch (vyraz1) { case hodnota1:

prikaz1; break;

case hodnota2: prikaz2; break; default: prikaz3; break;

}

39

Page 40: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5.7.7. Smyčky

Smyčky jsou cykly, které provádí určitou operaci, která bude ukončená po splnění

určité podmínky. Smyčky, které znáte z C, C++ nebo Pascalu, použijete i v Javě. Podívejme

se na jejich syntaxi

For for (pocatecni hodnota; testovaci podminka; prirustek) { prikaz; } While while (vyraz je pravdivy) { prikaz; }

Do do { prikaz; } while (vyraz je pravdivy);

40

Page 41: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5.8. Vstup a výstup

V této kapitole se dozvíte: jakým způsobem se zpracovávají vstupní parametry zadané z klávesnice. Budete je umět snímat do programu a zpracovávat jejich výstup. Poznáte také jak načítat ze souboru a ukládat do souboru. Doba potřebná k prostudování této kapitoly: 75 minut

Veškeré operace vstupu a výstupu z klávesnice má na starosti balíček java.io.

Charakteristickým rysem celé Javy je skládání jedné třídy ke druhé. Tak je tomu i v tomto

případě.

Java se nesnaží obsáhnout jednou třídou veškeré možnosti, protože je

pravděpodobné, že všechny schopnosti potřebovat nebudete. Pokud potřebujete provést

operaci, která aktuální třídou není podporovaná, jednoduše ji přiřadíte. Výhody jsou

nasnadě.

Podívejme se jakým způsobem zpracováváme vstupní a výstupní operace. Během

našeho povídání jsme se už setkali s třídou Systém. Pamatujete si jakým způsobem třída

system posílala výstup na monitor? system.out.println(“Dobry den”); Vedle toho tato třída obsahuje prvky system.in – standardní vstup system.err - chybový výstup Podívejme se na to jak se tyto metody používají.

41

Page 42: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

import java.io.*; public class vstupvystup { public static void main(String[] args) { try { // zkusíme číst z klávesnice byte bArray[] = new byte[128]; System.out.println("Neco napiste:"); // Tento příkaz cte pole bajtů System.in.read(bArray); // výstup pole bajtů - toto generuje // vlastní výsledek System.out.print("Napsal jste:"); System.out.println(bArray); // co se s tim vlastne ma delat? Class cInClass = System.in.getClass(); Class cOutClass= System.out.getClass(); System.out.println("in je " + cInClass.toString()); System.out.println("out je " + cOutClass.toString()); } catch(IOException ioe) { System.out.println(ioe.toString()); ioe.printStackTrace(); } } }

Příklad 10

Obr.11 Proč je výstup tohoto programu zmatený?

42

Page 43: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

import java.io.*; public class vstupvystup2 { public static void main(String[] args) { try { // zkusíme číst z klávesnice byte bArray[] = new byte[128]; System.out.println("Neco napiste:"); // Tento příkaz čte pole bajtů System.in.read(bArray); // zkonvertuje pole na řetězec před tím, než se // jej pokusí zobrazit String s = new String(bArray, 0); System.out.println(s); } catch(IOException ioe) { System.out.println(ioe.toString()); ioe.printStackTrace(); } } }

Příklad 10 Nyní už je výstup v pořádku.

43

Page 44: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5.8.1. Práce se soubory

Požadavky na práci se soubory jsou jasné. Potřebujeme vědět jak do souboru

můžeme něco uložit resp. jak ze souboru něco vytěžit. Pokud chceme soubor otevřít a něco

do něj uložit, využijeme třídu FileInputStream. Pokud naopak chceme soubor otevřít a

něco z něj dostat využijeme třídu FileOutputStream.

Podívejme se na následující program. Ten načte dvě jména souboru jako parametry

a potom zkopíruje obsah prvního souboru do druhého.

import java.io.*; public class soubor { public static void main(String[] args) { try {

// otevře args[0] pro vstup FileInputStream in = new FileInputStream(args[0]); // přidá tomuto proudu vyrovnávací paměť BufferedInputStream bin = new BufferedInputStream(in); // otevře args[1] pro výstup a také přidá // vyrovnávací paměť FileOutputStream out = new FileOutputStream(args[1]); BufferedOutputStream bout = new BufferedOutputStream(out); // nyní čte tak dlouho, dokud je co číst byte bArray[] = new byte[256]; int nBytesRead; while(bin.available() > 0) { // přečte blok - pamatuje si, kolik přečetl nBytesRead = bin.read(bArray); // zapíše stejně tolik znaků zpět od // indexu 0 do pole bout.write(bArray, 0, nBytesRead); } bout.flush(); } catch(IOException ioe) { System.out.println(ioe.toString()); } } }

Příklad 12

44

Page 45: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Program otevře vstupní soubor třídou FileInputStream. Program pak zabalí objekt

in třídy FileInputStream do objektu třídy BufferedFileInputStream, který označuje

bin.

Program opakuje proces s druhým argumentem pro výstupní soubor, čímž vytvoří

objekt bout třídy BufferedoutputFile.

45

Page 46: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

import java.i public class { public st { try { / F B / F B P / b i w {

Podívejte se na následující program a ověřte jeho funkčnost

o.*;

FileIO

atic void main(String[] args)

/ použije normální vstupní proud ileInputStream in = new FileInputStream(args[0]); ufferedInputStream bin = new BufferedInputStream(in);

/ vytvoří výstupní proud s vyrovnávací pamětí ileOutputStream out = new FileOutputStream(args[1]); ufferedOutputStream bout = new BufferedOutputStream(out); rintStream pout = new PrintStream(bout);

/ čte osm znaků najednou yte bArray[] = new byte[8]; nt nBytesRead; hile(bin.available() > 0) // nejprve je vypíše jako hexadecimální číslo nBytesRead = bin.read(bArray); for (int i = 0; i < nBytesRead; i++) { int nByte = (int)bArray[i]; String s = Integer.toString(nByte, 16); if (s.length() == 1) { pout.print(" "); } pout.print(s + ", "); }

// potom, pokud jsou tisknutelné, vypíše // příslušný znak (pokud ne, vypíše tečku ".") pout.print("-"); for (int i = 0; i < nBytesRead; i++) { char c = (char)bArray[i]; if (Character.isDigit(c) || Character.isLowerCase(c) || Character.isUpperCase(c))

46

Page 47: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

{ // podrží si c - nic nedělá } else { c = '.'; // nahradí c tečkou } pout.print(c); } pout.println(" "); } bout.flush(); } catch(IOException ioe) { System.out.println(ioe.toString()); } } }

Příklad 13.

47

Page 48: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5.9. Zpracováni vstupu a výstupu myši

V této kapitole se dozvíte: jakým způsobem se zpracovávají události myši Doba potřebná k prostudování této kapitoly: 30 minut

Vedle zpracování vstupu a výstupu ze standardních vstupních a výstupních zařízení,

je velmi užitečnou vlastnosti Javy spolupracovat s myši prostřednictvím zpracování události

(events). Nejběžnější události u myši je kliknutí.

Ke zpracování používá Java metody mouseDown()a mouseUp(). Obě tyto metody

jsou součásti balíku třídy java.awt.Component.

public boolean mouseDown (Event e, int x, int y) { /* tlacitko mysi stlaceno dolu, pozice na obrazovce je reprezentovana souradnicemi x a y */ /* nasleduje zpracovani teto udalosti */ } public boolean mouseUp (Event e, int x, int y) { /* tlacitko mysi uvolneno, pozice na obrazovce je reprezentovana souradnicemi x a y */ /* nasleduje zpracovani teto udalosti */ }

48

Page 49: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Následující applet tiskne text “Dobry den” v místě kde se nachází kurzor myši v

okamžiku kliknutí se nachází.

import java.awt.Graphics; import java.awt.Event; import java.applet.Applet; public class klikMys extends Applet { int Sour_X = 30; int Sour_Y = 30; public void paint (Graphics g) { g.drawString("Dobry Den", Sour_X, Sour_Y); } public boolean mouseDown (Event e, int x, int y) { Sour_X = x; Sour_Y = y; repaint(); return true; } }

Příklad 14

Dvojklikem zde, zobrazíte originální stránku

49

Page 50: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

5.10. Síťové programování v prostředí TCP/IP

k

s

T

j

V této kapitole se dozvíte: o základech síťového programování, setkáte se s pojmy jako je socket, a prostředky balíku java.net. Doba potřebná k prostudování této kapitoly: 45 minut

Programování v prostředí TCP/IP využívá tzv. socketů, což jsou koncové body

omunikačních linek mezi procesy charakterizované IP adresou a portem. Sockety nejsou

pecifickou záležitosti Javy, ale jsou všeobecným základem síťového programování pro

CP/IP. V jazyce Java lze TCP/IP spojení navázat za použití knihovny třídy java.net a to

ak pro datové přenosy TCP, tak i UDP. Spojení popíšeme takto:

Server je spuštěn na předem určeném portu a čeká na klientsky program,

aby navázal spojeni.

Jakmile si klient toto spojeni vyžádá, server otevře socketové spojeni

prostřednictvím metody accept().

klient rovněž založí spojeni se serverem na dané IP adrese a určitém

portu.

50

Page 51: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Obě strany pak komunikuji prostřednictvím metod InputStream() a OutputStream().

Použití základních principu implementace serveru v Javě ukazuje následující příklad. ServerSocket srvsocket; Socket sckt; String sendstr = "Data ze serveru.\n"; int delka; OutputStream outstr; srvsocket = new ServerSocket(8888,300); // server je pripojen na // port 8888, ceka 300 sekund // na zavolani klienta sckt = srvsocket.accept(); // server ceka na pripojeni outstr = sckt.getOutputStream(); // ziska identifikaci socketoveho // souboru delka = sendstr.length(); // delka zasilanych dat for (int i=0; i < delka; i++) { outstr.write((int)outstr.charAt(i)); } // posila data po jednom byte sckt.close(); // ukonci spojeni

Klientský program pak principiálně může vypadat takto: int c; Socket sckt; InputStream instr; // klientsky program sckt = new Socket("javaserv",8888); // otevre spojeni s pocitacem // javaserv, na portu 8888 instr = sckt.getInputStream(); // ziska identifikaci socketoveho // souboru while ((c = instr.read()) != -1 { // cte jeden byte prichazejici // ze serveru System.out.println((char)c); // tiskne prijaty byte na vystup } sckt.close(); // uzavre spojeni

Příklad 15

Jak je vidět, tak na straně serveru je to třída ServerSocket a na straně klienta třída

Socket, které zajišťuji, že implementace je velmi jednoduchá a přehledná. Pokud se chystáte

k vývoji přenosných aplikaci v prostředí TCP/IP, pak podrobnější studium knihovny třídy

java.net je zcela na miste.

51

Page 52: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

6. Test č.1

v

T

T

V této kapitole se dozvíte: Jakým způsobem budete zpracovávat test pro ukončení první polovinysemestru. Doba potřebná k prostudování této kapitoly: 5 minut Doba potřebná k vypracování testu: 90 minut

Zakončením první poloviny tohoto kurzu je test, ve kterém by jste měli potvrdit své ědomosti. Pro jeho úspěšné vykonání musíte odpovědět alespoň na polovinu otázek.

Zadaný program musíte vytvořit tak, aby byla funkční alespoň jeho jedna polovina.

est najede kliknutím na obrázek . Jako jméno zadejte své příjmení, jako heslo vaše jméno+2002.

EST

52

Page 53: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

TEST č.1 - XJAV1 - OOP pro Internet a Intranet

Používáte prohlížeč Microsoft Internet Explorer 4.0 (compatible; MSIE 5.01; Windows NT 5.0)

Pro správné zobrazení češtiny použijte kódování: Středoevropské jazyky Windows

Jadro: Win32 Rozlišení: 1024 x 768 Barevná hloubka: 16 bit Java povolena ?: ANO

Anti-aliasing ?: NE

Uživatelské jméno: Heslo:

1.Otázka

Jakým příkazem připojíte třidu

A include

B import

C load

2.Otázka

Jak se nazývá způsob odstraňujicí objekty?

A destruktor

B garbage colection

C neodstraňuji se

3.Otázka

Hvězdička znamená

A import všech tříd balíčku

B import všech funkcí třídy

C import všech metod funkce

53

Page 54: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

4.Otázka

Jak se jmenuje základní knihovna Javy,

která musí být vždy importována

A java.io

B java.awt

C java.lang

5.Otázka

Popište v jakých krocích vytvoříte a následně spustíte aplikaci

vytvořenou v Javě.

6.Otázka

Co si představujete pod pojmem JAVA VIRTUAL MACHINE?

7.Otázka

Popište rozdíl mezi třídou a metodou, uveďte alespoň dva příklady

54

Page 55: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

8.Otázka

Vytvořte libovolný program, ve kterém použijete konstruktory.

Program popište a zajistěte odstranění objektu

(popište funkci finalizéru)

Zdrojovy kod zadaneho programu v jazyce JAVA

9.Otázka

Vytvořte program, který přečte z klávesnice tři čísla, seřadí je od

nejvetšího do nejmenšího, vytiskne je v tomto pořadí, vytiskne jejich součin

a převrácenou hodnotu každého z těchto čísel. Ošetřete případ dělení nulou.

Dále převeďte součet těchto čísel do binárního tvaru.

Zdrojovy kod zadaneho programu v jazyce JAVA

Doporučení

Na toto místo napište své jméno a emailovou adresu

Jmeno PrijmeniEmail

Potvrdit-Odeslat Smazat-Znovu

55

Page 56: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

7. Vývojové prostředí Javy - Applety

V této kapitole se dozvíte: o editorech umožňující programování appletů. Doba potřebná k prostudování této kapitoly: 45 minut

Programovat applety můžete pod libovolným textovým editorem jako je například

např. notepad či joe (Linux). Přesto je lepší vytvářet applety pod kvalitním nástrojem který

umožňuje tvorbu HTML stránek. Nejvhodnějším v tomto směru se mi zdá tzv. HTML-Kit

od společnosti Chami, který si můžete stáhnout zde.

Obr.12

Ovládání tohoto produktu je intuitivní, a nechám na vás ať se s ním seznámíte.

56

Page 57: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

7.1. Práce s textem a grafikou

p

J

r

P

a

p

V této kapitole se dozvíte: čeho se vyvarovat při tvorbě webovské stránky, naučíte se pracovats technickými vlastnostmi textu. Doba potřebná k prostudování této kapitoly: 45 minut

Pokud jste se přenesli přes minulé kapitoly bez problémů, ujišťují vás, že zbytek už

ůjde hladce. Od této chvíle se budeme věnovat vlastní práci s dynamickými možnostmi

avy. Budeme se soustředit na vytváření appletů a jejich umístění na webovské stránky.

Když otvíráme webovskou stránku, první čeho se dočkáme jsou slova. Tvar barva a

ozmístění slov rozhodne o tom jestli vůbec budeme čekat na to, až se stránka načte celá.

rvní věc, kterou bychom si měli říct je, že v jednoduchosti je síla.

Stránka, která bude přecpaná grafikou, různými scripty, applety, blikajícím pozadím

bůhví čím ještě, se jednak bude pomalu načítat, a jednak naštve případného návštěvníka,

rotože si uvědomí jak ho bolí od toho počítače oči.

57

Page 58: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

7.1.1. Vložení textu

Pokud budeme chtít něco vytisknout na monitor počítače, viděli jsme, že k tomu

použijeme metodu system.out.println(). Pokud budeme pracovat s appletem jako

výstup použijeme metodu g.drawString.

public void paint(Graphics g) { g.drawString(“Neco zvlastniho”, 20, 20); } Jak je vidět metodu drawString(“string“, X, Y); deklarujeme tak, že nejprve

napíšeme řetězec a za něj souřadnice textu.

Tuto metodu můžete používat pokud inicializujete třídu Applet, která zajišťuje

všechny podpůrné třídy pro tvorby appletů. Podívejme se na ni:

- init() je spuštěna pouze jednou během zaváděni appletu. Pokud

není redefinovaná uživatelem, nevykonává žádnou funkci.

- start() začíná běh appletu. Tato metoda sama o sobe nevykonává

žádnou funkci. Odvozenou metodu lze použít k započetí animací,

přehrávek zvuku apod.

- stop() konci běh appletu. Metoda je spouštěna, když applet již

není na obrazovce. Tato metoda sama o sobe nevykonává žádnou

funkci. Odvozenou metodu lze použít k zastaveni animace, přehrávky

zvuku apod.

- destroy() tato metoda je k dispozici k použití, jestliže applet

již není nadále potřeba. Sama o sobe nevykonává žádnou funkci.

Odvozena metoda je vhodná k závěrečnému ošetření appletu, jako

např. u multitaskových aplikaci k zastaveni všech aktivních úloh.

- paint(Graphics g) tato funkce je spoustena vždy, když zobrazovací

oblast apletu potřebuje znovuzobrazení (refresh) výstupu. Základní

metoda třídy Applet pouze zobrazí šedý rovnoběžník v oblasti

grafického výstupu appletu. Odvozena metoda je využívána k

grafickému výstupu zobrazované informace (text, grafika atd.)

Povšimněte si odvozené metody v našem prvním apletu, kdy jsme

redefinovali tuto metodu tak, aby vypsala text "Dobry den!".

-update(Graphics g) tato metoda je použitá vždy, když je třeba

aktualizace zobrazené oblasti. Základní metoda třídy Applet smaže

vše co je zobrazeno v dané grafické oblasti apletu a pak spustí

metodu "paint".

58

Page 59: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

7.1.2. Typy písma

Teď, když víme jak zobrazit zprávu v rámci appletu, podíváme se jak můžeme

ovlivnit tvar písma. Pokud žádné písmo nedefinujeme, pak se text vypisuje standardním

typem písma, které je označováno jako „dialog“. Pokud chcete zvolit jiné písmo než

standartní, musíme vytvořit objekt „Font“.

Font f = new Font (“typ pisma”, Font.PLAIN, 12);

Font.PLAIN určuje velikost fontu. Typem písma se rozumí o jaký normativ se jedná.

Standardními písmy Javy jsou. Courier, Dialog, Helvetica, TimesRoman, DialogInput, a

pismo pro zvláštní znaky ZapDingBats.

Podívejme se na inicializaci nového fontu v následujícím příkladu Public void paint (Graphics g) { Font f = new Font (“Helvetica”, Font.PLAIN, 10); g.setFont(f); }

Vytvořte applet, který zobrazí alespoň tři typy fontů na stránce.

59

Page 60: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

7.1.3. Barva písma

Tak jako jsme typ písma určovali metodou „Font“ tak barvu volíme metodou „Color“. Public void paint (Graphics g) { g.setColor(Color.blue); //Dokud nenastavim barvu jinak budou vsechny texty modre g.drawString(“Je to psane modrym pismem”); }

Java obsahuje standardní barvy podobně jako Pascal nebo C++, proto je nebudu

vypisovat.

Pokud vaše nároky na barvu budou větší, můžete si vlastní nádech namíchat

podobně jako když ladíte televizi, kombinací červené, zelené a modré. Barvy zadáváte v

rozsahu (0 až 255).

Public void paint (Graphics g) { Color barva = new Color (255,0,0); g.setColor(barva); g.drawString(“Cervena barva”, 10, 10); }

Pokud jsme puntičkáři můžeme si dokonce volit i mezi jasem, metodou „brighter“ a darker.

60

Page 61: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

7.2. Vykreslování geometrických tvarů

V této kapitole se dozvíte: o tvorbě jednoduchých grafických objektů a jejich začlenění do HTMLstránky. Doba potřebná k prostudování této kapitoly: 45 minut

Nejjednodušším grafickým objektem, který Java poskytuje je čára. Různými

změnami parametrů docílíme kresbu obdélníků mnoho úhelníků. Přesto je však jednodušší

využít vestavěných grafických objektů, od již zmíněných obdélníků, až po půlkruhy a

výseče.

7.2.1. Kreslení čar

Kreslení čar zajišťuje metoda „drawLine“. Metodě zadáte koncové body čáry a

ta se vykreslí v aktuální barvě. Tuto metodu použijte takto:

Public void paint (Graphics g) { g.drawLine(10, 200, 100, 200); } Zadané hodnoty odpovídají souřadnicím koncových bodů čáry.

7.2.2. Kreslení obdélníků

Tak jako pro kreslení čáry existuje metoda drawLine(), tak pro kreslení obdélníků

máme metodu „drawRect()“.

Public void paint (Graphics g) { g.drawRect(100,100,100,100); }

V tomto případě se nám vykreslí čtverec, který nezakryje oblast ve které se nachází.

Abychom toho docílili musíme zadat výplň metodou clearRect(). Pokud chceme

dosáhnout určité barvy výplně použijeme metodu fillRect(). Barva výplně odpovídá

aktuální barvě.

61

Page 62: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Sestrojte program pro vykreslení čtyř obdélníků, každý jinou barvou. Sestrojte

obdélníky tak aby tvořili jeden společný obdélník.

Další metody, které vykreslují obdélníky jsou DrawRoundRect(x,y,z,v) //zakulacené rohy FillRoundRect(x,y,z,v) Draw3DRect(x,y,z,v,true nebo false) // trojrozměrný obdélník Fill3DRect(x,y,z,v,true or false)

62

Page 63: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

7.2.3. Kreslení kružnic a oblouků

Kružnice je nejproblematičtějším geometrickým obrazcem, který počítač vykresluje.

Každý programovací jazyk má odlišné rutiny a algoritmy, kterými kružnice vykresluje.

Java nabízí rutinu kreslení okraje a výplně oválného tvaru. Metody kterými se

kružnice (elipsa) vykreslují jsou

drawOval (int x, int y, int sirka, int vyska); fillOval (int x, int y, int sirka, int vyska); Pokud potřebujeme vykreslit půlkružnice oblouky výseče a podobně, použijeme

metody

drawArc (int x, int y, int sirka, int vyska, int uhel, int uhel); fillArc (int x, int y, int sirka, int vyska, int uhel, int uhel);

První úhel je úhlem počátku, druhý je úhlem oblouku.

63

Page 64: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

7.3. Události myši a klávesnice

V této kapitole se dozvíte: jakým způsobem zpracujeme a vyhodnotíme události spojené se stiskem klávesy či kliknutím myši. Doba potřebná k prostudování této kapitoly: 60 minut

7.3.1. Události myši

Myš je v současné době velmi vytížené zařízení počítače. Často mnohem více než

klávesnice. Zatímco klávesnice přenáší pouze jeden údaj(většinou), myš jich přenáší hned

několik. Pojďme se na ně podívat:

Pozice – Souřadnice myši jsou definovány od levého horního rohu

monitoru.

Stav – Podává informaci o stavu tlačítek myši.

Povaha – Informuje o současném stavu myši. Zda se myš pohybuje a

podobně.

Java neposkytuje informace o vícetlačítkových myších (standardně)

64

Page 65: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Podívejme se na applet, který vykreslí informace o kurzoru

import java.applet.*; import java.awt.*; public class CrossHair extends Applet { private Dimension m_dimCursorLoc; // pozice kurzoru private boolean m_bDrag; // TRUE -> zrovna tahneme mys public void init() { resize(640, 480); } public void paint(Graphics g) { // nejprve vytvorime retezec obsahujici aktualni pozici // ve formatu (xx,yy) a tu pote vypiseme String sCursorLoc = "(" + m_dimCursorLoc.width + "," + m_dimCursorLoc.height + ")"; g.drawString(sCursorLoc, 10, 20); // nyni vykreslime x na pozici kurzoru mysi // (cerveny, pokud je mysi tazeno, jinak cerny) if (m_bDrag) { g.setColor(Color.red); } else { g.setColor(Color.black); } int nX = m_dimCursorLoc.width; int nY = m_dimCursorLoc.height; g.drawLine(nX - 2, nY, nX + 2, nY); g.drawLine(nX, nY - 2, nX, nY + 2); } // MOUSE SUPPORT: public boolean mouseDrag(Event evt, int x, int y) { // nastavy true je-li s mysi tazeno m_bDrag = true; // ulozi pozici mysi m_dimCursorLoc = new Dimension(x, y); repaint(); // vraceny true indikuje, ze jsme udalost zpracovali return true; } public boolean mouseMove(Event evt, int x, int y) { // stejne jako mouseDrag m_bDrag = false; m_dimCursorLoc = new Dimension(x, y); repaint(); return true; } }

Příklad 15.

65

Page 66: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Obr.12

Pokud pohybujeme kurzorem myši v levém horním rohu se nám objevuje údaj o

aktuální poloze. Atribut m_dimCursorLoc ukládá aktuální pozici myši.

Klikněte na obrázek

66

Page 67: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

V následujícím příkladě si ukážeme applet, který reaguje na kliknutí myší. Označí

nám polohu myší a pak tyto body spojí.

import java.applet.*; import java.awt.*; public class ConnectTheDots extends Applet { // definovana data Dimension m_dimLocs[]; int m_nNumMouseClicks; // aktualni pozice kurzoru Dimension m_dimCursorLoc; public ConnectTheDots() { // inicializuje atributy objektu m_dimLocs = new Dimension[m_nMAXLOCS]; m_nNumMouseClicks = 0; m_dimCursorLoc = new Dimension(0, 0); } public String getAppletInfo() { return "Name: ConnectTheDots\r\n" + "Author: Stephen R. Davis\r\n" + "Created for Learn Java Now (c)"; } public void init() { resize(400, 400); } public void paint(Graphics g) { //Pozici kurzoru oznaci krizkem int nX = m_dimCursorLoc.width; int nY = m_dimCursorLoc.height; g.drawLine(nX - 2, nY, nX + 2, nY); g.drawLine( nX, nY - 2, nX, nY + 2); //nakresli caru for (int i = 0; i < m_nNumMouseClicks - 1; i++) { for (int j = i + 1; j < m_nNumMouseClicks; j++) { g.drawLine(m_dimLocs[i].width, m_dimLocs[i].height, m_dimLocs[j].width, m_dimLocs[j].height); } } } public boolean mouseDown(Event evt, int x, int y) { // ulozi pozici kliknuti if (m_nNumMouseClicks < m_nMAXLOCS)

67

Page 68: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

{ m_dimLocs[m_nNumMouseClicks] = new Dimension(x, y); m_nNumMouseClicks++; // prekresleni repaint(); } return true; } public boolean mouseUp(Event evt, int x, int y) { // ignoruje tuto udalost return true; } public boolean mouseDrag(Event evt, int x, int y) { // ignoruje tuto udalost return true; } public boolean mouseMove(Event evt, int x, int y) { // ulozi pozici kurzoru a prekresli obraz m_dimCursorLoc = new Dimension(x, y); repaint(); return true; } }

Příklad 16

Obr.13

Všimněte si, že pokud jsou vámi vytvořené vzory složité, začínají při pohybu myši

blikat.

68

Page 69: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Poslední příklad ukazuje využití dvojkliku myši. Tento applet rozeberte a zjistěte jak

funguje import java.applet.*; import java.awt.*; import java.util.Vector; public class ConnectTheDots extends Applet { // toto je záznam o všech pozicích, kde bylo kliknuto Vector m_vLocs; // aktuální pozice kurzoru Dimension m_dimCursorLoc; public ConnectTheDots() { // inicializuje atributy objektu m_vLocs = new Vector(); m_dimCursorLoc = new Dimension(0, 0); } public String getAppletInfo() { return "Name: ConnectTheDots\r\n" + "Author: Stephen R. Davis\r\n" + "Created for Learn Java Now (c)"; } public void init() { resize(400, 400); } public void paint(Graphics g) { // vloží křížek na pozici kurzoru int nX = m_dimCursorLoc.width; int nY = m_dimCursorLoc.height; g.drawLine(nX - 2, nY, nX + 2, nY); g.drawLine( nX, nY - 2, nX, nY + 2); // nyní nakreslí čáru od každé kliknuté pozice // ke všem ostatním kliknutým pozicím Dimension dimFrom; Dimension dimTo; int nSize = m_vLocs.size(); for (int i = 0; i < nSize - 1; i++) { dimFrom = (Dimension)m_vLocs.elementAt(i); for (int j = i + 1; j < nSize; j++) { dimTo = (Dimension)m_vLocs.elementAt(j); g.drawLine(dimFrom.width, dimFrom.height, dimTo.width, dimTo.height ); } } }

69

Page 70: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

public boolean mouseDown(Event evt, int x, int y) { // pokud je kliknuto dvakrát ... if (evt.clickCount > 1) { // odstraní všechny prvky z vektoru m_vLocs.removeAllElements(); } else { // ... jinak přidá nový prvek m_vLocs.addElement(new Dimension(x, y)); } repaint(); return true; } public boolean mouseUp(Event evt, int x, int y) { // ignoruje tuto událost return true; } public boolean mouseDrag(Event evt, int x, int y) { // ignoruje tuto událost return true; } public boolean mouseMove(Event evt, int x, int y) { // uloží pozici kurzoru a překreslí obraz m_dimCursorLoc = new Dimension(x, y); repaint(); return true; } }

Příklad 17

70

Page 71: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

7.3.2. Události klávesnice

Na klávesnici toho moc nejde udělat. Můžete buď zmáčknou tlačítko nebo pustit

tlačítko. Toto zpracovávají metody keyDown a keyUp. Speciálním tlačítkům jsou přiřazeny

kódy. Pojďme si ukázat příklad

Obr.14

Klikněte myši do okna a napište něco. Pak přesuňte myš jinam a pište dál import java.applet.*; import java.awt.*; import java.util.Vector; public class ScreenType extends Applet { // klávesy jsou ukládány do vektoru private Vector m_vKeys; // pozice aktuálního znaku private Dimension m_dimLoc; // metrika fontu pro okno tohoto apletu private FontMetrics m_fm; public ScreenType() { // vytvoří vektor s místem pro 100 klávesových objektů. // Nechá jej rozšiřovat o 100 najednou. To bude // rychlejší než implicitní hodnoty m_vKeys = new Vector(100, 100); // alokuje objekt Dimension m_dimLoc = new Dimension(10, 10); } public String getAppletInfo() {

71

Page 72: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

return "Name: ScreenType\r\n" + "Author: Stephen R. Davis\r\n" + "Created for Learn Java Now (c)"; } public void init() { // nastaví počáteční velikost okna resize(320, 240); // pro ušetření času bere metriku fontu zde m_fm = getFontMetrics(getFont()); } public void paint(Graphics g) { // projde uložené objekty int nSize = m_vKeys.size(); for (int i = 0; i < nSize; i++) { // načte klávesu Key key = (Key)m_vKeys.elementAt(i); // od klávesy vezme její hodnotu a její pozici Dimension dimLoc = key.GetLoc(); char[] cKey = key.GetKey(); // vypíše klávesu i s pozicí g.drawChars(cKey, 0, 1, dimLoc.width, dimLoc.height); } } public boolean mouseDown(Event evt, int x, int y) { // při dvojkliku... if (evt.clickCount > 1) { // ...všechno smaže... m_vKeys.removeAllElements(); repaint(); } else { // ...jinak pouze upraví pozici m_dimLoc.width = x; m_dimLoc.height = y; } return true; } public boolean keyDown(Event evt, int nKey) { // přidá klávesu na aktuální pozici m_vKeys.addElement(new Key(nKey, m_dimLoc)); // provede minimální překreslení (pouze obdélník // obsahující nový znak) int nL, nR, nT, nB; nL = m_dimLoc.width; nR = nL + m_fm.charWidth(nKey);

72

Page 73: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

nB = m_dimLoc.height; nT = nB - m_fm.getHeight(); repaint(nL, nT, nR, nB); // nyní upraví pozici následujícího znaku // přesunutím o šířku vkládaného znaku // (pamatujte si, že různé znaky mohou mít // různou šířku) m_dimLoc.width += m_fm.charWidth(nKey); return true; } } class Key { private char[] m_cKey; private Dimension m_dimLoc; public Key(int nKey, Dimension dimLoc) { // uloží znaky do pole velikost 1; // je to vhodnější kvůli metodě drawChars(), // která v metodě paint() chce jako parametr pole m_cKey = new char[1]; m_cKey[0] = (char)nKey; // použije stejný typ konstruktoru pro vytvoření // vlastní kopie objektu Dimension m_dimLoc = new Dimension(dimLoc); } Dimension GetLoc() { return m_dimLoc; } char[] GetKey() { return m_cKey; } }

Příklad 18

Každá klávesa je uložena jako prvek v poli m_vKeys třídy Vector. Metoda keyDown

uloží stisknutou klávesu spolu s pozicí.

73

Page 74: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

7.4. Panely

V této kapitole se dozvíte: o významu o funkcích panelů na webovských stránkách a jejich vytváření Doba potřebná k prostudování této kapitoly: 30 minut

Panely na obrazovce reprezentují plochu, uvnitř které je možné pracovat s

jakýmkoliv appletem. Na plochu panelu umisťujeme různé grafické komponenty, případně

další panely.

Třída Applet, která je součástí vývojového prostředí, implementuje základní panel,

který můžeme použít jako základnu pro tvorbu jednoduchých grafických rozhraní.

Jednoduché tlačítko je zobrazitelné na panelu například takto:

import java.awt.*; import java.applet.Applet; public class Tlacitko extends Applet { Button tlacitko; public void init() { tlacitko = new Button("Klik"); add(tlacitko); } }

Příklad 19

Všimněme si zejména skutečnosti, že nový objekt, v tomto případe, se vytvoří příkazy: Button tlacitko1; tlacitko = new Button("Text"); a že po vytvoření tohoto objektu je třeba jej zaregistrovat prostřednictvím metody add.

Třída Button je součásti knihovny třídy java.awt. Text použitý při tvorbě tohoto

objektu je jednak zobrazen, ale také je dán zpět k dispozici danému appletu při zpracováni

události (event).

74

Page 75: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

7.5. Zpracováni grafické události

V této kapitole se dozvíte: o způsobu zpracování události myši prostřednictvím grafických objektů jako jsou tlačítka odeslání či potvrzení. Doba potřebná k prostudování této kapitoly: 60 minut

Zpracováni události týkající se grafického tlačítka je podobné zpracováni události

myši. Vyžaduje předefinování metody action() daného appletu. Metoda action() je

součástí třídy java.awt.Component, z niž je třída Button odvozena. Zpracováni události tří

různých tlačítek pak může v appletu vypadat třeba takto: public class Buttons extends Applet { Button k1,k2,k3; public void init() { k1 = new Button("Tlacitko 1"); k2 = new Button("Tlacitko 2"); k3 = new Button("Tlacitko 3"); this.add(k1); this.add(k2); this.add(k3); } public boolean action (Event e, Object obj) { if (e.target == k1) System.out.println("Tlacitko 1 stlaceno."); if (e.target == k2) System.out.println("Tlacitko 2 stlaceno."); if (e.target == k3) System.out.println("Tlacitko 3 stlaceno."); return true; } }

Příklad 20

75

Page 76: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

7.5.1. Další typy grafických objektů

Java umožňuje zobrazováni nejen standardních tlačítek, ale umožňuje i tzv.

výběrová tlačítka (choice button), potvrzovací políčka (checkbox) a další. Tyto jsou k

dispozici třídami java.awt.Choice a java.awt.Checkbox. Výběrová tlačítka (choice buttons)

umožňují rychlý přístup ke krátkému seznamu položek. Například výběr dnů v týdnu Choice DnyvTydnu; DnyvTydnu = new Choice(); DnyvTydnu.addItem("Pondeli"); DnyvTydnu.addItem("Utery"); | | DnyvTydnu.addItem("Nedele"); Opět i zde platí, že text zadaný metodou addItem() je vracen v parametru Object při

výskytu události pro zpracováni. Cely objekt je pak zaregistrován prostřednictvím metody add() add(DnyvTydnu);

Zpracováni události výběrového tlačítka public boolean action (Event e, Object obj) { if (e.target instanceof Choice) { String den = (String)obj; System.out.println ("Vybrany den je "+ den); } return true; }

Příklad 21

Potvrzovací políčka (checkbox) jsou často používaný ke grafickému vyjádření

určitého stavu, neboť mají pouze dvě možné hodnoty (stlačen, nestlačen). Hodnota tohoto

tlačítka je pro zpracování události předaná prostřednictvím parametru Object. Tento

parametr nabývá pouze booleovských logických hodnot true a false, podle toho jestli je

policko zatrženo (stlačeno) nebo ne. Zpracování takové události může vypadat takto: Checkbox AnoNeTlacitko; AnoNeTlacitko = new Checkbox("Vyber Ano"); public boolean action(Event e, Object obj) { if (e.target instanceof Checkbox) { System.out.println("Vybrano ANO: " + obj.toString()); } }

Příklad 22

76

Page 77: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Radiová tlačítka (radio buttons) jsou variantou zatrhávacích políček, kdy několik

zatrhávacích políček je seskupeno a jakmile je jedno tlačítko stlačeno, ostatní jsou

automaticky vypnuta. Seskupeni radiových tlacitek je možno vytvořit:

public class RadioTlacitka extends Applet { CheckBoxGroup radio; public void init() { radiotlacitka = new CheckBoxGroup(); add (new Checkbox("Pondeli",radio,true)); add (new Checkbox("Utery",radio,false)); add (new Checkbox("streda",radio,false)); } }

Příklad 23

Z dalších grafických objektu Java nabízí návěstí (label), listy (s jednoduchým nebo

mnohonásobným výběrem), textová pole, textové oblasti a "rolovací tlačítka".

77

Page 78: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

7.6. Pokročilé prvky grafického rozhráni

V této kapitole se dozvíte: o pokročilejších metodách tvorby grafických rozhraní. Také se naučíte způsobu, jakým vytvoříte animace na webovské stránce. Ukážeme si možnosti třídy Graphics, s jejíž pomocí vytváříme grafické objekty. Doba potřebná k prostudování této kapitoly: 45 minut

Výše uvedená tlačítka a zpracování generovaných události jsou pouze základními

stavebními prvky pro tvorbu grafického rozhraní v jazyce Java. Je nutno vyzdvihnout

skutečnost, ze grafické programy či applety implementované v Javě budou pracovat a

vypadat stejně (nebo velmi podobné) na různých typech počítačů. Toto je velkým přínosem

Javy, který jistě ocení všichni, kdo se zabývají grafickým programováním v prostředí X-

Windows. Takto získají nejen relativně jednoduše vytvořené grafické rozhraní pro svůj typ

operačního systému, ale zároveň i okamžitou přenositelnost do MS Windows a Apple

MacIntosh.

Správci rozložení (Layout Managers) umožňují kontrolu rozložení jednotlivých

grafických komponentu na panelu. Java má několik typu těchto správců. Nejjednodušším z

nich je tzv. FlowLayout Manager, který je vždy přítomen implicitně, pokud není použit

jiný správce. Tento správce umisťuje grafické objekty na obrazovku vedle sebe. Dalším je

tzv. BorderLayout Manager, který umožňuje daleko komplexnější rozložení objektu na

obrazovce, neboť si rozděluje panel na pět oblasti - severní, jižní, zapadni, východní a

střední.

Nejpokročilejší ze správců rozložení je tzv. GridLayout Manager, který umožňuje

rozdělení panelu na řádky a sloupce a tím umožňuje prakticky libovolné umístění

grafických objektu na daném panelu.

78

Page 79: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

7.6.1. Grafické objekty a animace

Grafické objekty třídy java.awt.Graphics mají celou řadu metod jak k

zobrazováni textu, tak i grafických images, například:

drawString(string s, x, y)

drawChars(char data[], ofset, delka, x, y)

drawBytes(byte data[], ofset, delka, x, y)

drawLine (x1, y1, x2, y1)

drawRect(x, y, sirka, vyska)

fillRect(x, y, sirka, vyska)

clearRect(x, y, sirka, vyska)

drawOval(x, y, sirka, vyska)

fillOval(x, y, sirka, vyska)

drawImage(Image im, ImageObserver observer)

Doporučují nejen prostudování popisu třídy java.awt.Graphics, ale také

vyzkoušení, co přesně, která metoda dělá, ačkoliv je to již často zřejmě z názvu metody.

Zajímavá je zejména metoda drawImage, která vyžaduje jako parametr objekt Image

a objekt ImageObserver. Grafický image je možno do programu zavést pomocí metody

getImage ze třídy java.applet.Applet, která se zpravidla spouští během metody init(),

jak také ukazuje následující příklad:

public void init() { im = getImage(getDocumentBase(),"obrazek.gif"); }

Tuto grafickou image pošleme na obrazovku pomoci metody drawImage

public void paint(Graphics g) { g.drawImage(im, 25, 25, this); }

79

Page 80: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Jednoduchou animaci lze provést načtením několika grafických souboru do

grafického pole a pak je postupné posílat na obrazovku. Načtení je možno provést tímto

způsobem: Image pole[] = new Image [3]; pole[0] = getImage(getDocumentBase(),"obrazek0.gif"); pole[1] = getImage(getDocumentBase(),"obrazek1.gif"); pole[2] = getImage(getDocumentBase(),"obrazek2.gif");

Animaci pak spustíme import java.awt.Graphics; import java.applet.Applet; public class Animace extends Applet { private i = 0; Image pole[] = new Image [3]; public void init() { pole[0] = getImage(getDocumentBase(),"obrazek0.gif"); pole[1] = getImage(getDocumentBase(),"obrazek1.gif"); pole[2] = getImage(getDocumentBase(),"obrazek2.gif"); } public void paint (Graphics g); { g.drawImage(pole[i], 50, 50, this); i++; if (i > 2) { i = 0; } } }

Příklad 24

Obr.15

80

Page 81: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Pokud si zkusíte naprogramovat takovou jednoduchou animaci, pravděpodobně

zjistíte, že sice animace nastala, ale dochází k rušivému bliknuti při každé výměně obrázku.

Je to způsobeno tím, že metoda update(), která má na starosti výstup každého nového

obrázku nejprve vyčistí obrazovku voláním metody clear(). Proto je toto blikání možné

odstranit redefinováním metody update(). Tak metoda clear() v ní není spouštěná: void public update (Graphics g) { repaint(); }

81

Page 82: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

7.7. Třída MediaTracker

V této kapitole se dozvíte: o možnostech třídy MediaTracker. Povíme si o metodách tvorby kvalitních webovských animací. Povíme si o metodě, kterou odstraníme nepříjemné poblikávání stránky, při spuštění animace. Doba potřebná k prostudování této kapitoly: 45 minut

Třídu MediaTracker lze nalézt v knihovně java.awt, a je výhodné ji používat k

animacím, neboť poskytuje několik metod k monitorování objektu a definovatelných skupin

objektu. Kombinaci třídy MediaTracker a dvojitého bafrování lze vytvářet velmi plynulé

animace. Mezi nejzajímavější metody teto třídy patří: void addImage (Image image, int groupid) ktera zaregistruje danou image s prislusnym identifikatorem skupiny (grafickych) objektu. boolean checkID(int groupid) ktera kontroluje, zda vsechny image s danym identifikatorem skupiny jsou naloadovany (pak vraci hodnotu true), pokud nektere image chybi vraci hodnotu false, ale nezajistuje jejich dodatecne zavedeni boolean checkID(int groupid, boolean load) funguje podobne jako predchozi metoda, pouze zajisti automaticke zavedeni chybejicich imagi, pokud je hodnota parametru load nastavena true boolean checkAll (boolean load) kontroluje vsechny image bez rozdilu oznaceni skupinoveho identifikatoru. Zajistuje automaticke zavedeni chybejicich imagi v pripade, ze hodnota parametru load je nastavena true void waitForID(int id) ceka na zavedeni imagi daneho identifikatoru skupiny void waitForAll() ceka na zavedeni vsech imagi bez rozdilu jejich identifikatoru skupiny.

Co se týče implementace dvojího bafrování v Javě, je třeba si nejprve uvědomit

pojem grafického kontextu.

82

Page 83: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Graficky kontext je datová struktura, kterou systém umí používat jako kreslící

plochu. Například při deklaraci metody paint(): public void paint (Graphics g) {

je objekt g grafickým kontextem. Jakýkoliv vystup je možné provést použitím

tohoto kontextu: g.drawLine(1, 1, 50, 50);

Jazyk Java pak to, co bylo nakresleno do datové struktury g (tj. grafického kontextu)

převede na obrazovku.

Samotný princip dvojího bafrování spočívá ve vytvoření grafického kontextu, který

však není okamžitě převeden na obrazovku, tak jako je tomu v následujícím příkladu:

import java.applet.Applet; import java.awt.*; public class Priklad extends Applet { Image dvojitybafr; Graphics grafika; public void init { // nastaveni rozmeru bafru dvojitybafr = createImage(200,200); grafika = dvojitybafr.getGraphics(); // nastaveni pracovni kreslici plochy grafika.setColor(Color.white); grafika.fillRect(0, 0, 200, 200); grafika.setColor(Color.black); }

Příklad 25

Nyní je možno použít grafického kontextu grafika pro jakýkoliv graficky výstup.

Image však budou existovat pouze v objektu dvojitybafr. Obsah tohoto objektu je možné

zobrazit na obrazovce pomoci metody paint takto public void paint(Graphics g) { g.drawImage(dvojitybafr, 0, 0, this); }

83

Page 84: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

7.8. Zvukové přehrávky

V této kapitole se dozvíte: o možnostech zpracování zvuku v jazyce JAVA. Dovíte se o možnostech, které JAVA poskytuje v oblasti audio přehrávek na webovských stránkách. Doba potřebná k prostudování této kapitoly: 45 minut

Jazyk Java má metody k přehrávání zvukových souboru ve standardní formátu firmy

Sun Microsystems označován jako au. Tyto metody je možné nalézt ve třídě

java.applet.AudioClip. Software zabudovaný do interpretu Javy zajisti vlastní

přehrávku na zvukové kartě počítače na němž je applet spuštěn.

Nejjednodušším způsobem jak přehrát zvukový soubor je prostřednictvím metody play.

play(getDocumentBase(),"zvuk.au"); Následující jednoduchý applet zobrazí krátkou zprávu a přehraje zvukový soubor import java.awt.Graphics; import java.applet.Applet; public class ZvukovyAplet extends Applet { public void paint(Graphics g) { g.drawString("Poslouchejte nasledujici prehravku", 10, 10); play(getDocumentBase(), "zvuk.au"); } }

Příklad 26

Na první pohled je nápadná podobnost přehrávání zvukových souboru s výstupem

grafických imagi. Proto je též možné nejprve zvukový soubor naloadovat (tj. uschovat v

operační paměti) a přehrát až někdy později. Tohoto lze docílit například takto

AudioClip zvuk; zvuk = getAudioClip(getDocumentBase(),"zvuk.au");

Jakmile je zvuková nahrávka přístupná v objektu zvuk, pak je možné použít metody

play, loop a stop k jejímu ovládání. Metoda play spouští přehrávku zvukového záznamu,

který je dostupný v daném objektu. zvuk.play();

84

Page 85: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

Metoda loop pracuje podobně jako play, pouze neustále přehrává daný zvukový

záznam dokola. zvuk.loop();

Jakmile použijete metody loop, budeme potřebovat danou přehrávku zastavit. Java

má k dispozici metodu stop, určenou přesně k tomuto účelu zvuk.stop();

Kompletní krátký applet k přehrávání zvukového souboru ve formě zastavitelné

zvukové smyčky pak může vypadat následujícím způsobem.

import java.awt.Graphics; import java.applet.*; public class ZvukovyAplet extends Applet { AudioClip zvuk; public void init() { zvuk = getAudioClip(getDocumentBase(),"zvuk.au"); } public void paint(Graphics g) { g.drawString("Poslouchejte nasledujici prehravku", 10,10); } public void start() { zvuk.loop(); } public void stop() { zvuk.stop(); } }

Příklad 27

85

Page 86: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

8. Test č.2

V této kapitole se dozvíte: Jakým způsobem budete zpracovávat test pro ukončení kurzu XJAV1. Doba potřebná k prostudování této kapitoly: 5 minut Doba potřebná k vypracování testu: 90 minut

Zakončením tohoto kurzu je test, ve kterém by jste měli potvrdit své vědomosti. Pro

jeho úspěšné vykonání musíte vyřešit alespoň polovinu zadaného příkladu.

Test spustíte kliknutím na obrázek . Jako jméno zadejte své příjmení, jako heslo vaše příjmení+2002.

86

Page 87: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

TEST č.2 - XJAV1 - OOP pro Internet a Intranet

Používáte prohlížeč Microsoft Internet Explorer 4.0 (compatible; MSIE 5.01; Windows NT 5.0)

Pro správné zobrazení češtiny použijte kódování: Středoevropské jazyky Windows

Jadro: Win32 Rozlišení: 1024 x 768 Barevná hloubka: 16 bit Java povolena ?: ANO

Anti-aliasing ?: NE

Uživatelské jméno: Heslo:

Úkol

Vytvořte applet, který načte několik obrázku a rozpohybuje je.

Obrázek umístěte doprostřed stránky a přidejte k němu odkaz na libovolnou

internetovou stránku. Při kliknutí na odkaz se přehraje zvukový záznam a

provede se přesměrování.

Program popište a zajistěte odstranění rušivého přeblikávání.

Zdrojovy kod zadaneho appletu

Doporučení

Na toto místo napište své jméno a emailovou adresu

Jmeno PrijmeniEmail

Potvrdit-Odeslat Smazat-Znovu

87

Page 88: XJAV1 – OOP PRO INTERNET A INTRANETinformatika-osu.czechian.net/files/java_skripta.pdf · ostravskÁ univerzita p ŘÍrodovĚdnÁ fakulta xjav1 – oop pro internet a intranet ing.

9. Seznam použité a doporučené literatury

[1] S. Davis, Visual J++, 1998, GRADA [2] P. J. Perry, Tvorba dokonalých WWW stránek, Praha, Grada, 1996 [3] P. Herout, Grafické uživatelské…, České Budějovice : Kopp, 2001 [4] M. Grand, Referenční příručka jazyka, Praha, Computer Press, 1998 [5] D. Štrupl, Java pro každého : programování pro Internet, Praha, Plus, 1997 [6] M. Virius, Java pro zelenáče, Praha, Neokortex, 2001 [7] T. Pitner, Začínáme programovat…, Praha, Grada Publishing, 2002

88


Recommended