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

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

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

Úvod do programovacích jazyků (Java)

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

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

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

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

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

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

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

Principy objektově orientovaného programování

Iterator & for cyklus

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

Abstraktní datové typy: zásobník

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

Java Výjimky Java, zimní semestr

Java - výjimky. private void vstup() throws IOException {... }

Parametrizované třídy Generics generické třídy. JDK zavádí mimo jiné tzv. parametrizované třídy - generics

JAVA Unit testing Java, zimní semestr

Úvod do programovacích jazyků (Java)

Jazyk C# (seminář 6)

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

Obsah přednášky. GUI v Javě a událostmi řízené programování. Základní prvky grafického rozhraní. Základní komponenty.

Java Řetězce Java, zimní semestr

Události. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

GUI v Javě (připomínka) Návrhář GUI Příklad aplikace MVC Model-View-Controller Události Vnitřní třídy. MVC Model-View-Controller

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Obsah přednášky. GUI v Javě a událostmi řízené programování. Základní prvky grafického rozhraní. Základní komponenty.

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

GUI v Javě a událostmi řízené programování

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

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

GUI v Javě a událostmi řízené programování

GUI v Javě a událostmi řízené programování

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

Java GUI události. Událostmi řízené programování. Zpracování = obsluha událostí

Programování v Javě I. Leden 2008

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

JAVA Unit testing Java, zimní semestr

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

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

boolean hasnext() Object next() void remove() Kolekce

Java pro programátory.net

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

Technologie JavaBeans

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

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

VIII. Seminář Java VIII p.1/36

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

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

Java a Caché IV: Manipulace s objekty

Java pro programátory.net

Generické programování

Seminář Java II p.1/43

KTE / ZPE Informační technologie

7. Dynamické datové struktury

Tvorba informačních systémů

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

Základy objektové orientace I. Únor 2010

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

RMI - Distribuované objekty v Javě

Více o konstruktorech a destruktorech

GUI v Javě. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 3 A0B36PR2 Programování 2

Část I Příklad - Generické typy, iterátor

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

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

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

JAVA. Krátke poznámky:

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

Grafické uživatelské rozhraní v Javě. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

8. Grafické uživatelské rozhraní

Grafické uživatelské rozhraní v Javě. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

GUI v Javě. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 3 A0B36PR2 Programování 2

Část I Příklad - Generické typy, iterátor

Stream API. Petr Krajča. Základy programovaní 4 (Java) Katedra informatiky Univerzita Palackého v Olomouci

Lambda funkce Novinky v interfaces Streamy Optional - aneb zbavujeme se null. Java 8. Ondřej Hrstka

Objektově orientované programování v PHP 5. Martin Klíma

Komponenty v.net. Obsah přednášky

Mělká a hluboká kopie

Teoretické minimum z PJV

8. GRAFICKÉ UŽIVATELSKÉ ROZHRANÍ

Programovací jazyk Java

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

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Úvod do programovacích jazyků (Java)

20. Projekt Domácí mediotéka

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

typová konverze typová inference

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

UJO Framework. revoluční architektura beans. verze

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

PREPROCESOR POKRAČOVÁNÍ

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

7. Statické prvky třídy

Architektury informačních systémů

Objekty v PHP 5.x. This is an object-oriented system. If we change anything, the users object.

Architektury informačních systémů

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

Java Enum Java, zimní semestr ,2017 1

Petr Aubrecht. Gerstner Laboratory,

Transkript:

Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 1/26

Iterátory Úvod do programovacích jazyků (Java), 12 Iterátor umožňuje procházet prvky datové struktury, java.util.iterator: public interface I t e r a t o r boolean hasnext ( ) ; Object next ( ) ; void remove ( ) ; / / v o l i t e l n e C o l l e c t i o n c = new A r r a y L i s t ( ) ;... / / napln kolekce for ( I t e r a t o r i = c. i t e r a t o r ( ) ; i. hasnext ( ) ; ) Object o = i. next ( ) ;... / / zpracuj prvek c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 2/26

Generické typy L i s t i n t L i s t = new L i n k e d L i s t ( ) ; i n t L i s t. add (new I n t e g e r ( 3 4 ) ) ; I n t e g e r x = ( I n t e g e r ) i n t L i s t. i t e r a t o r ( ). next ( ) ; i n t value = x. i n t V a l u e ( ) ; Porovnej s L i s t < Integer > i n t L i s t = new L i n kedlist < Integer > ( ) ; i n t L i s t. add (new I n t e g e r ( 3 4 ) ) ; I n t e g e r x = i n t L i s t. i t e r a t o r ( ). next ( ) ; i n t value = x. i n t V a l u e ( ) ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 3/26

Generické typy definice public interface L i s t <E> void add (E x ) ; I t e r a t o r <E> i t e r a t o r ( ) ; public interface I t e r a t o r <E> E next ( ) ; boolean hasnext ( ) ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 4/26

Třída bez instance Definice třídy pro kterou není možné vytvořit instanci: Třída je deklarována jako final. Deklarujeme konstruktor bez argumentů a označíme jej jako private. Další konstruktor nedefinujeme. Taková třída obyčejně obsahuje třídní metody a proměnné, např. java.lang.math: public f i n a l class Math private Math ( )... / / t r i d n i promenne a metody c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 5/26

Garbage Collector Pokud garbage collector detekuje pamět, která již není používána (např. instance třídy na kterou byl ztracen ukazatel), nejprve volá metodu finalize() a poté je pamět vrácena. Metodu finalize() můžeme tedy využít pro určité akce, které chceme provést před jeho zničením. O tyto akce se musí postarat programátor, Java nezná pojem destruktor. c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 6/26

Ukončení programu Program je ukončen, pokud je ukončena metoda main(). Ve skutečnosti je program ukončen, pokud jsou ukončena všechna vlákna. Pro ukončení programu můžeme použít metodu exit() třídy java.lang.system. Argumentem metody je návratový kód aplikace. Je zvykem vrátit nenulovou hodnotu v případě chyby. System. e x i t ( 0 ) ; System. e x i t ( 1 ) ; / / nastala chyba c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 7/26

Vehnízděná třída (Nested class) 1/4 Vehnízděná třída je třída definována jako člen jiné třídy. class EnclosingClass... class NestedClass... c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 8/26

Vehnízděná třída 2/4 Vehnízděná třída má neomezený přístup ke členům nadřazené třídy, dokonce i když jsou deklarovány jako private. Třída by měla být definována v jiné třídě, pokud dává smysl pouze v kontextu nadřazené třídy nebo pokud je vázána na funkcionalitu nadřazené třídy. Vehnízděná třída může být statická. Nestatická vehnízděná třída se nazývá inner class. Anonymní vehnizděná třída používá se např. v GUI jako adapter. c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 9/26

Vehnízděná třída 3/4 public class Container1 private Object [ ] items ;... public I t e r a t o r i t e r a t o r ( ) return new C o n t a i n e r I t e r a t o r ( ) ; class C o n t a i n e r I t e r a t o r implements I t e r a t o r i n t index = 0 ; public boolean hasnext ( ) return index < items. l e n g t h ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 10/26

Vehnízděná třída 4/4 public Object next ( ) i f (! hasnext ( ) ) throw new NoSuchElementException ( ) ; return items [ index + + ] ;... c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 11/26

, Counter 1/12 c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 12/26

Counter, CounterType.java 2/12 public interface CounterType public void increment ( ) ; public void decrement ( ) ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 13/26

Counter, Counter.java 3/12 import java. u t i l. ; public class Counter extends Observable implements CounterType private i n t mvalue = 0 ; public Counter ( Observer o ) addobserver ( o ) ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 14/26

Counter, Counter.java 4/12 public void setvalue ( i n t value ) this. mvalue = value ; setchanged ( ) ; notifyobservers (new I n t e g e r ( mvalue ) ) ; public i n t getvalue ( ) return mvalue ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 15/26

Counter, Counter.java 5/12 public void increment ( ) setvalue ( getvalue ( ) + 1 ) ; public void decrement ( ) setvalue ( getvalue ( ) 1 ) ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 16/26

Counter, CounterGUI.java 6/12 import javax. swing. ; import java. awt. ; import java. awt. event. ; import java. u t i l. ; public class CounterGUI extends JFrame implements Observer, A c t i o n L i s t e n e r protected JButton mbtninc = new JButton ( " Increment " ) ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 17/26

Counter, CounterGUI.java 7/12 protected JButton mbtndec = new JButton ( " Decrement " ) ; protected JLabel mlbllabel = new JLabel ( " Counter Value " ) ; protected J T e x t F i e l d mtfvalue = new J T e x t F i e l d ( " 0 " ) ; protected CounterType mcounter = new Counter ( this ) ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 18/26

Counter, CounterGUI.java 8/12 public CounterGUI ( ) setlayout (new BorderLayout ( 1 5, 1 5 ) ) ; s e t T i t l e ( " Counter " ) ; JPanel north = new JPanel ( ) ; north. setlayout (new BorderLayout ( ) ) ; north. add ( BorderLayout.NORTH, mlbllabel ) ; north. add ( BorderLayout.SOUTH, mtfvalue ) ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 19/26

Counter, CounterGUI.java 9/12 JPanel south = new JPanel ( ) ; south. setlayout (new GridLayout ( 1, 2, 1 5, 1 5 ) ) ; south. add ( mbtninc ) ; south. add ( mbtndec ) ; getcontentpane ( ). add ( BorderLayout.NORTH, north ) ; getcontentpane ( ). add ( BorderLayout. SOUTH, south ) ; pack ( ) ; mbtninc. addactionlistener ( this ) ; mbtndec. addactionlistener ( this ) ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 20/26

Counter, CounterGUI.java 10/12 public void actionperformed ( ActionEvent e ) i f ( e. getsource ( ) = = mbtninc ) mcounter. increment ( ) ; else i f ( e. getsource ( ) = = mbtndec ) mcounter. decrement ( ) ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 21/26

Counter, CounterGUI.java 11/12 public void update ( Observable c, Object arg ) mtfvalue. settext ( arg. t o S t r i n g ( ) ) ; public s t a t i c void main ( S t r i n g [ ] args ) new CounterGUI ( ). s e t V i s i b l e ( true ) ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 22/26

, Counter 12/12 c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 23/26

GUI, Adapter public class CounterGUI extends JFrame implements Observer... public CounterGUI ( )... mbtninc. addactionlistener (new A c t i o n L i s t e n e r ( ) public void actionperformed ( ActionEvent e ) mcounter. increment ( ) ; ) ;... c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 24/26

Úvod do programovacích jazyků (Java), 12 Aplikace spouštěné ve webovém prohlížeči. Prace s GUI appletu je podobná jako práce s GUI desktopové aplikaci: public class CounterApplet extends JApplet implements MouseListener... V appletu nemůžeme použít některé třídy z Java API (bezpečnostní omezení). c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 25/26

Další Java technologie Vlákna. Serializace objektů. Datová vrstva: JDBC. Locales. XML technologie: SAX a DOM parser. Distribuované aplikace: RMI, CORBA. Webové aplikace: J2EE Servlet, JSP. c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 26/26