WYJĄTKI, KOLEKCJE ZAGADNIENIA: 1. Wyjątki, 2. Kolekcje, vector, hashtable, properties, Klasy Arrays i Collections.

Podobne dokumenty
Programowanie obiektowe

Dawid Gierszewski Adam Hanasko

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Programowanie w języku Java. Kolekcje

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

Język JAVA podstawy. Wykład 4, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Kolekcje mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Programowanie obiektowe

Wykład 8: Obsługa Wyjątków

Kolekcje obiektów. Wyj tki.

Kolekcje - pakiet Java Collections Framework

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Programowanie Obiektowe (Java)

Programowanie obiektowe

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.

Kolekcje. Na podstawie:

Kolekcje - pakiet Java Collections Framework

Programowanie i projektowanie obiektowe

Kurs programowania. Wykład 9. Wojciech Macyna

Podstawy otwartych języków programowania Przechowywanie danych

Obsługa błędów za pomocą wyjątków. Paweł Motofa (140746)

Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór.

Programowanie obiektowe

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Tworzenie aplikacji w języku Java

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Java niezbędnik programisty spotkanie nr 8. Kolekcje c.d.

java.util.* :Kolekcje Tomasz Borzyszkowski

TYPY GENERYCZNE (GENERICS)

WYJĄTKI. Jest ona jednak czasochłonna i prowadzi do duŝego zapotrzebowania na zasoby systemu.

Języki i metody programowania Java INF302W Wykład 3 (część 1)

Comparable<Klasa_uzytkownika>

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Aplikacje w środowisku Java

Podstawy i języki programowania

Platformy Programistyczne Wykład z Javy dla zaawansowanych

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Programowanie Obiektowe Ćwiczenie 4

Programowanie obiektowe

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

KLASY, INTERFEJSY, ITP

public - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń:

Języki i metody programowania Java INF302W Wykład 3 (część 2)

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Programowanie obiektowe

Kolekcje. object that groups multiple elements into a single unit

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Java: interfejsy i klasy wewnętrzne

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);

Platformy Programistyczne Podstawy języka Java

Prototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

Java SE Laboratorium nr 7. Temat: Kolekcje

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Wykład 04. Programowanie obiektowe. Maciej Wołoszyn 17 marca Spis treści

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Java Collections Framework

KOLEKCJE JAVY API: NAJPROSTSZE PODSTAWY

SZKOLENIE. Programowanie w języku Java. tel.: ; fax: ,

Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki

PROGRAMOWANIE DYNAMICZNE

Aplikacje internetowe i rozproszone - laboratorium

Programowanie sieciowe

Java SE Laboratorium nr 4. Temat: Obsługa wyjątków i zdarzeń

Throwable. Wyjatek_1(int x_) { x = x_; } int podaj_x()

Dokumentacja do API Javy.

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Wywoływanie metod zdalnych

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Wzorce prezentacji internetowych

Programowanie obiektowe i język Java

Programowanie obiektowe

Java niezbędnik programisty spotkanie nr 9. Java 2 Platform, Standard Edition 5.0

Podstawy obiektowości

Programowanie w Javie - wykład 13 Kolekcje c.d. ( mapy)

Klasy cd. Struktury Interfejsy Wyjątki

Aplikacja wielowątkowa prosty komunikator

Wyjątki Monika Wrzosek (IM UG) Programowanie obiektowe 180 / 196

Klasy i obiekty cz II

Systemy Rozproszone - Ćwiczenie 6

1. Język JAVA. 1. Pierwszy program. 2. Kalkulator. 3. Klasy. 4. Dziedziczenie

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Wykład dla studentów Informatyki Stosowanej UJ 2012/2013

Remote Method Invocation 17 listopada 2010

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Wprowadzanie danych z klawiatury. Wyjątki związane z wprowadzaniem danych, przekroczeniem rozmiaru tablicy, dzieleniem przez zero itd.

Podejście obiektowe do budowy systemów rozproszonych

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

jlabel: void setalignment(label.center/left/right) - wyrównanie String gettext() pobiera aktualny tekst napisu void settext(string text) ustawia

Programowanie w Javie- wykład 11 Kolekcje (listy)

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Zaawansowane aplikacje WWW - laboratorium

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Transkrypt:

WYJĄTKI, KOLEKCJE ZAGADNIENIA: 1. Wyjątki, 2. Kolekcje, vector, hashtable, properties, Klasy Arrays i Collections. http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 1

WYJĄTKI Błędy wykonania programu są sygnalizowane z wykorzystaniem obiektów (Throwable). Klasa Throwable posiada dwie klasy potomne: wyjątki (Exception), błędy (Error). Wśród wyjątków znajduje się jedna szczególna klasa: RuntimeException, określająca błędy pojawiające się w trakcie działania programu, których nie można było łatwo przewidzieć na etapie tworzenia oprogramowania np. NullPointerException lub IndexOutOfBoundsException. HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 2

WYJĄTKI Obsługa pozostałych wyjątków jest obowiązkowa, tzn. jeżeli korzystamy z metody mogącej zwrócić wyjątek musimy wykonać jedną z dwóch czynności: obsłużyć wyjątek za pomocą try...catch...(finally...), try{... catch(filenotfoundexception ex){ ex.printstacktrace();... finally{... zadeklarować, że nasza metoda może zwrócić ten wyjątek: public void amethod() throws FileNotFoundException{... HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 3

WYJĄTKI Obsługa wielu wyjątków: try{... catch(filenotfoundexception ex){... catch(nullpointerexception ex){... catch(ioexception ex){ finally{... Od Javy 7 możliwe łączenie obsługi: catch(filenotfoundexception NullPointerException ex){ HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 4

WYJĄTKI Kolejność obsługi: String s=null; try{ s.split(" "); // tutaj jest rzucany NullPointerException catch(nullpointerexception ex){ System.out.println("NullPointerException"); catch(exception ex){ System.out.println("Exception"); finally{ System.out.println("Finally"); Co wypisze ten fragment kodu? NullPointerException Finally HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 5

BŁĘDY Błędy informują o nieprawidłowym działaniu Wirtualnej Maszyny Javy (np. OutOfMemoryError). Aplikacja nie powinna próbować ich obsługiwać, gdyż zwykle nie są one wynikiem nieprawidłowego jej działania. HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 6

KOLEKCJE Najpopularniejszą kolekcją (zbiorem) danych jest tablica. Jednak w wielu zastosowaniach przydatne są inne struktury danych jak listy, zbiory, mapy, tablice haszujące itp. Standardowa biblioteka Javy zawiera implementacje najpopularniejszych kolekcji w pakiecie java.util. Ich podstawowa funkcjonalność jest zdefnowana w interfejsie java.util.collection. Dokumentacja: http://docs.oracle.com/javase/7/docs/api/java/util/collection.html HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 7

java.util.collection Przykładowe metody: boolean add(object o) void clear() boolean contains(object o) boolean isempty() Iterator iterator() boolean remove(object o) int size() Object[] toarray() HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 8

java.util.collection Przykładowe klasy rozszerzające: ArrayList HashSet LinkedList Stack Vector PriorityQueue Przykładowe interfejsy rozszerzające: List SortedSet Set Queue Deque... TreeSet... HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 9

PRZYKŁADOWE KOLEKCJE Vector w rzeczywistości to dynamiczna tablica, której rozmiar jest automatycznie dostosowywany do ilości danych. public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable Vector v = new Vector(); v.add("ala"); v.add(true); // dawniej v.add(new Boolean(true)); v.add(128.5); v.add("ola"); for(int i=0; i<v.size(); i++){ Object o = v.get(i); System.out.println(o.getClass().getCanonicalName() + "\t" + o); HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 10

VECTOR for(enumeration e = v.elements(); e.hasmoreelements(); ){ Object o = e.nextelement(); System.out.println(o.getClass().getCanonicalName() + "\t" + o); for(iterator it=v.iterator(); it.hasnext(); ){ Object o = it.next(); System.out.println(o.getClass().getCanonicalName() + "\t" + o); for(object o: v){ System.out.println(o.getClass().getCanonicalName() + "\t" + o); HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 11

VECTOR<E> v = new Vector(); v.add("ala"); v.add("ela"); v.add("ola"); String s = (String) v.get(0); zaleca się określenie typu elementów w wektorze Vector<String> v1=new Vector<String>();// od v.7 nie trzeba po prawej stronie pisac typu: new Vector<>()... String s = v1.get(0); // nie trzeba rzutować Vector może zawierać też elementy bardziej skomplikowane: Vector<Vector<String>> v1; HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 12

DYGRESJA: CLONEABLE Vector v1, v2; v1 = new Vector(); v2 = v1; // v2 i v1 referencje do tego samego obiektu v2 = (Vector) v1.clone(); // tworzona jest kopia obiektu, v1 i v2 wskazuja na rozne, blizniacze obiekty public interface Cloneable{ Implementacja interfejsu Cloneable informuje, że nasz obiekt wspiera klonowanie. Bazowa metoda clone jest zaimplementowana w klasie Object. protected Object clone() throws CloneNotSupportedException HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 13

DYGRESJA: CLONEABLE Implementacja kolonowania w klasie Vector: public synchronized Object clone() { try { Vector<E> v = (Vector<E>) super.clone(); v.elementdata = Arrays.copyOf(elementData, elementcount); v.modcount = 0; return v; catch (CloneNotSupportedException e) { // this shouldn't happen, since we are Cloneable throw new InternalError(); HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 14

HASHTABLE Tablica haszująca to kolekcja (mapa) zawierająca pary (klucz, wartość). Zarówno klucz jak i wartość mogą być dowolnymi obiektami. public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, Serializable { Hashtable<String,BufferedImage> ht=new Hashtable<String,BufferedImage>(); File dir = new File(System.getProperty("user.dir")); File[] files = dir.listfiles(); for(file f: files){ if (f.getname().endswith(".jpg")){ ht.put(f.getname(), ImageIO.read(f)); HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 15

HASHTABLE final BufferedImage bi = ht.get("logo.jpg"); JFrame frame = new JFrame(){ public void paint(graphics g){ super.paint(g); g.drawimage(bi, 0, 0, null); ; frame.setdefaultcloseoperation(jframe.exit_on_close); frame.setpreferredsize(new Dimension(bi.getWidth(), bi.getheight())); frame.pack(); frame.setvisible(true); ĆWICZENIE: zmodyfkować program tak, aby wczytane obrazki zmieniały się. HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 16

HASHTABLE Inne przydatne metody: public Set<K> keyset(); public synchronized Enumeration<K> keys(); public Collection<V> values(); public synchronized Enumeration<V> elements(); public Set<Map.Entry<K,V>> entryset(); public synchronized V remove(object key); HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 17

PROPERTIES Properties to rozszerzenie tablicy haszującej public class Properties extends Hashtable<Object,Object>; nastawione na przechowywanie par Stringów: public synchronized Object setproperty(string key, String value); public String getproperty(string key); ZASTOSOWANIA: Properties p; p = System.getProperties(); p.list(system.out); HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 18

PROPERTIES Implementacja metody list(): public void list(printstream out) { out.println("-- listing properties --"); Hashtable h = new Hashtable(); enumerate(h); for (Enumeration e = h.keys() ; e.hasmoreelements() ;) { String key = (String)e.nextElement(); String val = (String)h.get(key); if (val.length() > 40) { val = val.substring(0, 37) + "..."; out.println(key + "=" + val); DO ZASTANOWIENIA: dlaczego metoda najpierw przepisuje dane do nowej tablicy i dopiero z niej je wypisuje? HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 19

PROPERTIES Klasa Properties współpracuje z plikami tekstowymi zapisanymi w określonym formacie: public synchronized void load(inputstream instream) throws IOException public void store(outputstream out, String comments) throws IOException public synchronized void loadfromxml(inputstream in) throws IOException, InvalidPropertiesFormatException public synchronized void storetoxml(outputstream os, String comment) throws IOException HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 20

PROPERTIES # analizowany plik w formacie gif, png, jpg image=obrazek.png output=res.png # inne ustawienia moverscount=500 stepsize=1 ballradius=1 Properties p = new Properties(); p.load(new FileInputStream("ustawienia.txt")); p.storetoxml(new FileOutputStream("ustawienia.xml"), ""); <?xml version="1.0" encoding="utf-8" standalone="no"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment/> <entry key="stepsize">1</entry> <entry key="ballradius">1</entry> <entry key="output">res.png</entry> <entry key="moverscount">500</entry> <entry key="image">obrazek.png</entry> </properties> HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 21

DWIE UŻYTECZNE KLASY Podstawowe operacje na tablicach lub kolekcjach danych można wykonać za pomocą klas Arrays i Collections. np sortowanie. public static <T extends Comparable<? super T>> void sort(list<t> list); przy czym: public interface Comparable<T> { public int compareto(t o); HTTP://USERS.UJ.EDU.PL/~CIESLA/ JĘZYK JAVA, FAIS UJ 2012/2013 22

ĆWICZENIA Proszę porównać wydajność (czas wykonywania) operacji: add(), remove(), contains(), toarray(), dla wszystkich klas rozszerzających interfejs Collection ze strony 9. http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 23

DZIĘKUJĘ ZA UWAGĘ