Programowanie i projektowanie obiektowe

Podobne dokumenty
Java klasy kolekcji dr inż. Paweł Skrzyński, Java - kolekcje, 2010/2011

Programowanie obiektowe

Programowanie w języku Java. Kolekcje

Kolekcje. Na podstawie:

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

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

Kolekcje - pakiet Java Collections Framework

Programowanie Obiektowe (Java)

Kolekcje - pakiet Java Collections Framework

KOLEKCJE JAVY API: NAJPROSTSZE PODSTAWY

Języki i Techniki Programowania II. Wykład 4. Kolekcje

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

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

Dawid Gierszewski Adam Hanasko

import java.util.*; public class ListExample { public static void main(string args[]) { List<String> lista1= new ArrayList<String> ();

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

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

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

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

Kolekcje. object that groups multiple elements into a single unit

Kurs programowania. Wykład 9. Wojciech Macyna

Java Collections Framework

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

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

Kolekcje obiektów. Wyj tki.

Java SE Laboratorium nr 7. Temat: Kolekcje

Programowanie i projektowanie obiektowe

Podstawy otwartych języków programowania Przechowywanie danych

java.util.* :Kolekcje Tomasz Borzyszkowski

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

Comparable<Klasa_uzytkownika>

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

Tworzenie aplikacji w języku Java

Platformy Programistyczne Podstawy języka Java

Aplikacje w Javie wykład 7 Kolekcje (listy, zbiory)

Kolekcje w języku Java

TYPY GENERYCZNE (GENERICS)

Programowanie sieciowe

Programowanie obiektowe

API STREAM WYRAŻENIA LAMBDA

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

Programowanie i projektowanie obiektowe

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

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

Programowanie obiektowe

Programowanie obiektowe i język Java

Java: interfejsy i klasy wewnętrzne

Kolekcje w Javie cz. 1

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

Programowanie w Javie- wykład 12 Kolekcje (zbiory)

Aplikacje Internetowe

Lista, Stos, Kolejka, Tablica Asocjacyjna

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

Programowanie w języku Java. Bazy danych SQLite w Javie

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

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

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

Algorytmy i Struktury Danych. Anna Paszyńska

Algorytmy i Struktury Danych.

Programowanie w języku Java

Programowanie obiektowe

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

GUI - projektowanie interfejsów cz. II

Języki i Techniki Programowania II. Wykład 7. Współbieżność 1

Systemy Rozproszone - Ćwiczenie 6

Języki i metody programowania Java Lab4 podejście obiektowe, zastosowanie pojemników

Dokumentacja do API Javy.

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Metody Metody, parametry, zwracanie wartości

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

Programowanie obiektowe

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

Projektowanie Aplikacji Rozproszonych Jarosław Kuchta. Wzorce projektowe warstwy danych

Java. Programowanie Obiektowe Mateusz Cicheński

Programowanie w środowisku graficznym- wykład 7 Kolekcje (listy, zbiory)

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

Algorytmy i. Wykład 3: Stosy, kolejki i listy. Dr inż. Paweł Kasprowski. FIFO First In First Out (kolejka) LIFO Last In First Out (stos)

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

1. Co można powiedzieć o poniższym kodzie (zakładając, że znajduje się on w jednym pliku A.java)?

Programowanie zorientowane obiektowo. Mateusz Kołecki

Klasy abstrakcyjne, interfejsy i polimorfizm

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

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

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Klasy i obiekty cz II

Zaawansowane aplikacje WWW - laboratorium


Wykład 7: Pakiety i Interfejsy

Aplikacje w Javie- wykład 11 Wątki-podstawy

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

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

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

WSPÓŁBIEŻNOŚĆ. MATERIAŁY:

1. Co można powiedzieć o poniższym kodzie?

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

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

Architektura rozproszonych magazynów danych

Algorytmy z powrotami. Algorytm minimax

Transkrypt:

Programowanie i projektowanie obiektowe Kolekcje Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 1 / 24

Kolekcje Interfejsy Implementacje Algorytmy Marketspeak Mniejszy wysiłek programistyczny Wyższa jakość i wydajność programu Możliwość współpracy pomiędzy niezwiązanymi API Łatwiejsza nauka nowych API Łatwiej tworzyć nowe API Możliwość recyklingu istniejących programów P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 2 / 24

Kolekcje interfejsy Interfejsy generyczne np. List<E>. Set Nie zawiera powtórzeń List Uporządkowana, może zawierać powtórzenia Queue Kolejka, może być FIFO, ale nie musi. Map Zawiera parowania kluczy i wartości. Klucze nie mogą się powtarzać. P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 3 / 24

Collection public interface Collection<E> extends Iterable<E> { // Basic operations int size(); boolean isempty(); boolean contains(object element); boolean add(e element); //optional boolean remove(object element); //optional Iterator<E> iterator(); // Bulk operations boolean containsall(collection<?> c); boolean addall(collection<? extends E> c); //optional boolean removeall(collection<?> c); //optional boolean retainall(collection<?> c); //optional void clear(); //optional // Array operations Object[] toarray(); <T> T[] toarray(t[] a); P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 4 / 24

Obchodzenie kolekcji for-each for (Object o : collection) System.out.println(o); Iteratory public interface Iterator<E> { boolean hasnext(); E next(); void remove(); //optional Przykład static void filter(collection<?> c) { for (Iterator<?> it = c.iterator(); it.hasnext(); ) if (!cond(it.next())) it.remove(); Metoda remove() nie musi być zaimplementowana. P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 5 / 24

Set public interface Set<E> extends Collection<E> { // Basic operations int size(); boolean isempty(); boolean contains(object element); boolean add(e element); //optional boolean remove(object element); //optional Iterator<E> iterator(); // Bulk operations boolean containsall(collection<?> c); boolean addall(collection<? extends E> c); //optional boolean removeall(collection<?> c); //optional boolean retainall(collection<?> c); //optional void clear(); //optional // Array Operations Object[] toarray(); <T> T[] toarray(t[] a); P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 6 / 24

Set przykłady Usuwanie powtórzeń public static <E> Set<E> removedups(collection<e> c) { return new LinkedHashSet<E>(c); P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 7 / 24

Set przykłady Usuwanie powtórzeń public static <E> Set<E> removedups(collection<e> c) { return new LinkedHashSet<E>(c); Powtórzenia jeszcze raz public class FindDups { public static void main(string[] args) { Set<String> s = new HashSet<String>(); for (String a : args) if (!s.add(a)) System.out.println("Duplicate detected: " + a); System.out.println(s.size() + " distinct words: " + s); P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 7 / 24

Set przykłady c.d. containsall(collection<?> c) true jeżeli zbiór zawiera wszystkie elementy c addall(collection<?> c) dodaje wszystkie elementy z c retainall(collection<?> c) usuwa wszystkie elementy, które nie należą do c removeall(collection<?> c) usuwa wszystkie elementy, które nie należą do c P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 8 / 24

Set przykłady c.d. containsall(collection<?> c) true jeżeli zbiór zawiera wszystkie elementy c addall(collection<?> c) dodaje wszystkie elementy z c retainall(collection<?> c) usuwa wszystkie elementy, które nie należą do c removeall(collection<?> c) usuwa wszystkie elementy, które nie należą do c Set<Type> union = new HashSet<Type>(s1); union.addall(s2); Set<Type> intersection = new HashSet<Type>(s1); intersection.retainall(s2); Set<Type> difference = new HashSet<Type>(s1); difference.removeall(s2); P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 8 / 24

Set przykłady c.d. Powtórzenia po raz trzeci public class FindDups2 { public static void main(string[] args) { Set<String> uniques = new HashSet<String>(); Set<String> dups = new HashSet<String>(); for (String a : args) if (!uniques.add(a)) dups.add(a); // Destructive set-difference uniques.removeall(dups); System.out.println("Unique words: " + uniques); System.out.println("Duplicate words: " + dups); P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 9 / 24

List public interface List<E> extends Collection<E> { // Positional access E get(int index); E set(int index, E element); //optional boolean add(e element); //optional void add(int index, E element); //optional E remove(int index); //optional boolean addall(int index, Collection<? extends E> c); //optional // Search int indexof(object o); int lastindexof(object o); // Iteration ListIterator<E> listiterator(); ListIterator<E> listiterator(int index); // Range-view List<E> sublist(int from, int to); P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 10 / 24

List przykłady Usuwanie powtórzeń public static <E> void swap(list<e> a, int i, int j) { E tmp = a.get(i); a.set(i, a.get(j)); a.set(j, tmp); Podzakres sublist(int fromindex, int toindex) Podobnie do for (int i = fromindex; i < toindex; i++) {... P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 11 / 24

List przykłady c.d. ListIterator public interface ListIterator<E> extends Iterator<E> { boolean hasnext(); E next(); boolean hasprevious(); E previous(); int nextindex(); int previousindex(); void remove(); //optional void set(e e); //optional void add(e e); //optional P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 12 / 24

Queue public interface Queue<E> extends Collection<E> { E element(); boolean offer(e e); E peek(); E poll(); E remove(); Operacja Rzuca wyjątek Zwraca null lub false dodawanie add(e) offer(e) usuwanie remove(e) poll() sprawdzanie element(e) peek() P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 13 / 24

Queue przykłady Odliczanie import java.util.*; public class Countdown { public static void main(string[] args) throws InterruptedException { int time = Integer.parseInt(args[0]); Queue<Integer> queue = new LinkedList<Integer>(); for (int i = time; i >= 0; i--) queue.add(i); while (!queue.isempty()) { System.out.println(queue.remove()); Thread.sleep(1000); P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 14 / 24

Queue przykłady Sortowanie kolejki priorytetowe static <E> List<E> heapsort(collection<e> c) { Queue<E> queue = new PriorityQueue<E>(c); List<E> result = new ArrayList<E>(); while (!queue.isempty()) result.add(queue.remove()); return result; P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 15 / 24

Map public interface Map<K,V> { // Basic operations V put(k key, V value); V get(object key); V remove(object key); boolean containskey(object key); boolean containsvalue(object value); int size(); boolean isempty(); // Bulk operations void putall(map<? extends K,? extends V> m); void clear(); // Collection Views public Set<K> keyset(); public Collection<V> values(); public Set<Map.Entry<K,V>> entryset(); // Interface for entryset elements public interface Entry { K getkey(); V getvalue(); V setvalue(v value); P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 16 / 24

Map przykłady Odliczanie import java.util.*; public class Freq { public static void main(string[] args) { Map<String, Integer> m = new HashMap<String, Integer>(); // Initialize frequency table from command line for (String a : args) { Integer freq = m.get(a); m.put(a, (freq == null)? 1 : freq + 1); System.out.println(m.size() + " distinct words:"); System.out.println(m); P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 17 / 24

Map widoki keyset zbiór kluczy values zbiór wartości. entryset zbiór par klucz-wartość // Filter a map based on some property of its keys. for (Iterator<Type> it = m.keyset().iterator(); it.hasnext(); ) if (it.next().isbogus()) it.remove(); for (Map.Entry<KeyType, ValType> e : m.entryset()) System.out.println(e.getKey() + ": " + e.getvalue()); P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 18 / 24

Implementacje ogólnego stosowanie specjalne współbieżne owijające abstrakcyjne Implementacje ogólnego stosowania Interfejs Tablice haszujące Tablice Drzewa Łączone listy Mieszane Set HashSet TreeSet LinkedHashSet List ArrayList LinkedList Map HashMap TreeMap LinkedHashMap P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 19 / 24

Sortowanie public class Sort { public static void main(string[] args) { List<String> list = Arrays.asList(args); Collections.sort(list); System.out.println(list); Dowolny porządek mysort(list<integer> list) { Comparator<Integer> comp=new Comparator<Integer>() { public int compare(integer a, Integer b) { return a-b; Collections.sort(list, comp); P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 20 / 24

Inne sztuki na elementach shuffle reverse swap addall frequency disjoint min, max Wyszukiwanie binarne int pos = Collections.binarySearch(list, key); P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 21 / 24

Własne implementacje private static class MyArrayList<T> extends AbstractList<T> { private final T[] a; MyArrayList(T[] array) { a = array; public T get(int index) { return a[index]; public T set(int index, T element) { T oldvalue = a[index]; a[index] = element; return oldvalue; public int size() { return a.length; P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 22 / 24

Zadanie 1 Zastosowania kolekcji Zadanie Rozwiąż jeszcze raz zadania w poprzednich prac domowych stosując odpowiednie kolekcje. Wskazówka Chodzi o zadania: II.(6,7,8), III.1, V.1, IX.3 P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 23 / 24

Zadanie 2 Własna implementacja zbioru Zadanie Rozszerz klasę AbstractSet, aby implementowała interfejs Set dla elementów, które można porównywać (implementują interfejs Comparable). Użyj drzew wyszukiwania binarnego. P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 24 / 24