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

Wielkość: px
Rozpocząć pokaz od strony:

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

Transkrypt

1 1 Programowanie w Javie- wykład 11 Kolekcje (listy) Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 Barteczko, JAVA Uniwersalne techniki programowania, PWN, C. S. Horstmann, G. Cornell, Java. Podstawy, Helion, Gliwice 2013

2 KOLEKCJE 2 Kolekcja jest obiektem, który grupuje elementy danych (inne obiekty) i pozwala traktować je jak jeden zestaw danych, umożliwiając jednocześnie wykonywanie operacji na zestawie danych np. dodawania i usuwania oraz przeglądania elementów zestawu. Uwaga: W niektórych językach programowania kolekcje są nazywane kontenerami. W Javie kontenery są specjalnymi kolekcjami, które grupują komponenty graficznego interfejsu użytkownika (GUI). Naturalną realizacją koncepcji kolekcji są tablice. W języku Java tablice nie są jednak wygodnym sposobem tworzenia kolekcji ponieważ: nie posiadają dedykowanych metod do obsługi kolekcji, rozmiar tablicy jest stały. Dlatego w Javie, w pakiecie java.util, zdefiniowano narzędzia, służące do tworzenia i posługiwania się różnymi rodzajami kolekcji.

3 3 Architektura kolekcji (Collections Framework) Abstrakcyjne właściwości struktur danych opisywane są przez interfejsy kolekcyjne, a konkretne realizacje - inaczej implementacje kolekcji - tych właściwości znajdujemy w konkretnych klasach. Zunifikowana architektura, służąca do reprezentacji kolekcji i operowania na nich, składa się z: interfejsów, implementacji, algorytmów. Architektura kolekcji w Javie to: Java Collections Framework (JCF). Mamy tam do dyspozycji wiele gotowych, efektywnych klas i metod, pozwalających łatwo rozwiązywać wiele problemów związanych z reprezentacją w programie bardziej zaawansowanych struktur danych i operowaniem na nich. Klasy JCF dostarczają środków do posługiwania się następującymi rodzajami kolekcji: listy i ich szczególne przypadki: stosy, kolejki, kolejki podwójne. zbiory i zbiory uporządkowane, mapy tablice asocjacyjne (słowniki).

4 JCF- hierarchia interfejsów 4

5 Podstawowe interfejsy JCF Collection - dowolna kolekcja nie będącą mapą List - zestaw elementów, z których każdy znajduje się na określonej pozycji; do listy można wielokrotnie dodać ten sam element i można sięgnąć po element na dowolnej pozycji. Queue - kolejka, czyli sekwencja elementów, do której dodawanie i sięganie po elementy odbywa się na pozycjach, określonych przez zadany porządek (najczęsciej FIFO - first in first out). Nie ma bezpośredniego dostępu do dowolnej pozycji. Deque - rozszerza Queue: kolejka podwójna, do której dodawanie i sięganie może odbywać się na obu końcach (np. dodaj na początku, dodaj na końcu, usuń z początku, usuń z końca). Set - zestaw niepowtarzających się elementów, pozycje elementów są nieokreślone. SortedSet - rozszerza Set: zbiór uporządkowany NavigableSet - rozszerza SortedSet: zbiór uporządkowany, dla którego możliwe są operacje uzyskiwania elementów "bliskich" danemu. Map mapa (tablica asocjacyjna, słownik) - zestaw par: klucz-wartość, przy czym odwzorowanie kluczy w wartości jest jednoznaczne SortedMap - mapa z uporządkowanymi kluczami (typu SortedSet) NavigableMap - mapa, w której klucze są typu NavigableSet 5

6 Wybrane podstawowe konkretne implementacje Implementowany interfejs Implementujące klasy Sposób realizacji właściwości określanych przez interfejs List ArrayList Dynamicznie rozszerzalna tablica (szybki bezpośredni dostęp po indeksach) List, Queue, Deque LinkedList Lista liniowa z podwójnymi dowiązaniami (szybkie wpisywanie i usuwanie elementów poza końcem listy; wolny dostęp bezpośredni; implementacja operacji na kolejkach) Queue, Deque ArrayDeque Kolejka podwójna (zrealizowana jako rozszerzalna tablica; szybki dostęp do obu końców, brak dostępu do dowolnej pozycji) Queue PriorityQueue Kolejka z priorytetami (kolejka, w której pierwszy i ostatni elment jest określany na podstawie ustalonego porządku (porównania elmentów wg kryteriów) ) Set HashSet Tablica haszująca (mieszania) (szybkie wpisywanie (add) i odnajdywanie elementów(contains); kolejność elementów nieokreślona) Set, SortedSet, NavigableSet TreeSet Drzewo czerwono-czarne, szybkie wstawianie, (uporządkowanie elementów; dostęp i wyszukiwanie wolniejsze niż w implementacji mieszającej) Set LinkedHashSet Tablica mieszania i lista liniowa (jak w implememntacji mieszającej, z zachowaniem porządku wpisywania elementów) 6

7 Ogólne operacje na kolekcjach- interfejs Collection Interfejs Collection definiuje wspólne właściwości i funkcjonalność wszystkich kolekcji (tzn. list, zbiorów i innych) poza mapami. Typ Collection jest zatem swoistym "najmniejszym wspólnym mianownikiem" wszystkich rodzajów kolekcji i używamy go (szczególnie przy przekazywaniu argumentów) wtedy, gdy potrzebna jest największa ogólność działań. Podstawowe operacje na kolekcjach: int size() - zwraca liczbę elementów zawartych w kolekcji boolean isempty() - sprawdza, czy kolekcja jest pusta boolean contains(object o) - sprawdza, czy kolekcja zawiera podany obiekt. boolean add(object o) - dodaje obiekt o do kolekcji. (Uwaga: operacja opcjonalna nie jest dozwolona dla kolekcji niemodyfikowalnych) boolean remove(object o) - usuwa obiekt o z kolekcji. (Uwaga: operacja opcjonalna nie jest dozwolona dla kolekcji niemodyfikowalnych) Kolekcja jest modyfikowalna, jeśli można dodawać do niej elementy, usuwać z niej elementy oraz zmieniać wartości elementów. Niemodyfikowalne kolekcje nie pozwalają na dodawanie, usuwanie i zmianę wartości elementów. 7

8 Ogólne operacje na kolekcjach 8 Operacje opcjonalne. Konkretne klasy kolekcyjne mogą dopuszczać lub nie wykonanie takich operacji. Np. klasa definiująca jakąś kolekcję niemodyfikowalną nie może pozwolić na wykonanie operacji dodawania i usuwania elementów. Ale ponieważ każda klasa kolekcyjna musi implementować interfejs Collection, to musi też zdefiniować metody add i remove. Przyjęto zasadę, że jeśli operacja opcjonalna dla danej implementacji nie jest dopuszczalna, to odpowiednia metoda zgłasza wyjątek UnsupportedOperationException: public boolean add(t o) { throw new UnsupportedOperationException(); } public boolean remove(t o) { throw new UnsupportedOperationException(); } Uwaga: ponieważ kolekcje są sparametryzowane, T oznacza parametr typu. Przy dodawaniu elementów do kolekcji mogą powstać i inne wyjątki, zależne od implementacji kolekcji. Implementacje, które nie dopuszczają dodawania elementów o pewnych właściwościach (np. elementów null) będą zgłaszać wyjątek IllegalArgumentException. Te zaś, które np. czasowo nie dopuszczają dodania elementu (np. w tym momecie jest przekroczony maksymalny limit wielkości kolekcji) zgłaszają wyjątek IllegalStateException.

9 Operacje grupowe na kolekcjach Operacje grupowe na kolekcjach polegają na wykonywaniu za jednym razem pewnych operacji na całych kolekcjach. Należą do nich metody: boolean addall(collection<? extends E> c) - dodanie do dowolnej kolekcji wszystkich elementów kolekcji przekazanej przez parametr c boolean removeall(collection<?> c) - usunięcie z kolekcji wszystkich elementów, które są zawarte w kolekcji przekazanej przez parametr c boolean retainall(collection<?> c)- pozostawienie w kolekcji tylko tych elementów, które są zawarte w kolekcji przekazanej przez parametr c void clear()- usunięcie wszystkich elementów kolekcji. Object [] toarray()- zwraca tablicę obiektów zawartych w kolekcji. Ponieważ niektóre z tych operacji mogą modyfikować kolekcje (a o tym czy naprawdę nastąpiła modyfikacja - świadczą wyniki zwracane przez metody - true albo false), to - oczywiście - są one operacjami opcjonalnymi. UWAGA! Operacje, które wymagają porównywania elementów np. contains(jakis_obiekt), containsall(collection}, removeall(..), retainall(...) używają do tego metody equals() zdefiniowanej w klasach obiektów. 9

10 Przekształcanie kolekcji w inne kolekcje 10 Niejako kontynuacją operacji grupowych jest możliwość przekształcenia kolekcji danego rodzaju w dowolną inną kolekcję dowolnego innego rodzaju. Np. listy w zbiór uporządkowany. We wszystkich konkretnych implementacjach kolekcji dostarczono konstruktorów, mających jako parametr dowolną inną kolekcję (czyli parametr typu Collection). Jeśli zatem mamy listę, a chcemy z niej zrobić zbiór uporządkowany (w konkretnej implementacji - np. drzewa zrównoważonego), to wystarczy użyć konstruktora odpowiedniej klasy (tu: TreeSet): List lista; //utworzenie listy w konkretnej implementacji //np.arraylist lub LinkedList Set tset = new TreeSet(lista); W ten sposób uzyskamy zbiór (a więc bez powtórzeń elementów), uporządkowany (w naturalnym porządku elementów), którego elementy będą pobrane z dostarczonej listy. Oczywiście, jeśli nie stosujemy typów surowych (jak wyżej), ale kolekcje sparametryzowane, kompilator zabroni nam dokonywania pewnych przekształceń (np. uzyskania listy napisów List<String> ze zbioru liczb Set<Integer>).

11 Iteratory Bardzo ważną metodą interfejsu Collection (tak naprawdę dziedziczoną z interfejsu Iterable) jest metoda iterator(), która zwraca iterator. Iterator jest obiektem klasy implementującej interfejs Iterator<T> i służy do przeglądania elementów kolekcji oraz ew. usuwania ich przy przeglądaniu Metody interfejsu Iterator<T>: T next() - zwraca kolejny element kolekcji lub sygnalizuje wyjątek NoSuchElementException, jeśli osiągnięto koniec kolekcji. T jest typem elementów kolekcji. void remove() - usuwa element kolekcji, zwrócony przez ostatnie odwołanie do next(). Operacja opcjonalna. boolean hasnext()- zwraca true, jeśli możliwe jest odwołanie do next() zwracające kolejny element kolekcji. Klasy iteratorów są definiowane w klasach kolekcyjnych jako klasy wewnętrzne, implementujące interfejs Iterator<T>. Implementacja metody iterator() z interfejsu Collection zwraca obiekt takiej klasy. Dzięki temu od każdej kolekcji możemy uzyskać iterator za pomocą odwołania: Iterator<T> iter = c.iterator(); gdzie: c - dowolna klasa implementująca interfejs Collection, T - typ elmentów kolekcji. 11

12 12 Iteratory Dla tych kolekcji, w których elementy nie zajmują ściśle określonych pozycji iteratory są jedynym sposobem na "przebieganie" po kolekcji. Dla kolekcji listowych iteratory są efektywniejszym narzędziem iterowania od pętli iteracyjnych pobierających elementy z pozycji wyznaczanych przez podane indeksy. O iteratorze należy myśleć jako o wskaźniku ustawianym nie na elemencie kolekcji, ale pomiędzy elementami. Na początku iterator ustawiony jest przed pierwszym elementem. Odwołanie next() jednocześnie przesuwa iterator za element i zwraca ten element. Metoda iteratora remove() najczęściej stosowana jest do usuwania z kolekcji elementów, które spełniają (nie spełniają) jakichś warunków. Szablon użycia remove() w trakcie iteracji: Iterator<T> iter = c.iterator(); // c - dowolna kolekcja //typu Collection, T - typ elementów kolekcji while (iter.hasnext()) { T element = iter.next(); if (warunek_usunięcia(element)) iter.remove(); } Metoda remove() może usunąć tylko element zwrócony przez next() i wobec tego może być zastosowana tylko raz dla każdego next(). W trakcie iteracji za pomocą iteratora nie wolno modyfikować kolekcji innymi sposobami niż użycie metody remove() na rzecz iteratora!

13 Listy (interfejs List) LISTA - zestaw elementów, z których każdy znajduje się na określonej pozycji w zestawie. Różne elementy listy mogą zawierać takie same dane. JDK posiada kilka implementacji interfejsu List, różniących się sposobem przechowywania elementów. W klasie ArrayList stosuje się tablicę, która jest dynamicznie zwiększana w momencie przekroczenia jej maksymalnego rozmiaru. Elementy listy są zapisywane jako elementy takiej tablicy. Ponieważ tablice w Javie mają określone (niezmienne po utworzeniu) rozmiary utworzenie listy tablicowej wymaga alokacji tablicy z jakimś zadanym rozmiarem. Jest on specyfikowany przez initialcapacity (domyślnie 10), który to parametr możemy podać w konstruktorze ArrayList. Przy dodawaniu elementów do listy sprawdzane jest czy pojemność tablicy jest wystarczająca, jeśli nie to rozmiar tablicy jest zwiększany. Służy temu metoda ensurecapacity(mincapacity), którą zresztą możemy wywołać sami, aby w trakcie działania programu zapewnić podaną jako mincapacity pojemność listy. 13

14 Listy 14 Klasa LinkedList jest klasyczną listą łączoną, w której każdy element posiada referencję do poprzedniego i następnego elementu listy. Zatem elementy listy, które z punktu widzenia programisty są elementami umieszczanych danych (np. nazwisk lub jakichś innych obiektów), technicznie są "linkami", zawierającymi nie tylko dane, ale również wskaźniki na następny i poprzedni element na liście. Początek listy dowiązaniowej, zwany głową lub wartownikiem zawiera wskazanie na pierwszy element listy (null, jeśli lista jest pusta). Klasa Vector jest przepisaną na nowo wersją znaną z JDK 1.0. Jest obecna w bibliotece Java Collections tylko ze względu na potrzebę wstecznej zgodności.

15 Listy porównanie klas Te dwie implementacje charakteryzują się różną wydajnością, ale można stosować je zamiennie: LinkedList powinniśmy wybierać wtedy, gdy na liście będą wykonywane częste operacje wstawiania i/lub usuwania elementów w środku listy (poza końcem listy). Istotnie na liście typu LinkedList takie operacje polegają na zmianie dwóch dowiązań (prowadzącego do poprzedniego i do następnego elementu) - są więc bardzo szybkie, zaś w implementacji tablicowej (ArrayList) wiążą się z przepisywaniem elementów tablicy, co (zwykle) zabiera więcej czasu. Operacje bezpośredniego dostępu do elementów listy są w implementacji tablicowej ArrayList natychmiastowe (polegają na indeksowaniu tablicy), natomiast w implementacji LinkedList są bardzo nieefektywne, gdyż technicznie wymagają przebiegania po elementach listy od samego jej początku lub od końca w kierunku początku (ten ostatni przypadek jest jedyną optymalizacją dostępu w klasie LinkedList, dokonywaną wtedy, gdy indeks znajduje się "w drugiej połowie" listy). Na listach LinkedList należy unikać operacji get(int index) i set(int index, Object value) Wyszukiwanie elementów na listach (czy to klasy ArrayList czy LinkedList) za pomocą ogólnych metod interfejsu Collection (contains(object)) oraz interfejsu List indexof(object)) nie jest efektywne. Powinniśmy albo zastosować inny rodzaj kolekcji (np. zbiory w implementacji tablic mieszania), albo posortować listę (metoda sort) i zastosować wyszukiwanie binarne (metoda binarysearch) (są to metody klasy Collections). 15

16 16 Operacje na listach wszystkie metody interfejsu Collection boolean add(int p, T elt) - dodaje element typu T na pozycji p. Zwraca true jeśli lista została zmodyfikowana. boolean addall(int p, Collection c)- dodaje wszystkie elementy kolekcji c do listy poczynając od pozycji p. Zwraca true jeśli lista została zmodyfikwoana. T get(int p)- zwraca element na pozycji p (T jest typem elementu) int indexof(t elt)- zwraca pozycję (indeks) pierwszego wystąpienia elementu elt int lastindexof(t elt)- zwraca indeks ostatniego wystąpienia elementu elt ListIterator<T> listiterator()- zwraca iterator listowy, ustawiony na początku listy (przed pierwszym elementem). ListIterator<T> listiterator(int p)- zwraca iterator listowy ustawiony przed elementem o indeksie p. boolean remove(int p)- usuwa element na pozycji p. Zwraca true jeśli lista została zmodyfikowana. T set(int p, T elt)- zastępuje element na pozycji p podanym elementem elt. Zwraca poprzednio znajdujący się na liście element. List<T> sublist(int f, int l) - zwraca podlistę zawierającą elementy listy od pozycji f włącznie do pozycji l (wyłącznie).

17 17 ListIterator Operacje na liście rozszerzają możliwości operowania na kolekcjach o operacje pozycyjne - takie, które uwzględniają pozycję elementów. Ze względu na znajomość pozycji elementów w kolekcji możliwe staje się iterowanie po kolekcji w obie strony: od początku i od końca. Można też ustawić iterator w taki sposób, by iteracje rozpoczynały się od podanej pozycji, a znając pozycję elementu zwracanego przez iterator można nie tylko go usunąć, ale zamienić lub dodać nowy element na pozycji wyznaczanej przez stan iteratora. Dlatego właśnie oprócz zwykłego (ogólnego dla wszystkich kolekcji) iteratora, listy udostępniają iteratory listowe, które są obiektami klas implementujących interfejs ListIterator. Ten ostatni jest rozszerzeniem interfejsu Iterator Metody iteratora listowego : boolean hasnext(), boolean hasprevious(), Object next(), Object previous(), int nextindex(), int previousindex(), void add(t o), void remove(), void set(t o)

18 ArrayList przykład-listy surowe Przykład: Rozważmy program, który tworzy listę firm, dodaje do niej dowolną liczbę elementów (nazw firm zapisanych w kolejnych wierszach pliku), po czym wyprowadza zawartość listy na konsolę. W programie możemy przedstawić ją jako tablicę, ale nie wiadomo jaki ma mieć rozmiar, dlatego skorzystamy z listy. import java.util.*; import java.io.*; class Intro1 { public static void main(string args[]) throws IOException { Scanner scan = new Scanner(new File("firms.txt")); // Utworzenie obiektu klasy ArrayList ArrayList list = new ArrayList(); while (scan.hasnextline()) { String firm = scan.nextline(); // dodanie kolejnego elementu do listy list.add(firm); } // wyprowadzenie zawartości listy for (int i = 0; i < list.size(); i++) System.out.println(list.get(i)); } } 18

19 Listy Iterator 19 Lepszym sposobem przeglądania elementów listy jest skorzystanie z iteratora. W naszym przykładzie listy firm użycie iteratora może wyglądać następująco: for (Iterator iter = list.iterator();iter.hasnext(); ) System.out.println(iter.next()); Najlepiej jednak jest używać rozszerzonego for (for-each): for (Typ id : kol) instr co oznacza, że w każdym kroku iteracji z kolekcji kol pobierany jest (za pomocą jej iteratora) następny element i podstawiany pod zmienną id, która może być następnie użyta w instrukcji instr. Typ natomiast zależy od tego czy używamy kolekcji sparametryzowanych typami czy też kolekcji surowych. Surowe kolekcje mogą zawierać referencje do dowolnych obiektów (ich elementy są formalnie typu Object). Metoda next() iteratorów takich kolekcji ma typ wyniku Object. W przedstawionym przykładzie listy mamy właśnie do czynienia z taką surową kolekcją. Zarówno iterator, jak i metoda get() zwracają wyniki typu Object.

20 Listy - bez parametryzacji 20 Powinniśmy więc napisać: for (Object elt : list) System.out.println(elt); Zauważmy, że przekazanie metodzie println argumentu typu Object powoduje wyprowadzenie napisu zwróconego przez metodę tostring() z klasy argumentu. Nie mieliśmy więc kłopotu z faktycznym typem (którym był String). Jednak gdyby w powyższym przykładzie chcieć wywołać na rzecz zmiennej elt np. metodę length() z klasy String, to kompilator zgłosiłby błąd (statyczna ścisła kontrola typów: istotnie w klasie Object - a takiego typu jest elt - nie ma metody length()!). Musielibyśmy więc dokonywać referencyjnej konwersji zawężającej : // Wypisuje długości napisów z kolekcji list for (Object elt : list) System.out.println( ((String) elt).length());

21 Listy sparametryzowane 21 Użycie kolekcji sparametryzowanych polega na podaniu typu jej elementów w nawiasach kątowych np. ArrayList<String> list = new ArrayList<>(); Do tak zdefiniowanej kolekcji, korzystając ze zmiennej list, nie będzie można dodać elementu innego typu niż String, a także wszelkie metody zwracające elementy tej kolekcji (m.in. get() oraz next() iteratora) będą miały typ wyniku String. W tym przypadku typ zmiennej w rozszerzonym for może być String i wobec tego możemy pisać tak: ArrayList<String> list = new ArrayList<>(); //... // Wypisuje długości napisów z kolekcji list for (String elt : list) System.out.println(elt.length());

22 Listy sparametryzowane 22 Uwaga. Z powodu słabości typów generycznych, dla sparametryzowanej kolekcji: List<String> list = new ArrayList<>(); dokonując przypisania List hackedlist = list; możemy do powyższej listy obiektów typu String dodawać obiekty również innych typów, np.: hackedlist.add(10); //Integer hackedlist.add(new Date()); //Date gdyż metoda add na hackedlist oczekuje parametru typu Object, a nie String (wynika to z wewnętrznej reprezentacji RAW typów generycznych). Wówczas użycie obiektu z takiej kolekcji zgodnie z jej typem, np. String s = list.get(0); skompiluje się, ale podczas uruchomienia wyrzuci wyjątek ClassCastException informując, że próbuje się rzutować Integer na String.

23 Listy sparametryzowane 23 Aby zabezpieczyć kolekcję przed dopisywaniem "nieuprawnionych" obiektów możemy wykorzystać specjalnie do tego celu stworzone klasy opakowujące, których instancje otrzymujemy poprzez uruchomienie wybranych metod klasy Collections. Np. dla listy: List<String> list = Collections.checkedList( new ArrayList<>(), String.class); Metoda checkedlist bierze dwa parametry opakowywaną listę oraz klasę elementów tej listy, a zwraca nowy obiekt listę opakowującą (view), która sprawdza każdy dopisywany do niej obiekt (czyli właściwie do wyjściowej listy) pod kątem jego typu. W klasie Collections są zdefiniowane również analogiczne metody dotyczące innych typów kolekcji.

24 ArrayList przykład poprawiony 24 import java.util.*; import java.io.*; class Intro1Param { public static void main(string args[]) throws IOException { Scanner scan = new Scanner(new File("firms.txt")); // Utworzenie obiektu klasy ArrayList ArrayList<String> list = new ArrayList<>(); while (scan.hasnextline()) { String firm = scan.nextline(); // dodanie kolejnego elementu do listy list.add(firm); } // wyprowadzenie zawartości listy for (String el : list) System.out.println(el); } }

25 Kolekcje przykład proste sortowanie Co zrobić, jeśli chcemy duplikaty zachować i posortować kolekcję? Zachowanie duplikatów zapewnia lista (np. ArrayList). Możemy wobec niej zastosowac gotowy algorytm sortowania zapisany w postaci statycznej metody klasy Collections (klasa ta zawiera metody realizujące rózne algorytmy działania na kolekcjach). import java.util.*; import java.io.*; class Intro4 { public static void main(string args[]) throws IOException { Scanner scan = new Scanner(new File("firms.txt")); ArrayList<String> list = new ArrayList<>(); while (scan.hasnextline()){ list.add(scan.nextline()); } Collections.sort(list); for (String firm : list) { System.out.println(firm); } } }//wyprowadzi firmy w rosnącym alfabetycznym porządku ich nazw 26

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

Aplikacje w Javie wykład 7 Kolekcje (listy, zbiory) Aplikacje w Javie wykład 7 1 Kolekcje (listy, zbiory) Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/

Bardziej szczegółowo

Kolekcje - pakiet Java Collections Framework

Kolekcje - pakiet Java Collections Framework Programowanie obiektowe Kolekcje - pakiet Java Collections Framework Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Definicja kolekcji

Bardziej szczegółowo

Programowanie w języku Java. Kolekcje

Programowanie w języku Java. Kolekcje Programowanie w języku Java Kolekcje Definicja Kolekcja to obiekt, który grupuje elementy danych (inne obiekty) i pozwala traktować je jak jeden zestaw danych, umożliwiając jednocześnie wykonywanie na

Bardziej szczegółowo

Kolekcje - pakiet Java Collections Framework

Kolekcje - pakiet Java Collections Framework Programowanie obiektowe Kolekcje - pakiet Java Collections Framework Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Programowanie obiektowe

Bardziej szczegółowo

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

Kolekcje mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Kolekcje mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Kolekcja obiekt, który grupuje inne obiekty, traktując je jako jeden zestaw danych i pozwalający na wykonywanie operacji

Bardziej szczegółowo

java.util.* :Kolekcje Tomasz Borzyszkowski

java.util.* :Kolekcje Tomasz Borzyszkowski java.util.* :Kolekcje Tomasz Borzyszkowski Wstęp Kolekcje w Java dają programiście pewien standardowy sposób radzenia sobie z przetwarzaniem grup obiektów. Implementacja kolekcji w Java składa się z następujących

Bardziej szczegółowo

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

Programowanie w środowisku graficznym- wykład 7 Kolekcje (listy, zbiory) 1 Programowanie w środowisku graficznym- wykład 7 Kolekcje (listy, zbiory) Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 Barteczko, JAVA

Bardziej szczegółowo

Kolekcje. Na podstawie:

Kolekcje. Na podstawie: Kolekcje Na podstawie: http://wazniak.mimuw.edu.pl Kolekcje w Javie Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór. Pozwala na zapis, odczyt, korzystanie z danych oraz

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 8: Tablice i kolekcje obiektów. 4/27/2013 S.Deniziak: Programowanie obiektowe - Java 1 Tablice class A { A [ ] a; A [ ] b=new A[5]; a b A [ ] c = {new A(), new A(), new A(),

Bardziej szczegółowo

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski Realizacja ekstensji klasy Paulina Strzelecka, Tomasz Roszkowski Przechowywanie obiektów (odwolañ do obiektów) w Javie typ wbudowany - tablica zbiór klas kontenerowych Paulina Strzelecka, Tomasz Roszkowski

Bardziej szczegółowo

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

Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór. Kolekcje Kolekcje w Javie Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór. Pozwala na zapis, odczyt, korzystanie z danych oraz ich wzajemną komunikację. Przykład: ręka

Bardziej szczegółowo

Programowanie Obiektowe (Java)

Programowanie Obiektowe (Java) 1. Wprowadzenie do kontenerów Wykład ósmy Kontenery s ą obiektami, które potrafi ą przechowywa ć inne obiekty w określony sposób. O kontenerach można myśle ć jako o gotowych do użycia strukturach danych.

Bardziej szczegółowo

Dawid Gierszewski Adam Hanasko

Dawid Gierszewski Adam Hanasko Dawid Gierszewski Adam Hanasko Chcemy stworzyć klasę w której możemy przechowywać dwie zmienne dowolnych typów Tworzymy tyle różnych klas ile potrzeba: Class ParaInt{ int pierwszy; Int drugi; Class ParaButow{

Bardziej szczegółowo

Java Collections Framework

Java Collections Framework Java Collections Framework Co to jest Java Collections Framework JCF Zunifikowana architektura do reprezentacji i manipulacji kolekcjami danych. Składa się z: Interfejsów Definuje abstrakcyjne typy możliwych

Bardziej szczegółowo

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

Java niezbędnik programisty spotkanie nr 8. Kolekcje c.d. Java niezbędnik programisty spotkanie nr 8 Kolekcje c.d. 1 Kontenery (rysunek pożyczony z Thinkin in Java ed. 3) Legenda: kreski-interfejsy kropki-kl. Abstr. 2 Przykład static Collection fill(collection

Bardziej szczegółowo

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

import java.util.*; public class ListExample { public static void main(string args[]) { List<String> lista1= new ArrayList<String> (); collection Zadanie.1 Napisać program, który: a) tworzy listę (implementacja tablicy ArrayList), dodając po jednym elemencie (korzystając z operacji podstawowej add). Następnie wypisuje całą listę, drugi

Bardziej szczegółowo

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

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016 Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa

Bardziej szczegółowo

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

Programowanie w Javie- wykład 12 Kolekcje (zbiory) 1 Programowanie w Javie- wykład 12 Kolekcje (zbiory) Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 Barteczko, JAVA Uniwersalne techniki

Bardziej szczegółowo

Podstawy otwartych języków programowania Przechowywanie danych

Podstawy otwartych języków programowania Przechowywanie danych Podstawy otwartych języków programowania Przechowywanie danych Wiktor Wandachowicz Sposoby przechowywania danych Typy podstawowe Pojedyncze obiekty Tablice obiektów i tablice typów podstawowych jednowymiarowe

Bardziej szczegółowo

Programowanie i projektowanie obiektowe

Programowanie i projektowanie obiektowe 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

Bardziej szczegółowo

Lista, Stos, Kolejka, Tablica Asocjacyjna

Lista, Stos, Kolejka, Tablica Asocjacyjna Lista, Stos, Kolejka, Tablica Asocjacyjna Listy Lista zbiór elementów tego samego typu może dynamicznie zmieniać rozmiar, pozwala na dostęp do poszczególnych elementów Typowo dwie implementacje: tablicowa,

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna

Kurs programowania. Wykład 9. Wojciech Macyna Wykład 9 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista czy

Bardziej szczegółowo

Platformy Programistyczne Podstawy języka Java

Platformy Programistyczne Podstawy języka Java Platformy Programistyczne Podstawy języka Java Agata Migalska 6 maja 2014 Plan wykładu 1 Sztuka wysławiania się w języku Java 2 Cały świat jest obiektem 3 Kolekcje 4 Zmienne i metody statyczne 5 Słowo

Bardziej szczegółowo

Tworzenie aplikacji w języku Java

Tworzenie aplikacji w języku Java Tworzenie aplikacji w języku Java Wykład 2 Java Collections Framework Piotr Czapiewski Wydział Informatyki ZUT 2 października 2009 Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku

Bardziej szczegółowo

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

Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego Łódź. Java podstawy języka, wykład 4 1 Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego 03.12.2010 Łódź Java podstawy języka, wykład 4 1 Stosując blokady (synchronizację) Można doprowadzić do zablokowania wszystkich wątków Zakleszczenie

Bardziej szczegółowo

Kolekcje w Javie cz. 1

Kolekcje w Javie cz. 1 Kolekcje w Javie cz. 1 Programowanie obiektowe Jacek Sroka na podstawie materiałów Janusza Jabłonowskiego 8 kwietnia 2013 Po co są kolekcje? Po co są kolekcje? A po co są programy? Żeby manipulować danymi.

Bardziej szczegółowo

KOLEKCJE JAVY API: NAJPROSTSZE PODSTAWY

KOLEKCJE JAVY API: NAJPROSTSZE PODSTAWY KOLEKCJE JAVY API: NAJPROSTSZE PODSTAWY I. TABLICE, CZYLI PODSTAWOWY RODZAJ KOLEKCJI: ARRAYS Wady i zalety 1. (Na rozgrzewkę) Zdefiniuj dwie klasy w programie (mogą być nawet puste na nasze potrzeby).

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

Język JAVA podstawy. Wykład 4, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 4, część 3 1 Język JAVA podstawy Plan wykładu: 1. Podstawy modelowania obiektowego 2. Konstruktory 3. Dziedziczenie, związki pomiędzy klasami, UML 4. Polimorfizm 5. Klasy abstrakcyjne

Bardziej szczegółowo

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

Wykład 4. Klasa List Kolejki Stosy Słowniki Wykład 4 Klasa List Kolejki Stosy Słowniki Klasa List Poważną niedogodnością tablic jako kolekcji danych jest fakt, że muszą one mieć stały rozmiar. Programista musi wiedzieć z góry ile miejsca powinien

Bardziej szczegółowo

Java SE Laboratorium nr 7. Temat: Kolekcje

Java SE Laboratorium nr 7. Temat: Kolekcje Java SE Laboratorium nr 7 Temat: Kolekcje 1 1. Definicja i idea Często w programach zachodzi potrzeba przechowywania w pamięci nieznanej z góry liczby elementów. Możliwość taką dostarczają tzw. kontenery

Bardziej szczegółowo

Algorytmy i Struktury Danych. Anna Paszyńska

Algorytmy i Struktury Danych. Anna Paszyńska Algorytmy i Struktury Danych Anna Paszyńska Tablica dynamiczna szablon Array Zbiory Zbiory template class Container {public: virtual ~Container() { }; virtual int Count() const = 0;

Bardziej szczegółowo

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

Bardziej szczegółowo

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

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

Bardziej szczegółowo

GUI - projektowanie interfejsów cz. II

GUI - projektowanie interfejsów cz. II Katedra Inżynierii Wiedzy, Uniwersytet Ekonomiczny w Katowicach Wykład 2 Java Foundations Classes przyciski; pola tekstowe; panele; okna dialogowe; biblioteka Swing. Metodyka (paradygmat) programowania

Bardziej szczegółowo

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

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................

Bardziej szczegółowo

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.) Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.) Kontenery - - wektor vector - - lista list - - kolejka queue - - stos stack Kontener asocjacyjny map 2016-01-08 Bazy danych-1 W5 1 Kontenery W programowaniu

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 8 - wprowadzenie do obsługi plików tekstowych i wyjątków mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 11 grudnia 2017 1 / 34 mgr inż. Krzysztof

Bardziej szczegółowo

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

Wykład 8: Obsługa Wyjątków Wykład 8: Obsługa Wyjątków Wyjątki Wyjątek to sytuacja nienormalna, która pojawia się w trakcie wykonania programu. W językach bez obsługi wyjątków, błędy są wykrywane i obsługiwane ręcznie, zwykle przez

Bardziej szczegółowo

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

Aplikacje w Javie- wykład 11 Wątki-podstawy 1 Aplikacje w Javie- wykład 11 Wątki-podstawy Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/ http://docs.oracle.com/javase/9/docs/

Bardziej szczegółowo

Klasy i obiekty cz II

Klasy i obiekty cz II Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy

Bardziej szczegółowo

Podstawy programowania. Podstawy C# Tablice

Podstawy programowania. Podstawy C# Tablice Podstawy programowania Podstawy C# Tablice Tablica to indeksowany zbiór elementów Tablica jest typem referencyjnym (deklaracja tworzy tylko referencję, sama tablica musi być utworzona oddzielnie, najprościej

Bardziej szczegółowo

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

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1 Ćwiczenie 1 Uruchamianie programu w Netbeans Uruchom środowisko Netbeans. Stwórz nowy projekt typu Java Application. Nadaj projektowi nazwę HelloWorld (Project Name), zwróć uwagę na folder, w którym zostanie

Bardziej szczegółowo

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

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie

Bardziej szczegółowo

Programowanie i struktury danych

Programowanie i struktury danych Programowanie i struktury danych 1 / 30 STL Standard Template Library, STL (ang. = Standardowa Biblioteka Wzorców) biblioteka C++ zawierająca szablony (wzorce), które umożliwiają wielokrotne użycie. Główne

Bardziej szczegółowo

TYPY GENERYCZNE (GENERICS)

TYPY GENERYCZNE (GENERICS) TYPY GENERYCZNE (GENERICS) ZAGADNIENIA: wprowadzenie, konwencje, metody, typy surowe parametry ograniczone podtypy, dziedziczenie, symbole wieloznaczne, ograniczenia. MATERIAŁY: http://docs.oracle.com/javase/tutorial/java/generics/

Bardziej szczegółowo

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

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h] 1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie

Bardziej szczegółowo

Kompletna dokumentacja kontenera C++ vector w - http://www.cplusplus.com/reference/stl/vector/

Kompletna dokumentacja kontenera C++ vector w - http://www.cplusplus.com/reference/stl/vector/ STL, czyli o co tyle hałasu W świecie programowania C++, hasło STL pojawia się nieustannie i zawsze jest o nim głośno... często początkujące osoby, które nie znają STL-a pytają się co to jest i czemu go

Bardziej szczegółowo

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych kolekcji. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

Wykład 3 Składnia języka C# (cz. 2)

Wykład 3 Składnia języka C# (cz. 2) Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest

Bardziej szczegółowo

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

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja 1 struktura, kolekcja Kiedy potrzebne Duża liczba danych takiego samego typu tablice a jak nieznana liczba elementów? dane zawierające wartości różnego typu (osoba: pesel, nazwisko, rok urodzenia, pracuje/niepracuje,

Bardziej szczegółowo

WSTĘP DO INFORMATYKI. Struktury liniowe

WSTĘP DO INFORMATYKI. Struktury liniowe Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WSTĘP DO INFORMATYKI Adrian Horzyk Struktury liniowe www.agh.edu.pl STRUKTURY LINIOWE SEKWENCJE Struktury

Bardziej szczegółowo

Języki i techniki programowania Ćwiczenia 2

Języki i techniki programowania Ćwiczenia 2 Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...

Bardziej szczegółowo

Kolekcje obiektów. Wyj tki.

Kolekcje obiektów. Wyj tki. 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»

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Metody getter https://www.python-course.eu/python3_object_oriented_programming.php 0_class http://interactivepython.org/runestone/static/pythonds/index.html https://www.cs.auckland.ac.nz/compsci105s1c/lectures/

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm, metody wirtualne i klasy abstrakcyjne Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,

Bardziej szczegółowo

PHP: bloki kodu, tablice, obiekty i formularze

PHP: bloki kodu, tablice, obiekty i formularze 1 PHP: bloki kodu, tablice, obiekty i formularze SYSTEMY SIECIOWE Michał Simiński 2 Bloki kodu Blok if-else Switch Pętle Funkcje Blok if-else 3 W PHP blok if i blok if-else wyglądają tak samo i funkcjonują

Bardziej szczegółowo

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

Java niezbędnik programisty spotkanie nr 9. Java 2 Platform, Standard Edition 5.0 Java niezbędnik programisty spotkanie nr 9 Java 2 Platform, Standard Edition 5.0 1 Historia 1991 rozpoczyna się the Green Project (to jeszcze era MS DOS) 1992 pojawia się język Oak 1995 zmiana nazwy z

Bardziej szczegółowo

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób. Zadanie: Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób. Na kolejnych zajęciach projekt będzie rozwijana i uzupełniana o kolejne elementy omawiane

Bardziej szczegółowo

Tablice i łańcuchy znakowe jako obiektowe typy danych. dr Jarosław Skaruz

Tablice i łańcuchy znakowe jako obiektowe typy danych. dr Jarosław Skaruz Tablice i łańcuchy znakowe jako obiektowe typy danych dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? Klasy String, StringBuffer, StringBuilder Tablice jednowymiarowe

Bardziej szczegółowo

Kontenery i iteratory. Wykorzystanie kontenerów w praktyce.

Kontenery i iteratory. Wykorzystanie kontenerów w praktyce. Instrukcja laboratoryjna nr 2 Programowanie w języku C 2 (C++ poziom zaawansowany) Kontenery i iteratory. Wykorzystanie kontenerów w praktyce. dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż.

Bardziej szczegółowo

Kolekcje. object that groups multiple elements into a single unit

Kolekcje. object that groups multiple elements into a single unit Kolekcje object that groups multiple elements into a single unit W wielu programach deklaracje typu: MyObject myreference; są uprawnione, jednak często zwłaszcza przy bardziej skomplikowanych programach

Bardziej szczegółowo

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

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

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

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu. Wstęp Java Zadanie Celem laboratorium jest zapoznanie się z podstawami platformy oraz języka Java. W ramach zadania należy przygotować aplikację zarządzania notatkami użytkownika obsługiwaną z konsoli.

Bardziej szczegółowo

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java: otwórz okienko Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU klasy wewnętrzne, lokalne i anonimowe biblioteka AWT zestaw Swing JFrame JPanel komponenty obsługa zdarzeń

Bardziej szczegółowo

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

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

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów

Bardziej szczegółowo

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

Języki i metody programowania Java INF302W Wykład 3 (część 2) Języki i metody programowania Java INF302W Wykład 3 (część 2) Autor Dr inż. Zofia Kruczkiewicz Autor, Zofia Kruczkiewicz Języki i metody programowania Java, wykład 3, część 2 1 STRUKTURA WYKŁADU 1. Systemowe

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

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

Języki i metody programowania Java INF302W Wykład 2 (część 1) Języki i metody programowania Java INF302W Wykład 2 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 1 Struktura wykładu 1. Identyfikacja

Bardziej szczegółowo

Podstawy obiektowości

Podstawy obiektowości Podstawy obiektowości Zad. Zamówienie 1. Napisać program do obsługi zamówień. Program powinien składać się z dwóch klas: Zamowienie oraz Pozycja, przy czym każde zamówienie zawierać może jedną lub więcej

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych zajęć

Bardziej szczegółowo

Typy sparametryzowane

Typy sparametryzowane Typy sparametryzowane Streszczenie Celem wykładu jest zaprezentowanie typów sparametryzowanych. Czas wykładu 90 minut. Istnieją algorytmy, których zasada działania nie zależy od typu danych wejściowych.

Bardziej szczegółowo

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 2, część 1 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa w klasie! 2 Język

Bardziej szczegółowo

Wybrane algorytmy tablicowe

Wybrane algorytmy tablicowe Wybrane algorytmy tablicowe Algorytmy i struktury danych Wykład 2. Rok akademicki: 2009/2010 Sortowanie przez wybieranie for (int i = 0; i < liczby.length - 1; i++) k = i; for (int j = i; j < liczby.length;

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 5 Marcin Młotkowski 23 marca 2017 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 50 Historia Początkowe założenia Projekt OAK Sterowanie urządzeniami

Bardziej szczegółowo

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

Programowanie w Javie - wykład 13 Kolekcje c.d. ( mapy) 1 Programowanie w Javie - wykład 13 Kolekcje c.d. ( mapy) Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/

Bardziej szczegółowo

Szablony funkcji i klas (templates)

Szablony funkcji i klas (templates) Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 6 - klasa BigDecimal i String oraz tablice mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 16 listopada 2018 1 / 27 mgr inż. Krzysztof Szwarc Podstawy

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Podstawowe struktury danych, cd. Wykład na podstawie ksiażki Roberta Sedgewicka i Kevina Wayne: Algorithms. Furth Edition. Princeton University dr hab. Bożena Woźna-Szcześniak

Bardziej szczegółowo

Interfejsy i klasy wewnętrzne

Interfejsy i klasy wewnętrzne Interfejsy i klasy wewnętrzne mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Interfejs klasy sposób komunikacji z jej obiektami (zestaw składowych publicznych). Określa on zestaw

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

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

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run(). Wątki Streszczenie Celem wykładu jest wprowadzenie do obsługi wątków w Javie. Czas wykładu 45 minut. Definiowanie wątków jako klas potomnych Thread Nadpisanie metody run(). class Watek extends Thread public

Bardziej szczegółowo

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class

Bardziej szczegółowo

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

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

Wykład 2: Podstawy Języka

Wykład 2: Podstawy Języka Wykład 2: Podstawy Języka 1.wprowadzenie 2.podstawy języka 3.sterowanie 4.inicjacja i sprzątanie 5.kontrola dostępu 6.dziedziczenie 7.polimorfizm 8.obsługa błędów 9.kolekcje obiektów 10.wejście i wyjście

Bardziej szczegółowo

Programowanie Komponentowe Zarządzanie obiektami: kontenery

Programowanie Komponentowe Zarządzanie obiektami: kontenery Programowanie Komponentowe Zarządzanie obiektami: kontenery dr inż. Ireneusz Szcześniak jesień 2016 roku Kontenery Kontener w C++ to generyczna struktura danych. Przechowuje elementy jednego dowolnego

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

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

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43 Programowanie w C++ Wykład 6 Katarzyna Grzelak 1 kwietnia 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

Bardziej szczegółowo

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

Java klasy kolekcji dr inż. Paweł Skrzyński, Java - kolekcje, 2010/2011 Java klasy kolekcji Agenda Wprowadzenie Podstawowe interfejsy w Java Collection Framework Implementacje Algorytmy Wskazówki implementacyjne Interoperabilność Pytania 2 Wprowadzenie Kolekcja: obiekt grupujący

Bardziej szczegółowo

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

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java Aplikacje Internetowe Podstawy języka Java Najprostsza aplikacja class Hello { public static void main(string[] args) { System.out.println("Hello World!"); Komponenty Javy JRE Java Runtime Environment

Bardziej szczegółowo

Wykład 4. Tablice. Pliki

Wykład 4. Tablice. Pliki Informatyka I Wykład 4. Tablice. Pliki Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Tablice Tablica uporządkowany zbiór elementów określonego typu Każdy element tablicy posiada

Bardziej szczegółowo

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

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Problem: Jak zaimplementować stos? Co się stanie gdy dodamy do stosu obiekt typu Czlowiek? Co się stanie, gdy spróbujemy ten obiekt odczytać

Bardziej szczegółowo