Kolekcje obiektów. Wyj tki.

Podobne dokumenty
Programowanie w języku Java. Kolekcje

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

Programowanie Obiektowe (Java)

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

Kurs programowania. Wykład 9. Wojciech Macyna

Dawid Gierszewski Adam Hanasko

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

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

Programowanie obiektowe

Kolekcje - pakiet Java Collections Framework

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

Kolekcje. Na podstawie:

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

java.util.* :Kolekcje Tomasz Borzyszkowski

Kolekcje - pakiet Java Collections Framework

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

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

Programowanie i projektowanie obiektowe

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

Podstawy otwartych języków programowania Przechowywanie danych

Java Collections Framework

KOLEKCJE JAVY API: NAJPROSTSZE PODSTAWY

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

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

Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego Łódź. Java podstawy języka, wykład 4 1

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

Comparable<Klasa_uzytkownika>

Kolekcje. object that groups multiple elements into a single unit

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

Platformy Programistyczne Podstawy języka Java

Interfejsy, klasy wewn trzne jako szczególny rodzaj obiektów

Kolekcje w języku Java

Typy uogólnione. Robert A. Kªopotek Wydziaª Matematyczno-Przyrodniczy. Szkoªa Nauk cisªych, UKSW

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

Dziedziczenie. dr Jarosław Skaruz

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

TYPY GENERYCZNE (GENERICS)

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

GUI - projektowanie interfejsów cz. II

Programowanie obiektowe

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Java SE Laboratorium nr 7. Temat: Kolekcje

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

Język C++ wykład VIII

Lista, Stos, Kolejka, Tablica Asocjacyjna

Programowanie obiektowe i język Java

Imi i nazwisko... Egzamin - Programowanie Obiektowe II rok informatyki, studia pierwszego stopnia, niestacjonarne Termin zerowy

Tworzenie aplikacji w języku Java

Programowanie obiektowe

Programowanie Obiektowe Ćwiczenie 4

Wyjątki (exceptions)

Technologie programowania Wykład 4. Szablony funkcji Notes. Szablony funkcji Notes. Szablony funkcji Notes. Notes. Przemek Błaśkiewicz.

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

Aplikacje w środowisku Java

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Programowanie obiektowe

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

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Wykład 4. Klasa List Kolejki Stosy Słowniki

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Kolekcje w Javie cz. 1

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

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

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

Programowanie obiektowe

Programowanie obiektowe

Programowanie obiektowe

Systemy Rozproszone - Ćwiczenie 6

Kompozycja i dziedziczenie klas

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

1. Klasa typu sealed. Przykład 1. sealed class Standard{ class NowyStandard:Standard{ // błd!!!

Programowanie i struktury danych

MAS dr. Inż. Mariusz Trzaska. Wykład 3. Wybrane konstrukcje obiektowych języków programowania (2)

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

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

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

Wykład 2: Podstawy Języka

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

1 Stos: Stack i Stack<T>

Obsługa wyjątków. Język C++ WW12

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

1. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)?

Programowanie w języku Java

Klasy generyczne. ZbiórLiczb. ZbiórCzegokolwiek. Zbiór

Wstęp do ruby dla programistów javy

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

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

Programowanie i struktury danych

Programowanie obiektowe

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Comparable<String>, CharSequence. Indicates whether some other object is "equal to" this one. int hashcode() Returns a hash code value for the object.

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Wywoływanie metod zdalnych

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

Programowanie 2. Język C++. Wykład 2.

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

Bazy danych, 4. wiczenia

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

Wykład 4: Klasy i Metody

Transkrypt:

Kolekcje obiektów. Wyj tki. Robert A. Kªopotek r.klopotek@uksw.edu.pl Wydziaª Matematyczno-Przyrodniczy. Szkoªa Nauk cisªych, UKSW 30.03.2017

Kolekcje obiektów Kolekcje obiektów (Java Collections) sªu» do przechowywania obiektów jednego typu Posiadaj ró»ne metody i mechanizmy takie jak szukanie, sortowanie, wstawianie, usuwanie i inne Java Collection dostarcza wielu interfejsów (Set, List, Queue, Deque, itp.) oraz wielu klas (ArrayList, Vector, LinkedList, PriorityQueue, HashSet, LinkedHashSet, TreeSet, itp.) Wbudowany pakiet java.util zawiera te wszystkie kolekcje obiektów 2 / 28

Metody interfejsu Collection (1/2) public boolean add(object element) public boolean addall(collection c) public boolean remove(object element) public boolean removeall(collection c) public boolean retainall(collection c) public int size() public void clear() public boolean contains(object element) public boolean containsall(collection c) 3 / 28

Metody interfejsu Collection (2/2) public Iterator iterator() public Object[] toarray() public boolean isempty() public boolean equals(object element) public int hashcode() Metody interfejsu Iterator public boolean hasnext() public Object next() public void remove() - usuwa element, na który wskazuje iterator, rzadko si go u»ywa 4 / 28

Hierarchia kolekcji 5 / 28

Collection Framework 6 / 28

Klasa Collections extends Object biblioteka do obsªugi ogólnej kolekcji zawiera tylko metody statyczne sªu» ce do dziaªa«na kolekcjach oraz tworzeniu nowych kolekcji algorytmy, które modykuj kolekcj, która nie jest do tego przystosowana MO E wyrzuci wyj tek UnsupportedOperationException, ale nie musi przykªad: metoda sort na niemodykowanej kolekcji 7 / 28

Klasa Collections - metody static <T> boolean addall(collection<? super T> c, T... elements) static <T> Queue<T> aslifoqueue(deque<t> deque) static <T> int binarysearch(list<? extends T> list, T key, Comparator<? super T< c) static <E> List<E> checkedlist(list<e> list, Class<E> type) static <E> Set<E> checkedset(set<e> s, Class<E> type) static <E> SortedSet<E>checkedSortedSet(SortedSet<E> s, Class<E> type) static void reverse(list<?> list) static <T> T max(collection<? extends T> coll, Comparator<? super T> comp) static <T extends Object & Comparable<? super TT min(collection<? extends T> coll) static boolean replaceall(list list, T oldval, T newval) 8 / 28

Implementacje List<E> List<E> - modeluje liniow struktur podobn do rozszerzalnej tablicy, mo»emy u»ywa indeksu aby dosta si do elementów, elementy mog by zduplikowane. 9 / 28

ArrayList vs LinkedList 1 ArrayList u»ywa tablic dynamicznych do przechowywania elementów 2 Operacje na ArrayList s wolne (zwªaszcza usuwanie) 3 ArrayList implementuje tylko interfejs List 4 ArrayList jest lepsze do sortowania i dost pu do danych 1 LinkedList u»ywa list dwukierunkowych do przechowywania elementów 2 Operacje na LinkedList s szybsze 3 LinkedList implementuje interfejsy List i Deque 4 LinkedList jest lepsze do manipulowania danymi 10 / 28

ArrayList vs Vector 1 ArrayList nie jest synchronizowany, wi c jest szybszy 2 ArrayList zwi ksza si o 50%, gdy braknie miejsca 3 ArrayList u»ywa interfejsu Iterator 1 Vector jest synchronizowany, wi c jest wolniejszy, zwªaszcza w ±rodowisku wielow tkowym 2 Vector zwi ksza si o 100%, gdy braknie miejsca 3 Vector u»ywa interfejsów Enumeration oraz Iterator 11 / 28

Implementacje Set<E> Set<E> - modeluje matematyczny zbór, elementy nie mog si powtarza. Istniej posortowane lub uporz dkowane struktury, np. TreeSet. 12 / 28

Implementacje Queue<E> Queue<E> - modeluje kolejk First-in-First-out (FIFO) oraz priorytetow. Interfejs Deque<E> modeluje kolejki, do których jest dost p z obu stron. 13 / 28

Implementacje Map<K,V> Map<K,V> - modeluje map par o dwóch typach K - Key i V - value. Klucze nie mog si powtarza. Interfejs SortedMap<K, V> modeluje mapy posortowane lub uporz dkowane po kluczu, np. TreeMap. 14 / 28

HashMap vs Hashtable 1 HashMap nie jest synchronizowany, wi c jest szybszy, ale mo»emy zsynchronizowa (Map m = Collections.synchronizedMap(hashMap);) 2 HashMap pozwala na jeden klucz NULL i wiele warto±ci NULL 3 Iterator HashMap jest "fail-fast" (ConcurrentModicationException) 1 Hashtable jest synchronizowany, wi c jest wolniejszy, zwªaszcza w ±rodowisku wielow tkowym 2 Hashtable nie pozwala na»adne warto±ci NULL ani w kluczu ani w warto±ciach 3 Iterator Hashtable jest "fail-safe" (kopia caªej struktury, nie ma aktualizacji zmian) 15 / 28

Comparable vs Comparator 1 Comparable jest przeznaczony do sortowania jednokryterialnego 2 Comparable oddziaªuje na aktualn klas 3 sortowanie z wykorzystaniem metody compareto() 4 w pakiecie java.lang 1 Comparator jest przeznaczony do sortowania wielokryterialnego 2 Comparator nie oddziaªuje na aktualn klas 3 sortowanie z wykorzystaniem metody compare() 4 w pakiecie java.util 16 / 28

Wyj tki w Javie System obsªugi wyj tków jest pot»nym mechanizmem do radzenia sobie z bª dami czasu wykonania (runtime) Wyj tek w Javie to zdarzenie, które zakªóca normalne wykonanie programu. Jest to obiekt, który jest wyrzucany w trakcie dziaªania programu (czyli mo»na rzutowa na Object). Obsªuga wyj tków mo»e pomóc w przywróceniu programu do normalnego dziaªania. Jako programi±ci powinni±my obsªu»y co do zasady wszystkie wyj tki instrukcja throw umo»liwia wyrzucenie wyj tku modykator metody throws umo»liwia podanie jaki wyj tek wyrzuca metoda (ten wyj tek nale»y potencjalnie obsªu»y, je±li wywoªujemy tego typu metod ) 17 / 28

Obsªuga wyj tków w C++ # include < iostream > using namespace std ; int main () { int x = -1; try { if ( x < 0 ){ throw x ; catch ( int x ) { cout << " Exception : " << x << endl ; getchar (); return 0; 18 / 28 # include < iostream > using namespace std ; int main () { int x = -1; char * ptr ; ptr = new char [256]; try { if ( x < 0 ){ throw x ; if ( ptr == NULL ){ throw " ptr is NULL " ; catch (...){ // catch all cout << " Exception! " << endl ; exit (0); return 0;

Obsªuga wyj tków w Javie class Test extends Exception { class Main { public static void main ( String args []) { try { throw new Test (); catch ( Test t ) { System. out. println ( " Got the Test Exception " ); finally { System. out. println ( " Inside finally block " ); 19 / 28

Sekwencja try-catch-nally 20 / 28

nal vs nally vs nalize nal - sªowo kluczowe, które nakªada ograniczenia na klasy, metody i zmienne. Klasy nala nie mog by dziedziczone, metody nal nie mog by modykowane, a warto± zmiennych nal nie mo»e by zmieniana po inicjalizacji. nally - blok kodu, który wykona si zawsze, niezale»nie czy obsªu»yli±my wyj tek czy nie nalize - metoda, która si wykona przed usuni ciem obiektu przez od±miecacz pami ci (GC) 21 / 28

Tworzenie wyj tku - przykªad public class I n s u f f i c i e n t B a l a n c e E x c e p t i o n extends Exception { private final double available ; private final double required ; public I n s u f f i c i e n t B a l a n c e E x c e p t i o n ( double available, double required ) { super ( " Available $ " + available + " but required $ " + required ); this. available = available ; this. required = required ; public double getavailable () { return available ; public double getrequired () { return required ; public double getdifference () { return required - available ; 22 / 28

Hierarchia wyj tków 23 / 28

Hierarchia Exception 24 / 28

Hierarchia Error 25 / 28

Typy wyj tków Checked Exception - klasy, które rozszerzaj Throwable oprócz RuntimeException i Error. Wyj tki te s sprawdzane w czasie kompilacji. Metody, które generuj Checked Exception musz je wyrzuca (modykator throws) Metody, które wywoªuj takie metody musz obsªu»y ich wyj tki lub wyrzuci je dalej (stos wywoªa«). Unchecked Exception - klasy, które rozszerzaj RuntimeException. Wyj tki te s sprawdzane w czasie wykonania programu. Error - s nieodwracalne, np. OutOfMemoryError, VirtualMachineError, AssertionError, itp. w ocjalnym tutorialu Java zasada jest taka,»e je±li program mo»e wróci do normalnego stanu to nale»y u»y wyj tek chceck, je±li nie 26 / mo»e 28 wróci do normalnego stanu dziaªania to nale»y rzuci wyj tek uchcecked.

Kiedy u»ywa jakiego typu wyj tku? Argumenty za Checked Exceptions kompilator zmusza nas do ªapania lub propagacji wyj tków checked, co sprawia,»e ci»ko nam je przeoczy wyj tki unchcecked mo»emy ªatwiej przeoczy, poniewa» kompilator nie zmusza nas do ich obsªugi kiedy metoda nie deklaruje jakie wyj tki unchcecked morze wyrzuci to trudniej nam je obsªu»y Argumenty za Unchecked Exceptions wyj tki checked, które s propagowane w gór poprzez stos wywoªa«zaciemniej nam prawdziwa przyczyn i ¹ródªo bª du wyj tki chcecked staj si cz ±ci sygnatury metody, jej interfejsu i pó¹niej trudniej dodawa i usuwa wyj tki z deklaracji metody w klasie czy interfejsie 27 / 28

28 / 28 Pytania?