Package balíček z pohledu UML

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

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

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

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

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

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

Algoritmizace a programování

1. Dědičnost a polymorfismus

Třída DrawingTool. Obrázek 1: Prázdné okno připravené pro kreslení

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

Algoritmizace a programování. Terminálový vstup a výstup

Seminář Java II p.1/43

Java - Kresba. 2/28/11 1/8 Java - kresba

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Aplikace s grafickým uživatelským rozhraním

Projekty pro výuku programování v jazyce Java

Výčtový typ strana 67

Programování v Javě I. Leden 2008

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

Programovací jazyk Java

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

Java a XML. 10/26/09 1/7 Java a XML

Generické programování

1 Uživatelská dokumentace

Java aplety. Předávání parametrů z HTML

Algoritmizace a programování

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

KTE / ZPE Informační technologie

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

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

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Reliance 3 design OBSAH

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

Deklarace a vytváření

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

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

Abstraktní datové typy: zásobník

OOPR_05. Případové studie

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

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

Datové abstrakce v programovacích jazycích

Textové soubory. alg9 1

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

1. Programování proti rozhraní

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Abstraktní třída a rozhraní

Úvod do programovacích jazyků (Java)

Základy objektové orientace I. Únor 2010

typová konverze typová inference

Teoretické minimum z PJV

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

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

Úvod do programovacích jazyků (Java)

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

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

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

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

Soubor jako posloupnost bytů

DUM 06 téma: Tvorba makra pomocí VBA

20. Projekt Domácí mediotéka

Access. Tabulky. Vytvoření tabulky

3 KTE / ZPE Informační technologie

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

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

Vývojové nástroje jazyka Java

První kroky s METEL IEC IDE

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Pro označení disku se používají písmena velké abecedy, za nimiž následuje dvojtečka.

Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica

Přehled probírané látky

Příloha 6. Palety nástrojů

Dynamicky vázané metody. Pozdní vazba, virtuální metody

1. Téma 12 - Textové soubory a výjimky

RMI Remote Method Invocation

Systém souborů (file system, FS)

JAVA. Krátce o Reflection API

7 Jazyk UML (Unified Modeling Language)

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

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

11. Dědičnost. Dědičnost strana 103

Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN BASIC

7 Jazyk UML (Unified Modeling Language)

Principy objektově orientovaného programování

Principy UML. Clear View Training 2005 v2.2 1

7. Datové typy v Javě

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

Regulární výrazy. Vzory

PREPROCESOR POKRAČOVÁNÍ

24. listopadu 2013, Brno Připravil: David Procházka

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

přetížení operátorů (o)

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

Konstruktory překladačů

Třídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016

Transkript:

OOPR_07 1

Obsah přednášky Balíčky (package) z pohledu UML Balíčky v Javě a příkaz import JAR soubory a samostatná aplikace Ladění programů debugger Jednoduché programy s grafikou 2

Package balíček z pohledu UML Balíček je abstrakce sdružování je to kontejner a vlastník modelovaných elementů. Každý balíček má vlastní jmenný prostor namespace uvnitř něhož musí být všechny názvy jedinečné. né. Většinou se jedná o názvy tříd a podtříd. Balíček je univerzálním mechanismem uspořádání elementů do skupin. 3

Package balíček z pohledu UML Pomocí mechanismu balíčků lze realizovat následující úkoly: Seskupovat sémanticky (významově) související prvky (třídy) Definovat sémantické hranice uvnitř modelu. Vytvářet jednotky správy konfigurace. V etapě návrhu poskytují balíčky jednotky pro souběžnou práci. Balíčky poskytují zapouzdřený jmenný prostor, v němž musí být všechny názvy jedinečné. 4

Grafická reprezentace balíčku v UML Balíčky vytvářejí hranice, jež ohraničují prostor, v němž musí být všechny názvy jedinečné. Jmenné prostory vytvářejí důležitý sémantický rozdíl mezi závislostmi typu <<import>> a <<access>>. Oba uvedené stereotypy umožňují klientským prvkům přístup k exportovaným prvkům dodavatelského balíčku, liší se však sémantikou. <<access>> <<import>> Balíček1 Balíček2 Balíček3 5

Stereotyp v UML Stereotyp zastupuje určitou variantu existujícího prvku v datovém modelu, který má sice stejnou podobu (atributy a relace), ale používá se s jiným záměrem. Stereotyp umožňuje uje vytvářet nové prvky modelu založené na existujících prvcích. Název stereotypu se ukládá do dvojitých závorek << >> a připojuje k novému prvku. 6

Závislost balíčků Balíčky mohou být vytvářeny v hierarchii, podobně jako adresáře souborů. Veřejným prvkům (public) balíčku říkáme exportované prvky (mohou být používány prvky jiných balíčků). Soukromé prvky (private) balíčků nemohou být používány prvky jiných balíčků. 7

Package balíček z pohledu UML stereotyp <<import>> Závislost stereotypu <<import>> znamená, že jmenný prostor dodavatele je sloučen se jmenným prostorem klienta. Znamená to, že klientské prvky se mohou na dodavatelské (knihovní) prvky odkazovat pouze názvem cílového prvku, nemusí uvádět cestu k němu. Závislost stereotypu <<import>> je nejčastěji používaným typem závislosti navzdory tomu, že může vést ke kolizím kvůli nezamýšlené duplicitě názvů. 8

Package balíček z pohledu UML stereotyp <<access>> Závislost typu <<access>> znamená, že prvky klientského balíčku mohou přistupovat k veřejným prvkům dodavatelského balíčku, aniž by přitom došlo ke sloučení jmenných prostorů. Klientské prvky mohou používat dodavatelské prvky, musí však použít také cestu k danému prvku. 9

Balíčky v Javě Balíčkem se nazývá to, co můžeme získat, použitím klíčového slova import k importu celé knihovny např.: import java.util.*; příkaz připojuje k projektu celou knihovnu nástrojů balíčku java, podbalíčku util při vytváření vlastního balíčku musí být v daném souboru první příkaz package s názvem balíčku např.: package balicek1; 10

Balíčky uživatelský pohled Java umožňuje sdružovat skupiny tříd do hierarchicky uspořádaných balíčků (packages). Konvence: zdrojové soubory tříd patřících do společného balíčku se ukládají do stejného adresáře (stejné složky) Překladač uspořádá stejným způsobem i přeložené soubory Zdrojové a přeložené soubory nemusí být ve stejné složce (BlueJ umisťuje zdrojové soubory *.java i přeložené soubory *.class do stejné složky) 11

Balíčky označování (notace) Názvy hierarchických balíčků jsou odděleny. (tečkou) např. import java.util.date; import příkaz pro začlenění balíčku do aplikace, před tímto příkazem může být pouze příkaz package (viz dále) java balíček s názvem java util podbalíček balíčku java Calendar název importované třídy deklarace objektů s příkazem import: Calendar dnes; // pouze kvalifikace, bez konstruktoru 12

Balíčky označování (notace) deklarace objektů bez příkazu import: java.util.calendar dnes; balíčky jsou užitečné pro seskupování (agregaci) příbuzných tříd 13

Balíčky význam pomáhají odstranit konflikt jmen (názvů tříd) tím, že jméno třídy je jako přípona k názvům balíčků, které jsou první např. plné jméno třídy Calendar je: java.util.calendar např. java.awt (Abstract Window Toolkid) obsahuje třídu List a java.util má rozhraní List class Priklad { java.awt.list list1; // List gui java.util.list list2; // abstraktní List namespace prostor jmen (používají jiné systémy) 14

Balíčky - vytvoření Třída patřící do daného balíčku musí začínat příkazem: package název_balíčku; název_balíčku musí být stejný jako název složky (podadresáře) e) v níž je soubor umístěn názvy balíčků: písmena, číslice a znaky _ a $ nesmějí být shodné s klíčovým slovem, nesmějí začínat číslicí podle konvence pouze malá písmena nabídka Edit \ New package při deklaraci se balíčky vnořují do sebe 15

package cviceni; Poznámky public class Prepravka { public int extrem; public int index; public Prepravka() { extrem=0; index = 0; } public Prepravka(int extrem, int index) { this.extrem = extrem; this.index = index; } public void setprepravka(int prvni, int druhy) { extrem = prvni; index = druhy; } public String tostring() { return String.format("%s: %d\n%s: %d","extrem",extrem,"index",index); } public int getextrem() { return extrem; } } public int getindex() { return index; } 16

package cviceni; public class Register { private int pole[]; private int top; // konstruktor public Register(int pocet) { pole = new int[pocet]; top = -1; } } Poznámky Třída Register, Třída RegisterTestP import cviceni.register; import cviceni.prepravka;// import cviceni.* public class RegisterTestP { public static void main(string args[]) { Register a = new Register(5); a.vlozit(10); a.vlozit(15); a.vlozit(-44); a.tisk(); a.odstranit(15); a.tisk(); Prepravka p; p = a.minimum(); System.out.println("Minimalni prvek registru: " + p); } } System.out.println("getPrvek 15"); int b= a.getprvek(15); 17

18

package prvni.druhy.ctvrty.paty; Poznámky import javax.swing.joptionpane; // Class static pomocna trida slouzici jako schranka pro staticke metody public class Cs { } package prvni.druhy.ctvrty; import prvni.druhy.ctvrty.paty.cs; import prvni.druhy.ctvrty.paty.pom; public class Citac { } package prvni.druhy; // java první.druhy.citactest //package druhy; import prvni.druhy.ctvrty.citac; public class CitacTest { } import prvni.druhy.ctvrty.citac; // java CitacTest public class CitacTest { } 19

Konvence pojmenování balíčků Problém tvoření jedinečných jmen balíčků ať se nacházejí kdekoli. Použití internetových jmen domén za tímto účelem, protože ta garantují, že budou jedinečná ná a proto nikdy nenastane kolize. Internetová jména domén se používají v obráceném pořadí např. www.bruceeckel.com com.bruceeckel... cz.osu.... //a název skutečných balíčků 20

Proměnná prostředí CLASSPATH Javovský interpret (java OsobaTest) postupuje následovně: nejdříve vyhledá proměnnou CLASSPATH, která obsahuje jeden nebo více adresářů, které jsou použity jako kořenové adresáře pro vyhledávání.class souborů. interpret začne v uvedeném kořenovém adresáři a vezme jméno balíčku a nahradí tečky \ např. balíček foo.bar.baz bude převeden na: foo\bar\baz (v Unixu / ) 21

22

package com.bruceeckel.simple; //cz.osu.simple; Poznámky public class Vector { public Vector() { System.out.println("com.bruceeckel.simple.Vector"); } } package com.bruceeckel.simple; //cz.osu.simple; public class List { public List() { System.out.println("com.bruceeckel.simple.List"); } } 23

Konflikty názvů import dvou knihoven, které obě používají název Vector import com.bruceeckel.simple.*; import java.util.*; konflikt: Vector v = new Vector(); musíme tedy použít celý název a napsat buď: java.util.vector v = new java.util.vector(); nebo com.bruceeckel.simple.vector v = new com.bruceeckel.simple.vector(); 24

Proměná prostředí CLASSPATH Pokud jsou soubory uloženy v uvedených podadresářích: C:\doc\JavaT\com\bruceeckel\simple CLASSPATH=.;C:\doc\JavaT Pro JAR soubory platí odlišnost, a to že je třeba uvést také i jméno JAR souboru, ne pouze cestu! CLASSPATH=.;d:\data\mujJAR.jar od verze Java 2 je možné program překládat a spouštět bez nastavené proměnné prostředí CLASSPATH 25

Javovské API pakety - balíčky Application Programming Interface Java obsahuje mnoho předdefinovaných tříd, které jsou seskupeny do tzv. balíčků, paketů (packages) deklarace import specifikuje, že program např. používá třídu Scanner z paketu (balíčku) java.utils import java.util.scanner; přehled předdefinovaných balíčků (paketů) je uveden v následující tabulce 26

Javovské API pakety (balíčky) Paket - balíček java.applet java.awt java.awt.eve nt Popis funkcí Balíček obsahuje několik rozhraní požadovaných Javovskými aplety. Aplet je program schopný běžet ve webovském prohlížeči. Java Abstract Window Toolkid Package obsahuje třídy a rozhraní nutné pro práci v grafickém uživatelském rozhraní Javy (GUI) Ve stávající verzi Javy se spíše využívá javax.swing balíček Java Abstract Window Toolkid Event Package obsahuje třídy a rozhraní, které umožňují zpracování událostí pro komponenty GUI patřící pod java.awt 27

Javovské API pakety (balíčky) Paket - balíček java.io java.lang java.net Popis funkcí Java Input Output Package obsahuje třídy a rozhraní, které programy používají pro vstupně výstupní operace Java Language Package obsahuje základní třídy a rozhraní potřebné pro tvorbu javovské aplikace. Tento balíček je importován překladačem implicitně. Java Networking Package obsahuje třídy a rozhraní, které umožní programům komunikovat přes síť počítačů 28

Javovské API pakety (balíčky) Paket - balíček java.text java.util Popis funkcí Java Text Package obsahuje třídy a rozhraní, které umožňují aplikacím manipulovat s čísly, datumy a znaky jako s řetězci. Umožňuje lokalizaci programů specifické nastavení Java Utilities Package obsahuje pomocné třídy a rozhraní, které umožňují: manipulace s časem a datumem práce s náhodnými čísly ukládání a zpracování rozsáhlých dat rozdělení řetězců na menší části - token 29

Javovské API pakety (balíčky) Paket - balíček Popis funkcí javax.swing Java Swing GUI Components Package - obsahuje třídy a rozhraní, které podporují portovatelné (portable) GUI. javax.swing.eve nt Java Swing Event Package obsahuje třídy a rozhraní, které umožňují zpracování událostí pro GUI komponentu balíčku java.swing 30

Balíčky problémy (námitky) při vytvoření nového balíčku určuje jeho název implicitně také adresářovou strukturu balíček musí existovat ve složce určené názvem složka musí existovat na místě, aby jí bylo možné nají na základě hodnoty uložené v proměnné CLASSPATH 31

Java Archives Files JAR Files JAR formát je zip formát použitý na skupinu souborů, jenž je spakovaná do jednoho.jar souboru. JAR soubory jsou nezávislé na platformě stejně jako Java. JAR soubory jsou zejména výhodné při stahování z webu, protože stáhneme jeden, v němž jsou ostatní soubory spakovány. Soubor ve formátu.jar je jeden soubor obsahující kolekci zazipovaných souborů spolu se souborem manifest, který je popisuje. 32

Java Archives Files JAR Files explicitní vyvolání utility jar jar [volby] destination [manifest] inputfile(s) volby jsou skupiny písmen jejich význam je v následující tabulce 33

Význam voleb v utilitě jar Volba c t x x file f m Význam Vytváří nový, nebo prázdný archiv (v případě použití jména existujícího archivu) Vrátí tabulku obsahu Extrahuje všechny zazipované soubory Extrahuje pouze uvedený soubor specifikace souboru není-li uvedeno předpoklad stand. vstup, nebo stand. výstup (konzola) Říká, že první argument bude jméno uživatelem vytvořeného souboru manifest v Vytváří komentovaný výstup, popisující co děla jar soubor (upovídaná varianta) 0 Pouze ukládá soubory, neprovádí kompresi. Využití pro uložení souborů do classpath. Rychlejší přístup nula. M Nevytváří automaticky soubor manifest. 34

Základní operace se souborem JAR Operace Vytvoření JAR souboru Příkaz jar cf jar-file input-file(s) Prohlédnutí obsahu JAR souboru Extrahování obsahu JAR souboru Extrahování specifikovaných souborů z JAR souboru Spuštění aplikace spakované jako JAR soubor jar tf jar-file jar xf jar-file jar xf jar-file archived-file(s) java jar app.jar 35

Práce s JAR soubory Pokud soubory, které se mají uložit do JAR souboru obsahují podadresáře, jsou tyto podadresáře automaticky přidány do JAR souboru, spolu s informací o cestě Typický příklad: jar cf mujjarfile.jar *.class příkaz vytvoří JAR soubor mujjarfile, který obsahuje všechny.class soubory spolu se souborem manifest 36

Práce s JAR soubory Podobně jako předchozí příklad, ale s uživatelsky vytvořeným souborem mujmanifestfile.mf jar cmf myjarfile.jar mymanifestfile.mf *.class Vytvoří tabulku obsahu souboru mujjarfile.jar jar tf myjarfile.jar 37

Práce s JAR soubory Přidá příznak komentáře (více informací) o zkomprimovaných souborech jar tvf mujjarfile.jar Pokud vytvoříme JAR soubor s volbou 0 (nula), tento JAR soubor bude přidán do classpath Při poklepání na.jar soubor by se tento měl spustit (pokud jsou nastaveny správně příznaky) ke spuštění.jar souboru se používá pouze jre místo jdk 38

Příklad TicTacToe TicTacToe.class audio images jar cvf TicTacToe.jar TicTacToe.class audio images jeden soubor a dva kompletní podadresáře, v adresáři TicTacToe 39

Prohlížení obsahu JAR souboru jar tf TicTacToe.jar META-INF/MANIFEST.MF TicTacToe.class 40

Extrahování obsahu JAR souboru jar xf TicTacToe.jar TicTacToe.class images/cross.gif extrahujeme pouze dva soubory, a to TicTacToe.class a cross.gif z adresáře images jar xf TicTacToe.jar extrahujeme všechny soubory 41

java jar app.jar Spuštění aplikace 42

Ladění programů - debugger ladění programů možnosti: vlastní výpis lokálních proměnných použití ladícího programu 1. nastavení zarážek (breakpointů) a v místech zastavení programu (možnost prohlížení obsahu všech proměnných, výhodný funkce inspect ) 2. zatrhnout záložku View \ Show debugger 3. spustit v BlueJ metodu main v bodě přerušení debugger, kde se prohlíží proměnné, krokuje program 43

Poznámky Nastavení bodů přerušení breatpoints Tool Set/ClearBreakpoint Ctrl B 44

Poznámky View Show debugger 45

Význam tlačítek Halt slouží k zastavení běžícího programu (zacyklený program) Step krokování, necháte program provést příkaz na který ve zdrojovém textu ukazuje šipka Step Into krokovat dovnitř, podobná funkce jako Step, při provádění metody se zavolá pouze první příkaz metody a pokračuje se v metodě Continue program pokračuje v běhu až do příští zarážky (breakpointu) Terminate ukončení programu 46

Poznámky Inspekce objektů 47

Jednoduché použití grafiky orientace osy x a y a jejich rozsah daný nastavením v zobrazitelných bodech (800x 600, 1280x1024) Třída Graphics z balíčku java.awt poskytuje různé metody pro zobrazení textu a různých tvarů Třída JPanel z balíčku javax.swing poskytuje prostor pro kreslení 48

package graf1; import java.awt.graphics; import javax.swing.jpanel; public class DrawPanel extends JPanel{ public void paintcomponent(graphics g){ super.paintcomponent(g); int sirka = getwidth(); //ziska sirku panelu int vyska = getheight(); //ziska vysku panelu Poznámky Třída vytváří skutečné kreslení DrawPanel je podtřídou třídy JPanel //kresli dve cary z rohu do rohu g.drawline(0, 0, sirka, vyska); g.drawline(0, vyska, sirka, 0); // kresli obdelnik g.drawrect(12, 15, sirka-20, vyska-30); } } 49

Třída DrawPanel Každý třída JPanel, tedy i DrawPanel má metodu paintcomponent, kterou systém automaticky volá vždy, když potřebuje zobrazit JPanel jedná se o případy prvního zobrazení, zobrazení po překrytí, zobrazení po změně velikosti metoda má jeden argument typu Graphics který dostaneme od systému, když tuto metodu vyvoláme call back. 50

Třída DrawPanel prvním příkazem v každé metodě paintcomponent musí být volání předka, tedy: super.paintcomponent(g); 51

package graf1; import javax.swing.jframe; public class DrawPanelTest { public static void main(string[] args) { Poznámky Třída vytvoří okno pro zobrazení kreslení // vytvori panel do ktereho se kresli DrawPanel panel = new DrawPanel(); //vytvori novy frame, ktery sestava z panelu JFrame aplikace = new JFrame(); // nastavi frame - ramec na exit, kdyz je uzavreny aplikace.setdefaultcloseoperation(jframe.exit_on_close); aplikace.add(panel); //prida panel do framu aplikace.setsize(250,250); //nastavi velikost framu aplikace.setvisible(true); //ucini frame viditelnym } } 52

Třída DrawPanelTest K zobrazení DrawPanel na obrazovku, potřebujeme window (okno) to vytvoříme pomocí třídy JFrame aplikace.setdefaultcloseoperation(jframe.exit_on_close); způsobí, že aplikace bude ukončena, když uživatel zavře okno aplikace.add(panel); připojí DrawPanel s našim kreslením k JFrame 53

Poznámky 54

Poznámky 55

Grafika - barvy a vyplněné tvary public Color(int r, int g, int b); předdefinované barvy: Color.BLACK, Color.BLUE, Color.CYAN, Color.DARK_GRAY, Color.GRAY, Color.GREEN, Color.LIGHT_GRAY, Color.MAGENTA, Color.ORANGE, Color.PINK, Color.RED, Color.WHITE, Color.YELLOW 56

Grafika - barvy a vyplněné tvary metody fillrect, filloval podobné jako drawrect a drawoval: první dva parametry x a y souřadnice levého horního rohu třetí parametr šířka obrazce čtvrtý parametr délka obrazce 57

import java.awt.color; import java.awt.graphics; import javax.swing.jpanel; Poznámky public class DrawSmiley extends JPanel { public void paintcomponent( Graphics g ) { super.paintcomponent( g ); // draw the face g.setcolor( Color.YELLOW ); g.filloval( 10, 10, 200, 200 ); // draw the eyes g.setcolor( Color.BLACK ); g.filloval( 55, 65, 30, 30 ); g.filloval( 135, 65, 30, 30 ); // draw the mouth g.filloval( 50, 110, 120, 60 ); // "touch up" the mouth into a smile g.setcolor( Color.YELLOW ); // první obrazek g.fillrect( 50, 110, 120, 30 ); // tyto tri radky g.filloval( 50, 120, 120, 40 ); // jsou komentar } // end method paintcomponent } // end class DrawSmiley 58

import javax.swing.jframe; Poznámky public class DrawSmileyTest { public static void main( String args[] ) { DrawSmiley panel = new DrawSmiley(); JFrame application = new JFrame(); } application.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); application.add( panel ); application.setsize( 230, 250 ); application.setvisible( true ); } // end main 59