Objektno orijentirano programiranje

Size: px
Start display at page:

Download "Objektno orijentirano programiranje"

Transcription

1 Objektno orijentirano programiranje 9. Kolekcije Zaštićeno licencom

2 Creative Commons slobodno smijete: dijeliti umnožavati, distribuirati i javnosti priopćavati djelo remiksirati prerađivati djelo pod sljedećim uvjetima: imenovanje. Morate priznati i označiti autorstvo djela na način kako je specificirao autor ili davatelj licence (ali ne način koji bi sugerirao da Vi ili Vaše korištenje njegova djela imate njegovu izravnu podršku). nekomercijalno. Ovo djelo ne smijete koristiti u komercijalne svrhe. dijeli pod istim uvjetima. Ako ovo djelo izmijenite, preoblikujete ili stvarate koristeći ga, preradu možete distribuirati samo pod licencom koja je ista ili slična ovoj. U slučaju daljnjeg korištenja ili distribuiranja morate drugima jasno dati do znanja licencne uvjete ovog djela. Najbolji način da to učinite je linkom na ovu internetsku stranicu. Od svakog od gornjih uvjeta moguće je odstupiti, ako dobijete dopuštenje nositelja autorskog prava. Ništa u ovoj licenci ne narušava ili ograničava autorova moralna prava. Tekst licencije preuzet je s Objektno orijentirano programiranje, FER 2

3 Kolekcije Svi programi imaju zajedničko svojstvo obrađuju podatke Podaci su često grupirani kroz različite strukture podataka Za grupe podataka Java koristi pojam kolekcije (engl. collection) Kolekcija - objekt koji grupira više drugih elemenata (drugih objekata) spremnik, kontejner (engl. container) osim primitivnih tipova, sve ostalo u Javi su objekti (primjerci neke klase koja je direktno ili indirektno izvedena iz klase Object) Objektno orijentirano programiranje, FER 3

4 Uobičajena svojstva kolekcija Kolekcija uobičajeno omogućava: pohranu podataka dohvat podataka manipulaciju podataka (traženje elementa, brisanje, ) Kad ne bi postojale kolekcije u Javi, vlastitu bi mogli stvoriti nalik sljedećoj definiciji: interface Collection { //ili (abstract) class Collection void addelement( data ) { } boolean containselement( data ) { } data findelement( criterion ) { } void removeelement( criterion ) { } } Ovim pristupom moguće je ponuditi različite implementacije Objektno orijentirano programiranje, FER 4

5 Razne implementacije kolekcija Pretpostavimo da razvoj aplikacije radimo nad malim skupom podataka, pa elemente možemo držati u memoriji class MemoryCollection implements Collection { //ili extends } void addelement( data ) { } boolean containselement( data ) { } data findelement( criterion ) { } void removeelement( criterion ) { } Nakon razvoja programa, skup podataka je dovoljno porastao da nam više ne stane u memoriju Dovoljno je napisati novu implementaciju sučelja (ili naslijediti klasu) koja podatke čuva na disku sve metode bi trebale raditi s općenitom kolekcijom, a ne s konkretnom implementacijom class DiskCollection implements Collection { //ili extends } void addelement( data ) { } boolean containselement( data ) { } data findelement( criterion ) { } void removeelement( criterion ) { } Objektno orijentirano programiranje, FER 5

6 Kolekcija kao sučelje, a ne kao klasa Zašto definirati kolekciju preko sučelja? omogućava više različitih implementacija iste funkcionalnosti na sučelje treba gledati kao ugovor između korisnika kolekcije i konkretne implementacije obećanje što klasa radi, ne i kako će to napraviti omogućava laganu ponovnu implementaciju ukoliko se postojeća pokaže lošom Možemo li koristiti apstraktnu klasu umjesto sučelja? da, ali onda smo uklonili mogućnost da klasa koji predstavlja kolekciju naslijedi neki drugu klasu Treba se pitati postoji li zajednički kôd za sve takve kolekcije? Ovakav princip omogućava izradu generičkih algoritama, koji rade sa svim klasama koji implementiraju propisano sučelje Algoritam ovisi o sučelju, ne o konkretnoj implementaciji Objektno orijentirano programiranje, FER 6

7 Javin okvir kolekcija Javin okvir kolekcija (engl. Java Collection Framework) sastavljen je od: sučelja omogućavaju rad s kolekcijama neovisno o samoj implementaciji implementacija klase koje predstavljaju konkretne implementacije sučelja uz različite složenosti podržanih operacija algoritama općenite metode za sortiranje, pretraživanje, i sl., od kojih je dio izdvojen i u zasebnu klasu java.util.collections. Objektno orijentirano programiranje, FER 7

8 Prednosti uporabe Javinog okvira kolekcija Smanjivanje potrebne količine koda Povećanje brzine i kvalitete rada Ubrzano učenje Olakšan razvoj novih API-ja Promovira višestruku iskoristivost koda Objektno orijentirano programiranje, FER 8

9 Možemo li bolje od onoga što postoji? ili zašto nemojte pisati svoje kolekcije ako imate gotove postojeće implementacije su već optimizirane na svim razinama npr. ovo je isječak iz izvornog koda dvostruko povezane liste public E get(int index) { checkelementindex(index); return node(index).item; } Node<E> node(int index) { if (index < (size >> 1)) { Node<E> x = first; for (int i = 0; i < index; i++) x = x.next; return x; } else { Node<E> x = last; for (int i = size - 1; i > index; i--) x = x.prev; return x; } } Objektno orijentirano programiranje, FER 9

10 Pregled vrsta kolekcija Kolekcije su u Javi podijeljene na sljedeći način: Sučelje Collection modelira najopćenitiju kolekciju Objektno orijentirano programiranje, FER 10

11 Iteratori u Javinom okviru kolekcija Jedna od najvažnijih operacija nad kolekcijama: obilazak svih elemenata iteriranje Sučelje Collection nasljeđuje sučelja Iterable. U pseudokodu to izgleda ovako: Iterator it = collection.iterator() while(it.hasnext()) radi nešto s it.next() odnosno u verziji for-each for(item : collection) radi nešto s item Objektno orijentirano programiranje, FER 11

12 Sučelje Collection (1) Modelira općenitu kolekciju elemenata kolekcije mogu (ali ne moraju) podržavati duplikate kolekcije mogu (ali ne moraju) imati poredak elemenata Specifične vrste kolekcija modelirane su drugim sučeljima izvedenim iz sučelja Collection Neporedane kolekcije koje mogu sadržavati duplikate trebale bi direktno implementirati sučelje Collection JDK ne nudi takve implementacije Objektno orijentirano programiranje, FER 12

13 Sučelje Collection (2) Konkretne implementacije sučelja Collection trebale bi nuditi barem dva konstruktora konstruktor bez argumenata (za stvaranje praznih kolekcija) konstruktor koji prima referencu da drugu kolekciju(za stvaranje kopija kolekcija) ovo je zahtjev koji sučelje ne može specificirati U popisu metoda neke metode su navedene kao opcionalne konkretna implementacija mora imati tu metodu (jer nije u pitanju default metoda), ali ne mora podržavati takvu akciju obično su metode koje modificiraju kolekciju označene kao opcionalne ako operacija nije podržana tada metoda u konkretnoj implementaciji treba baciti iznimku UnsupportedOperationException Objektno orijentirano programiranje, FER 13

14 Sučelje Collection (3) Konkretne implementacije sučelja Collection mogu dolaziti s različitim dodatnim ograničenjima, npr. nisu podržani null-elementi elementi moraju biti nekog određenog tipa Takve kolekcije mogu, u prisustvu neprikladnih elemenata bacati neprovjeravane iznimke poput NullPointerException ili ClassCastException Općenito, ako nije eksplicitno definirano, implementacije kolekcija nisu višedretveno sigurne Objektno orijentirano programiranje, FER 14

15 Popis metoda sučelja Collection public interface Collection<E> extends Iterable<E> { int size(); boolean isempty(); boolean contains(object element); boolean add(e element); //optional boolean remove(object element); //optional Iterator<E> iterator(); boolean containsall(collection<?> c); boolean addall(collection<? extends E> c); //optional boolean removeall(collection<?> c); //optional boolean retainall(collection<?> c); //optional void clear(); //optional Object[] toarray(); Operacije s poljima <T> T[] toarray(t[] a); Osnovne operacije default boolean removeif(predicate<? super E> filter) {...} default Spliterator<E> spliterator(){...} default Stream<E> stream() {...} default Stream<E> parallelstream() { } Proširenja u Javi 8 Masovne operacije Objektno orijentirano programiranje, FER 15

16 Sučelje Set Skup (engl. Set) je kolekcija koja ne može sadržavati duplikate Sadrži sve metode koje propisuje sučelje Collection uz gore navedeni uvjet Modelirano je sučeljem Set public interface Set<E> extends Collection<E> u kojem nema niti jedne nove metode razlika je samo u ugovoru pojedinih metoda (javadoc nad metodama) Objektno orijentirano programiranje, FER 16

17 Implementacije sučelja Set Javin okvir kolekcija dolazi s tri implementacije sučelja Set: HashSet najbrža, većina osnovnih operacija je O(1) ne garantira poredak kod obilaska elemenata ispod je tablica raspršenog adresiranja TreeSet sporije, većina osnovnih operacija je O(log N) elemente obilazi sortiranim poretkom ispod je vrsta binarnog stabla LinkedHashSet malo sporije od HashSet elemente obilazi poretkom kojim su ubačeni kombinacija ulančane liste (za poredak) i tablice raspršenog adresiranja Objektno orijentirano programiranje, FER 17

18 Koju implementaciju sučelja Set odabrati? Ovisi što naš algoritam dominantno radi: Malo zapisivanja, puno čitanja? Efikasno iteriranje? Važan redosljed elemenata pri iteriranju? Odabrati implementaciju koja nudi zadovoljavajuću funkcionalnost i performanse Objektno orijentirano programiranje, FER 18

19 Složenosti operacija sučelja Set u različitim implementacijama Kakva je složenost pojedine metode ovisno o implementaciji? Implementacija HashSet: contains(object e)? remove(object e)? add(e e)? Implementacija TreeSet: contains(object e)? remove(object e)? add(e e)? Objektno orijentirano programiranje, FER 19

20 Primjer rada različitih implementacija skupa (1) Napisati program koji će iz komandne linije primiti niz argumenata te će na zaslon ispisati argumente ali bez ponavljanja duplikata ilustrirati razliku u ponašanju svih triju implementacija tipičan primjer uporabe skupova package hr.fer.oop.sets;... public class NoDuplicatesProgram {... public static void main(string[] args) { System.out.println("Using HashSet:"); hr.fer.oop.sets.noduplicateprogram writecollection(addtoset(new HashSet<String>(), args)); System.out.println("Using TreeSet:"); writecollection(addtoset(new TreeSet<String>(), args)); } System.out.println("Using LinkedHashSet:"); writecollection(addtoset(new LinkedHashSet<String>(), args)); Objektno orijentirano programiranje, FER 20

21 Primjer rada različitih implementacija skupa (2) Metoda addtoset prima referencu na skup i vraća referencu na isti skup povratna vrijednost se odmah može koristiti kao argument (sjetimo se strcat/strcpy iz C-a) Metoda writecollection ispisuje bilo koju kolekciju (nije nužno morao biti skup) štoviše, dovoljno je da parametar Iterable<String> public class NoDuplicatesProgram {... private static Set<String> addtoset( Set<String> set, String[] elements) { } for (String element : elements) return set; set.add(element); private static void writecollection(iterable<string> col) { } for (String element : col) System.out.println(element); System.out.println(); hr.fer.oop.sets.noduplicateprogram Objektno orijentirano programiranje, FER 21

22 Primjer rada različitih implementacija skupa (3) Pokrene li se program sa sljedećim argumentima ovo prvo je jako vazno a i ovo drugo isto dobit će se sljedeći ispis: hr.fer.oop.sets.noduplicateprogram Objektno orijentirano programiranje, FER 22

23 Koju implementaciju odabrati u sljedećem primjeru? (1) Napisati program koji prima imena dviju datoteka preko naredbenog retka svaki redak datoteke sadrži jedno ime program treba ispisati sva imena koja se nalaze u prvoj datoteci, a nisu u drugoj datoteci datoteke su relativno male pitanja koja mogu imati utjecaj na odabir implementacije: Je li važno kojim se redosljedom ispisuju imena? Koje operacije koristimo? Predložite algoritam rješenja Objektno orijentirano programiranje, FER 23

24 Koju implementaciju odabrati u sljedećem primjeru? (2) Napisati program koji prima proizvoljan broj imena datoteka preko naredbenog retka svaki redak datoteke sadrži jedno ime program treba ispisati sva a) imena koja se pojavljuju u bilo kojoj od datoteka b) imena koja se pojavljuju u svim datotekama c) imena koja se pojavljuju samo u jednoj datoteci (ali ne i u ostalima) datoteke i njihov broj je relativno malen pitanja koja mogu imati utjecaj na odabir implementacije: Koje operacije koristimo? U kojem poretku želimo ispisati imena? Predložite algoritam rješenja Objektno orijentirano programiranje, FER 24

25 Sučelje List Lista ili slijed (engl. list, sequence) je uređena kolekcija koja može sadržavati duplikate Karakteristike ove kolekcije su: elementi imaju svoju poziciju unutar liste numeracija pozicija ide od 0 može se dohvatiti element na zadanoj poziciji može se umetnuti element na zadanu poziciju može se obrisati element na zadanoj poziciji Ovakva kolekcija u Javi je modelirana je sučeljem List Objektno orijentirano programiranje, FER 25

26 Sučelje List Sučelje List nasljeđuje sučelje Collection te propisuje dodatne metode public interface List<E> extends Collection<E> { E get(int index); E set(int index, E element); boolean add(e element); //optional //optional void add(int index, E element); //optional E remove(int index); //optional boolean addall(int index, Collection<? extends E> c); //optional int indexof(object o); int lastindexof(object o); ListIterator<E> listiterator(); Pretraga ListIterator<E> listiterator(int index); List<E> sublist(int from, int to); Pristup na osnovu pozicije Iteriranje Podskup iz raspona od-do neke pozicije Objektno orijentirano programiranje, FER 26

27 Ugrađene implementacije sučelja List Java nudi dvije implementacije sučelja List: ArrayList lista koja za pohranu elemenata koristi dinamičko polje polje se povećava po potrebi LinkedList lista koja elemente pohranjuje dinamički alocirajući nove čvorove za dvostruko povezanu listu Objektno orijentirano programiranje, FER 27

28 Prodiskutirajte složenosti sljedećih operacija ArrayList get(i)? Dodavanje na početak? Dodavanje na kraj? contains(element)? LinkedList get(i)? Dodavanje na početak? Dodavanje na kraj? contains(element)? Objektno orijentirano programiranje, FER 28

29 Primjeri stvaranja liste Listu možemo stvoriti pozivom statičke metode aslist u klasi Arrays koja prima varijabilni broj argumenata Listu možemo stvoriti i pozivom nekog od konstruktora konkretne implementacije package hr.fer.oop.lists; public class Example1 { hr.fer.oop.lists.example1 public static void main(string[] args) { List<String> list = Arrays.asList("Ivo", "Ana", "Jasna"); List<String> list1 = new ArrayList<>(list); write(list1); List<String> list2 = new LinkedList<>(list); write(list2); } Objektno orijentirano programiranje, FER 29

30 Ispis elemenata liste običnom for petljom Koja je razlika (općenito) između sljedeće dvije metode? Postoji li razlika u složenosti? private static void write(list<string> list) { for(int i = 0, n = list.size(); i<n; i++) { System.out.println(list.get(i)); } } hr.fer.oop.lists.example1 private static void write(list<string> list) { for(int i = 0; i<list.size(); i++) { System.out.println(list.get(i)); } } Objektno orijentirano programiranje, FER 30

31 Ispis elemenata liste for-each verzijom petlje Koja je razlika (općenito) između sljedeće dvije metode? razmotrite različite moguće načine implementacije sučelja List). Postoji li razlika u složenosti? private static void write(list<string> list) { for(int i = 0, n = list.size(); i<n; i++) { System.out.println(list.get(i)); } } hr.fer.oop.lists.example1 private static void write(list<string> list) { for(string s : list) { System.out.println(s); } } Objektno orijentirano programiranje, FER 31

32 Primjer 2 Napisati funkciju koja će primiti polje stringova i ispisati sve elemente obrnutim poretkom, uz izbacivanje duplikata, i to: a) samo koristeći primljeno polje (bez dodatnih podatkovnih struktura) za rješenje pogledati: hr.fer.oop.lists.example2a b) koristeći listu i skup uputa: elemente dodati u listu ako već nisu u listi, upotrijebiti skup radi brže provjere da li je element već u listi c) Koristeći prikladnu implementaciju skupa te listu samo na kraju uputa: imamo implementaciju seta koja čuva poredak! Objektno orijentirano programiranje, FER 32

33 Rješenje primjera 2 b) Polje se obilazi u obrnutom redoslijedu, a element se dodaje u konačnu listu samo ako već nije u listi umjesto provjere po listi (što je sporije), koristi se skup koji sadrži sva iskorištena imena ako element nije bio u skupu metoda add ga dodaje i vraća true, inače vraća false, a skup ostaje nepromijenjen (praktičnije u odnosu na provjeru s contains + add) private static void writeinreverse(string[] names) { } List<String> list = new ArrayList<>(); Set<String> set = new HashSet<>(); for (int i = names.length - 1; i >= 0; i--) { } // Try add. If OK, first occurence => add to list. if (set.add(names[i])) list.add(names[i]); for (String name : list) System.out.println(name); hr.fer.oop.lists.example2b Objektno orijentirano programiranje, FER 33

34 Rješenje primjera 2 c) Slično kao i u prethodnom rješenju koristi se skup za evidentiranje pronađenih imena Za razliku od prethodnog rješenja nema potrebe za posebnom listom, jer LinkedHashSet element obilazi redoslijedom kojim su uneseni. private static void writeinreverse(string[] names) { } Set<String> set = new LinkedHashSet<>(); for (int i = names.length - 1; i >= 0; i--) { } set.add(names[i]); for(string name : set) System.out.println(name); hr.fer.oop.lists.example2c Objektno orijentirano programiranje, FER 34

35 Primjer 3 Napisati program koji s tipkovnice čita niz decimalnih brojeva (jedan broj po retku) quit prekida unos Program ispisuje samo one brojeve koji su barem za 20% veći od prosjeka svih brojeva Ispis brojeva je od manjih prema većima Ideja rješenja: brojeve pohraniti u listu i izračunati prosjek veće ili jednake od limita pohraniti u novu listu ili (ako ne treba sačuvati originalnu listu) iz liste izbaciti sve manje od limita sortirati listu prije ispisa hr.fer.oop.lists.example3 Možemo li koristiti TreeSet umjesto liste koju naknadno sortiramo? Objektno orijentirano programiranje, FER 35

36 Uklanjanje elemenata iz liste i sortiranje Od Jave 8 sučelje List ima default metodu koja uklanja elemente iz liste koji zadovoljavaju određeni predikat. u primjeru koristimo lambda izraz za predikat (više o lambda izrazima u jednim od sljedećih predavanja) Sortiranje vršimo statičkom metodom sort u klasi Collections private static void writeinreverse(string[] names) { } List<Double> numbers = new ArrayList<>();... double avg = calcaverage(numbers); double limit = avg*1.2; //remove all lower than limit numbers.removeif(num -> num < limit); Collections.sort(numbers);... hr.fer.oop.lists.example3 Objektno orijentirano programiranje, FER 36

37 Klasa Collections U paketu java.util. Sadrži niz općenitih metoda za potporu radu s kolekcijama Sve metode su statičke nije predviđeno stvaranje primjerka ove klase Od značajnijih metoda izdvajamo: Metode za dobivanje nepromjenjivih praznih kolekcija (emptylist(), emptyset(), emptymap(),...) Metode za sortiranje lista: sort Metode za slučajno permutiranje elemenata liste (shuffle) Read-only omotači kolekcija (unmodifiablelist, unmodifiableset, ) Sinkronizirajući omotači (synchronizedlist, synchronizedset, ) Obrtanje elemenata liste (reverse),... Objektno orijentirano programiranje, FER 37

38 Primjer 4 (naglasak: oblikovanje) Potrebno je proširiti prethodni program tako da brojeve može primati iz jednog od mnoštva izvora, poput: S tipkovnice (dok se ne unese quit) Iz tekstovne datoteke (dok se ne dođe do kraja datoteke) Preko mreže (nekim komunikacijskim protokolom) Kako biste oblikovali dijelove ovakvog programa, a da izbjegnete dupliciranje koda (primjerice, da svaka implementacija ima kôd koji gradi listu)? Izračun ne bi smio ovisiti o detaljima dohvata brojeva! Objektno orijentirano programiranje, FER 38

39 Primjer 4 (nastavak) Definiramo sučelje za izvor brojeva s 2 metode provjera ima li još brojeva na ulazu dohvat sljedećeg broja s ulaza U programu upotrijebimo jednu od implementacija za dohvat brojeva Ostatak koda kao u primjeru 3. hr.fer.oop.lists.example4.* List<Double> numbers = new ArrayList<>(); NumberSource source = new KeyboardNumberSource(); while(source.hasmorenumbers()) numbers.add(source.getnumber()); //calculate average, remove lower than limit, sort... Objektno orijentirano programiranje, FER 39

40 Modificiranje kolekcije tijekom iteriranja Što napraviti ako tijekom iteriranja korisnik izvana (direktno kroz API kolekcije) modificira kolekciju Primjerice, imamo ulančanu listu od 100 elemenata; kad iterator dođe do trećeg elementa, korisnik izvana obriše prvih 10 elemenata: Od kuda iterator nastavlja? Kako iterator uopće može znati da je nešto obrisano? Da bi se riješio taj problem, iteratori osnovnih kolekcija u Javinom okviru kolekcija implementirani su kao fail-fast iteratori: Kolekcija interno vodi brojač modifikacija koji se svakom modifikacijom ažurira Implementacije iteratora su tipično unutarnje klase koje u trenutku stvaranja pamte trenutnu vrijednost brojača i pri svakom pozivu neke od svojih metoda zapamćenu vrijednost uspoređuju s trenutnom u kolekciji Ako su vrijednosti različite dolazi do pojave iznimke tipa ConcurrentModificationException Jedini način mijenjanja tijekom iteriranja je kroz metode iteratora (postoji samo remove()) Objektno orijentirano programiranje, FER 40

41 Mapa (preslikavanje) Mapa ili preslikavanje (engl. Map) je kolekcija uređenih parova (ključ, vrijednost) Karakteristike ove kolekcije su: mapa ne može pohranjivati više istih ključeva svaki ključ ima pridruženu jednu vrijednost ista vrijednost može biti može biti pridružena više ključeva Ovakva kolekcija modelirana je sučeljem Map U raznim jezicima još je poznata kao rječnik (Dictionary u C#-u) ili kao asocijativno polje (JavaScript, PHP). Objektno orijentirano programiranje, FER 41

42 Primjeri preslikavanja Primjeri preslikavanja: Osoba Telefonski broj Prostorija Skup studenata Matični broj studenta Prosjek ocjena Grupa studenata Skup predavača Šifra kolegija Termin međuispita Uređen par modeliran je sučeljem Map.Entry<K,V> Sučelje unutar sučelja Map ključevi i vrijednosti mogu biti bilo kojeg tipa (osim primitivnih tipova) Jednom dodani ključ je nepromjenjiv može se samo mijenjati pridružena vrijednost interface Entry<K,V> { K getkey(); V getvalue(); V setvalue(v value); Objektno orijentirano programiranje, FER 42 }

43 Pregled metoda sučelja Map public interface Map<K,V> { int size(); boolean isempty(); boolean containskey(object key); boolean containsvalue(object value); V get(object key); V put(k key, V value); //optional V remove(object key); //optional upiti (engl. query operations) metode za izmjene mape void putall(map<? extends K,? extends V> m); //opt. void clear(); //optional Set<K> keyset(); Collection<V> values(); Set<Map.Entry<K, V>> entryset(); Različiti pogledi na mapu boolean equals(object o); int hashcode(); Usporedba i raspršeno adresiranje Objektno orijentirano programiranje, FER 43

44 Sučelje Map: pregled default metoda default V getordefault(object key, V defaultvalue) default void foreach(biconsumer<? super K,? super V> action) default void replaceall(bifunction<? super K,? super V,? extends V> function) default V putifabsent(k key, V value) default boolean remove(object key, Object value) default boolean replace(k key, V oldvalue, V newvalue) default V replace(k key, V value) default V computeifabsent(k key, Function<? super K,? extends V> mappingfunction) default V computeifpresent(k key, BiFunction<? super K,? super V,? extends V> remappingfunction) default V compute(k key, BiFunction<? super K,? super V,? extends V> remappingfunction) default V merge(k key, V value, BiFunction<? super V,? super V,? extends V> remappingfunction) Objektno orijentirano programiranje, FER 44

45 Ugrađene implementacije sučelja Map HashMap poduprta tablicom raspršenog adresiranja većina operacija O(1); iterator nespecificiranog poretka TreeMap poduprta balansiranim binarnim stablom većina operacija O(log(N)); iterator sortiranim poretkom LinkedHashMap kombinacija tablice raspršenog adresiranja i ulančane liste većina operacija O(1); iterator redosljedom umetanja Objektno orijentirano programiranje, FER 45

46 Primjer upotrebe sučelja Map Map<String,Integer> studenttograde = new HashMap<String,Integer>(); studenttograde.put("ana", 5); studenttograde.put("ivo", 4); studenttograde.put("ivana", 5); System.out.format("Ivana ima ocjenu %d %n ", studenttograde.get("ivana")); Objektno orijentirano programiranje, FER 46

47 Primjer 5 Napisati program koji će s tipkovnice čitati niz imena. Program završava ako se za ime unese quit. Program prije završetka mora na zaslon ispisati sva upisana imena i uz svako ime koliko je puta upisano. a) Poredak imena pri ispisu nije bitan b) Ispis imena treba ići abecedno c) Ispis imena treba ići redoslijedom unosa Objektno orijentirano programiranje, FER 47

48 Rješenje primjera 5 Ovo je tipičan primjer u kojem trebamo preslikavanje Za svako ime pamtimo koliko je puta uneseno Prilikom prve pojave nekog imena, metoda get vraća null. Svaki sljedeći put vraća Integer koji označava koliko je puta ime dosad bilo uneseno Metodom put ažuriramo staru vrijednost pridruženu ključu ili dodajemo novi par (ključ, vrijednost) Scanner scanner = new Scanner(System.in); Map<String, Integer> names = new HashMap<>(); System.out.println("Enter names (quit for end):"); String name; while(!(name = scanner.next()).equals("quit") ) { } Integer val = names.get(name); names.put(name, val == null? 1 : val + 1); hr.fer.oop.maps.example5 Objektno orijentirano programiranje, FER 48

49 Ispis sadržaja mape Sučelje Map nema iterator nije nastao iz sučelja Collection Korisnicima nudi poglede kroz tri dodatne kolekcije KeySet: skup ključeva za koje postoji preslikavanje Values: kolekcija vrijednosti koje su pridružene ključevima u mapi razmislite zašto ovo nije skup? Entries: skup uređenih parova (ključ, vrijednost) Ovi pogledi su živi, što znači da izmjena u mapi mijenja i njih, odnosno izmjena u njima mijenja i mapu for(map.entry<string, Integer> entry : names.entryset()) System.out.format("%s occured %d time(s)%n", entry.getkey(), entry.getvalue()); hr.fer.oop. maps.example5 Objektno orijentirano programiranje, FER 49

50 Razlike u rješenjima 5a, 5b i 5c a) Map<String, Integer> names = new HashMap<>(); b) Map<String, Integer> names = new TreeMap<>(); Iteriranje po parovima vrši se sortirano po ključu c) Map<String, Integer> names = new LinkedHashMap<>(); Iteriranje po parovima odvija se onim redoslijedom kojim su parovi dodavani u mapu Objektno orijentirano programiranje, FER 50

51 Ostala osnovna sučelja (1) Od osnovnih sučelja, spomenimo još neka (bez detaljne obrade) Objektno orijentirano programiranje, FER 51

52 Ostala osnovna sučelja (2) Kako bi se pospješila ponovna iskoristivost kôda, stablo nasljeđivanja nije baš kao na prethodnom slajdu već je malo složenije (prikazan je samo dio) Objektno orijentirano programiranje, FER 52

53 Ostale kolekcije Pogled na sučelja vs. implementacije: + PriorityQueue koji također implementira Queue kroz gomilu (heap) Objektno orijentirano programiranje, FER 53

VRIJEDNOSTI ATRIBUTA

VRIJEDNOSTI ATRIBUTA VRIJEDNOSTI ATRIBUTA Svaki atribut (bilo da je primarni ključ, vanjski ključ ili običan atribut) može i ne mora imati ograničenja na svojim vrijednostima. Neka od ograničenja nad atributima: Null / Not

More information

Programiranje III razred

Programiranje III razred Tehnička škola 9. maj Bačka Palanka Programiranje III razred Naredbe ciklusa for petlja Naredbe ciklusa Veoma često se ukazuje potreba za ponavljanjem nekih naredbi više puta tj. za ponavljanjem nekog

More information

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi DELEGATI Bezbedni pokazivači na funkcije Jer garantuju vrednost deklarisanog tipa. Prevodilac prijavljuje grešku ako pokušate da povežete

More information

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets CSS CSS CSS: Cascading Style Sheets - Opisuje izgled (appearance) i raspored (layout) stranice - Sastoji se od CSS pravila, koji defini[u skup stilova selector { property: value; 1 Font face: font-family

More information

Objektno orijentirano programiranje

Objektno orijentirano programiranje Objektno orijentirano programiranje 5. Apstraktne klase i sučelja Zaštićeno licencom http://creativecommons.org/licenses/by-ncsa/3.0/hr/ Creative Commons slobodno smijete: dijeliti umnožavati, distribuirati

More information

CONTAİNERS COLLECTİONS

CONTAİNERS COLLECTİONS CONTAİNERS Some programs create too many objects and deal with them. In such a program, it is not feasible to declare a separate variable to hold reference to each of these objects. The proper way of keeping

More information

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133 Binarne hrpe Potpuno binarno stablo binarno stablo u kojem svaki čvor koji nije list ima točno 2 nasljednika. Binarna hrpa potpuno binarno stablo u kojem svaki čvor koji nije list ima veću ključnu vrijednost

More information

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Nasledjivanje klasa Modifikator new class A { public virtual void F() { Console.WriteLine("I am A"); } } class B : A { public override void F()

More information

Collections (Collection Framework) Sang Shin Java Technology Architect Sun Microsystems, Inc.

Collections (Collection Framework) Sang Shin Java Technology Architect Sun Microsystems, Inc. Collections (Collection Framework) Sang Shin Java Technology Architect Sun Microsystems, Inc. sang.shin@sun.com www.javapassion.com 2 Disclaimer & Acknowledgments Even though Sang Shin is a full-time employee

More information

Class 32: The Java Collections Framework

Class 32: The Java Collections Framework Introduction to Computation and Problem Solving Class 32: The Java Collections Framework Prof. Steven R. Lerman and Dr. V. Judson Harward Goals To introduce you to the data structure classes that come

More information

PROGRAMIRANJE. Amir Hajdar

PROGRAMIRANJE. Amir Hajdar PROGRAMIRANJE Amir Hajdar Teme 2 Klase i objekti u Javi Primjer kroz klasu Krug Atributi i metode Inicijalizacija objekata (konstruktori) Polymorphism Statičke varijable i metode This Klase i objekti u

More information

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt Funkcionalno programiranje Interoperabilnost jezika Scala i Java Prevođenje u Java bajt kod Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući

More information

PREDMET. Osnove Java Programiranja. Čas JAVADOC

PREDMET. Osnove Java Programiranja. Čas JAVADOC PREDMET Osnove Java Programiranja JAVADOC Copyright 2010 UNIVERZITET METROPOLITAN, Beograd. Sva prava zadržana. Bez prethodne pismene dozvole od strane Univerziteta METROPOLITAN zabranjena je reprodukcija,

More information

JavaScript i HTML DOM

JavaScript i HTML DOM 4. vježbe iz WEB programiranja četvrtak, 22. ožujka 2012. JavaScript 1. dio JavaScript i Što je DOM? Kako JS koristi DOM? Pristup elementima dokumenta Promjena i učitavanje vrijednosti tagova Primjer 1.

More information

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET Katedra za elektroniku Računarska elektronika Grupa br. 11 Projekat br. 8 Studenti: Stefan Vukašinović 466/2013 Jelena Urošević 99/2013 Tekst projekta :

More information

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0. Kontrolne naredbe Primjeri: Opšti oblik razgranate strukture (if sa ) if (uslov) Naredba 1 ili blok naredbi1 Naredba 2 ili blok naredbi2 Učitati broj x i štampati vrijednost double x, z; Scanner in=new

More information

PARALELNO PROGRAMIRANJE

PARALELNO PROGRAMIRANJE Predavanje 09 Odjel za matematiku 1 PARALELNO PROGRAMIRANJE POSIX threadovi za C++ Predavanje 09 Odjel za matematiku 2 Programske niti (thread) unutar procesa Danas ćemo se upoznati s POSIX thread bibliotekom

More information

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list. Ime i prezime: Asistent: Predava : Programiranje (C) 1. kolokvij 14. 4. 2003. 1. 2. 3. 4. 5. 6. 7. Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj

More information

Collections class Comparable and Comparator. Slides by Mark Hancock (adapted from notes by Craig Schock)

Collections class Comparable and Comparator. Slides by Mark Hancock (adapted from notes by Craig Schock) Lecture 15 Summary Collections Framework Iterable, Collections List, Set Map Collections class Comparable and Comparator 1 By the end of this lecture, you will be able to use different types of Collections

More information

Lecture 15 Summary. Collections Framework. Collections class Comparable and Comparator. Iterable, Collections List, Set Map

Lecture 15 Summary. Collections Framework. Collections class Comparable and Comparator. Iterable, Collections List, Set Map Lecture 15 Summary Collections Framework Iterable, Collections List, Set Map Collections class Comparable and Comparator 1 By the end of this lecture, you will be able to use different types of Collections

More information

Generics Collection Framework

Generics Collection Framework Generics Collection Framework Sisoft Technologies Pvt Ltd SRC E7, Shipra Riviera Bazar, Gyan Khand-3, Indirapuram, Ghaziabad Website: www.sisoft.in Email:info@sisoft.in Phone: +91-9999-283-283 Generics

More information

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010 Programiranje Programski jezik C prof.dr.sc. Ivo Ipšić 2009/2010 Sadržaj Ulazno-izlazne funkcije Datoteke Formatirane datoteke Funkcije za rad s datotekama Primjeri Datoteke komunikacija između programa

More information

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end. NAREDBA CIKLUSA SA PREDUSLOVOM WHILE 1.Odrediti vrednosti s i p nakon izvrsenja sledecih naredbi za dato a=43, a=34, a=105 program p1; var a,s,p:integer; write('unesite a:');readln(a); p:=a; s:=0; while

More information

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1 NIZOVI Niz deklarišemo navođenjemtipa elemenata za kojim sledi par srednjih zagrada[] i naziv niza. Ako je niz višedimenzionalni između zagrada[] se navode zarezi, čiji je broj za jedan manji od dimenzija

More information

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak...

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak... Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak... Prof. dr. sc. Tomislav Pribanić Izv. prof. dr. sc. Vedran Podobnik Doc. dr. sc. Marija Seder Sveučilište u Zagrebu Fakultet elektrotehnike

More information

Zaštićeno licencom

Zaštićeno licencom Uvod u JavaScript Stjepan Ćavar Ožujak 2013. Zaštićeno licencom http://creativecommons.org/licenses/by-nc-sa/3.0/hr/ Creative Commons slobodno smijete: dijeliti umnožavati, distribuirati i javnosti priopćavati

More information

CS Ananda Gunawardena

CS Ananda Gunawardena CS 15-121 Ananda Gunawardena A collection (sometimes called a container) is simply an object that groups multiple elements into a single unit. Collections are used to store, retrieve and manipulate data,

More information

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb,

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb, Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb, 13.04.2017. Podešavanje Hyper-V Servera 2016 za RSAT upravljanje Dario Štefek Lokacije za preuzimanje: Microsoft Hyper-V Server 2016 https://www.microsoft.com/en-us/evalcenter/evaluate-hyper-v-server-2016

More information

Vežbe - XII nedelja PHP Doc

Vežbe - XII nedelja PHP Doc Vežbe - XII nedelja PHP Doc Dražen Drašković, asistent Elektrotehnički fakultet Univerziteta u Beogradu Verzija alata JavaDoc za programski jezik PHP Standard za komentarisanje PHP koda Omogućava generisanje

More information

9/16/2010 CS Ananda Gunawardena

9/16/2010 CS Ananda Gunawardena CS 15-121 Ananda Gunawardena A collection (sometimes called a container) is simply an object that groups multiple elements into a single unit. Collections are used to store, retrieve and manipulate data,

More information

Lecture 15 Summary 3/11/2009. By the end of this lecture, you will be able to use different types of Collections and Maps in your Java code.

Lecture 15 Summary 3/11/2009. By the end of this lecture, you will be able to use different types of Collections and Maps in your Java code. Lecture 15 Summary Collections Framework Iterable, Collections, Set Map Collections class Comparable and Comparator By the end of this lecture, you will be able to use different types of Collections and

More information

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa Uvod u programiranje - vežbe Kontrola toka izvršavanja programa Naredbe za kontrolu toka if, if-else, switch uslovni operator (?:) for, while, do-while break, continue, return if if (uslov) naredba; if

More information

Uputstvo za korišćenje logrotate funkcije

Uputstvo za korišćenje logrotate funkcije Copyright AMRES Sadržaj Uvod 3 Podešavanja logrotate konfiguracionog fajla 4 Strana 2 od 5 Uvod Ukoliko je aktivirano logovanje za RADIUS proces, može se desiti da posle određenog vremena server bude preopterećen

More information

Sets and Maps. Part of the Collections Framework

Sets and Maps. Part of the Collections Framework Sets and Maps Part of the Collections Framework The Set interface A Set is unordered and has no duplicates Operations are exactly those for Collection int size( ); boolean isempty( ); boolean contains(object

More information

Collections and Maps

Collections and Maps Software and Programming I Collections and Maps Roman Kontchakov / Carsten Fuhs Birkbeck, University of London Outline Array Lists Enhanced for Loop ArrayList and LinkedList Collection Interface Sets and

More information

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365 Windows 8 Licenciranje, razlike u verzijama Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje Serverski proizvodi Server 2012, System centar 2012, SQL 2012, Sharepoint

More information

CSC 1214: Object-Oriented Programming

CSC 1214: Object-Oriented Programming CSC 1214: Object-Oriented Programming J. Kizito Makerere University e-mail: jkizito@cis.mak.ac.ug www: http://serval.ug/~jona materials: http://serval.ug/~jona/materials/csc1214 e-learning environment:

More information

Topic #9: Collections. Readings and References. Collections. Collection Interface. Java Collections CSE142 A-1

Topic #9: Collections. Readings and References. Collections. Collection Interface. Java Collections CSE142 A-1 Topic #9: Collections CSE 413, Autumn 2004 Programming Languages http://www.cs.washington.edu/education/courses/413/04au/ If S is a subtype of T, what is S permitted to do with the methods of T? Typing

More information

Java collections framework

Java collections framework Java collections framework Commonly reusable collection data structures Java Collections Framework (JCF) Collection an object that represents a group of objects Collection Framework A unified architecture

More information

Programske paradigme Funkcionalna paradigma

Programske paradigme Funkcionalna paradigma Programske paradigme Funkcionalna paradigma 1. čas: Uvod u funkcionalno programiranje. Programski jezik Haskel. Upoznavanje sa razvojnim okruženjem. Tipovi podataka. Funkcionalno programiranje Stil u programiranju

More information

Generics and collections

Generics and collections Generics From JDK 1.5.0 They are similar to C++ templates They allow to eliminate runtime exceptions related to improper casting (ClassCastException) Traditional approach public class Box { private Object

More information

VB komande. Programiranje 1

VB komande. Programiranje 1 VB komande Programiranje 1 Zadatak 1: Sastaviti program koji se sastoji iz jedne ListBox kontrole, jedne Textbox kontrole i dva komandna dugmeta. Klikom na prvo komandno dugme umeće se u ListBox sadržaj

More information

Charlie Garrod Bogdan Vasilescu

Charlie Garrod Bogdan Vasilescu Principles of So3ware Construc9on: Objects, Design, and Concurrency Part 2: Designing (sub-) systems Java Collec9ons design case study Charlie Garrod Bogdan Vasilescu School of Computer Science 1 Administrivia

More information

Programski jezik JAVA PREDAVANJE

Programski jezik JAVA PREDAVANJE Programski jezik JAVA PREDAVANJE 8 2018 www.etf.ac.me Polja za potvrdu i Radio tasteri Polja za potvrdu i radio tasteri nijesu uzajamno isključivi, što znači da ako imate pet polja za potvrdu u jednom

More information

for i:=2 to n do if glasovi[i]>max then begin max:=glasovi[i]; k:=i {*promenljiva k ce cuvati indeks takmicara sa najvise glasova *} end;

for i:=2 to n do if glasovi[i]>max then begin max:=glasovi[i]; k:=i {*promenljiva k ce cuvati indeks takmicara sa najvise glasova *} end; {*Na Evroviziji je ucestvovalo n izvodjaca. Koji od njih je osvojio najvise glasova publike?*} program Evrovizija; glasovi:array[1..50] of integer; max,k:integer; writeln('unosi se broj izvodjaca:'); writeln('unose

More information

Java collections framework

Java collections framework Java collections framework Commonly reusable collection data structures Abstract Data Type ADTs store data and allow various operations on the data to access and change it ADTs are mathematical models

More information

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Spojnice using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO;

More information

Collections (Java) Collections Framework

Collections (Java) Collections Framework Collections (Java) https://docs.oracle.com/javase/tutorial/collections/index.html Collection an object that groups multiple elements into a single unit. o store o retrieve o manipulate o communicate o

More information

Uvod u relacione baze podataka

Uvod u relacione baze podataka Uvod u relacione baze podataka Ana Spasić 5. čas 1 Podupiti, operatori exists i in 1. Izdvojiti imena i prezimena studenata koji su položili predmet čiji je identifikator 2001. Rešenje korišćenjem spajanja

More information

Introduction to Collections

Introduction to Collections Module 3 COLLECTIONS Introduction to Collections > A collection sometimes called a container is simply an object that groups multiple elements into a single unit. > Collections are used to store, retrieve,

More information

Java Collections. Readings and References. Collections Framework. Java 2 Collections. References. CSE 403, Winter 2003 Software Engineering

Java Collections. Readings and References. Collections Framework. Java 2 Collections. References. CSE 403, Winter 2003 Software Engineering Readings and References Java Collections References» "Collections", Java tutorial» http://java.sun.com/docs/books/tutorial/collections/index.html CSE 403, Winter 2003 Software Engineering http://www.cs.washington.edu/education/courses/403/03wi/

More information

Upute za postavljanje Outlook Expressa

Upute za postavljanje Outlook Expressa Upute za postavljanje Outlook Expressa Prije postavljanja klijenata morate obavezno obaviti prvu prijavu na web mail kako bi aktivirali vaš račun na novom sustavu. Ukoliko niste obavili prvu prijavu, nećete

More information

Java Collections Framework: Interfaces

Java Collections Framework: Interfaces Java Collections Framework: Interfaces Introduction to the Java Collections Framework (JCF) The Comparator Interface Revisited The Collection Interface The List Interface The Iterator Interface The ListIterator

More information

Naredbe za kontrolu toka

Naredbe za kontrolu toka Naredbe za kontrolu toka Naredbe za kontrolu toka Nakon odslušanog bit ćete u stanju: objasniti semantiku naredbi za kontrolu postupaka navesti sintaksu naredbi if, if-else i case u programskom jeziku

More information

11-1. Collections. CSE 143 Java. Java 2 Collection Interfaces. Goals for Next Several Lectures

11-1. Collections. CSE 143 Java. Java 2 Collection Interfaces. Goals for Next Several Lectures Collections CSE 143 Java Collections Most programs need to store and access collections of data Collections are worth studying because... They are widely useful in programming They provide examples of

More information

Objektno orjentirano programiranje

Objektno orjentirano programiranje Objektno orjentirano programiranje Predavanje 4 Objektno orijentirani koncepti Konstruktori Metoda koja se poziva prilikom stvaranja novog objekta Svojstveni su OO programiranju Imaju isto ime kao i klasa

More information

17. Java Collections. Organizing Data. Generic List in Java: java.util.list. Type Parameters ( Parameteric Polymorphism ) Data Structures that we know

17. Java Collections. Organizing Data. Generic List in Java: java.util.list. Type Parameters ( Parameteric Polymorphism ) Data Structures that we know Organizing Data Data Structures that we know 17 Java Collections Generic Types, Iterators, Java Collections, Iterators Today: Arrays Fixed-size sequences Strings Sequences of characters Linked Lists (up

More information

GUI - događaji (Events) i izuzeci. Bojan Tomić

GUI - događaji (Events) i izuzeci. Bojan Tomić GUI - događaji (Events) i izuzeci Bojan Tomić Događaji GUI reaguje na događaje (events) Događaj je neka akcija koju korisnik programa ili neko drugi izvrši korišćenjem perifernih uređaja (uglavnom miša

More information

An Interface with Generics

An Interface with Generics Generics CSC207 Software Design Generics An Interface with Generics Generics class foo introduces a class with a type parameter T. introduces a type parameter that is required to be

More information

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta String string ili znakovni niz (string) nije niz znakova u Javi su stringovi klase String paketa java.lang!!! Usporedba: char gf = G ; Niz znakova String char [] gf = { G, e, o, d, e, t, s, k, i ; String

More information

Uvod u web programiranje: Uvod u CSS

Uvod u web programiranje: Uvod u CSS Uvod u web programiranje: Uvod u CSS Dubrovnik, ožujak 2013. Tomo Sjekavica Zaštićeno licencom http://creativecommons.org/licenses/by-nc-sa/3.0/hr/ Creative Commons slobodno smijete: dijeliti umnožavati,

More information

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi.

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi. Obrada izuzetaka Šta je izuzetak? Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi. Prosleđuje izuzetak,

More information

VDSL modem Zyxel VMG1312-B10A/B30A

VDSL modem Zyxel VMG1312-B10A/B30A VDSL modem Zyxel VMG1312-B10A/B30A Default Login Details LAN IP Address http://192.168.2.1 User Name user Password 1234 Funkcionalnost lampica Power lampica treperi kratko vrijeme nakon uključivanja modema,

More information

Sberbank Business Online na Mozilla FireFox

Sberbank Business Online na Mozilla FireFox Sberbank Business Online na Mozilla FireFox Verzija 1.6 Srpanj 2016. Sberbank d.d. Stranica 1 SADRŽAJ 1 INSTALACIJA... 2 2 POKRETANJE MOZILLE FIREFOX... 3 2.1 IMPORT SECURITY MODULA... 4 2.2 AUTOMATSKI

More information

What is the Java Collections Framework?

What is the Java Collections Framework? 1 of 13 What is the Java Collections Framework? To begin with, what is a collection?. I have a collection of comic books. In that collection, I have Tarzan comics, Phantom comics, Superman comics and several

More information

Uputstvo za podešavanje mail klijenta

Uputstvo za podešavanje mail klijenta Uputstvo za podešavanje mail klijenta 1. Podešavanje Thunderbird mail klijenta 1.1 Dodavanje mail naloga Da biste podesili Vaš mail klijent (u ovom slučaju Thunderbird) da prima i šalje mail-ove potrebno

More information

Prva recenica. Druga recenica.

Prva recenica. Druga recenica. Algoritmi i programiranje Predavanje 4 METODE LOKALNE, GLOBALNE VARIJABLE I KONSTANTE METODA je imenovani izdvojeni slijed naredbi koji rješava određeni zadatak i po potrebi se poziva jednom ili više puta

More information

OBJEKTNO ORIJENTISANO PROGRAMIRANJE

OBJEKTNO ORIJENTISANO PROGRAMIRANJE OBJEKTNO ORIJENTISANO PROGRAMIRANJE PREDAVANJE 12: NASLEĐIVANJE Miloš Kovačević Đorđe Nedeljković 1 /17 OSNOVNI KONCEPTI - Statički i dinamički tipovi podataka - Prepisivanje metoda superklase - Polimorfizam

More information

DM550 Introduction to Programming part 2. Jan Baumbach.

DM550 Introduction to Programming part 2. Jan Baumbach. DM550 Introduction to Programming part 2 Jan Baumbach jan.baumbach@imada.sdu.dk http://www.baumbachlab.net MULTIVARIATE TREES 2 Multivariate Trees general class of trees nodes can have any number of children

More information

Overview of Java ArrayList, HashTable, HashMap, Hashet,LinkedList

Overview of Java ArrayList, HashTable, HashMap, Hashet,LinkedList Overview of Java ArrayList, HashTable, HashMap, Hashet,LinkedList This article discusses the main classes of Java Collection API. The following figure demonstrates the Java Collection framework. Figure

More information

KLASIFIKACIJA JELENA JOVANOVIĆ. Web:

KLASIFIKACIJA JELENA JOVANOVIĆ.   Web: KLASIFIKACIJA JELENA JOVANOVIĆ Email: jeljov@gmail.com Web: http://jelenajovanovic.net PREGLED PREDAVANJA Šta je klasifikacija? Binarna i više-klasna klasifikacija Algoritmi klasifikacije Mere uspešnosti

More information

public static void main(string []args) { System.out.println("Hello World"); /* prints Hello World */

public static void main(string []args) { System.out.println(Hello World); /* prints Hello World */ Java Uvod Hello world primer Java program predstavlja skup objekata koji prozivaju jedni drugima metode i tako komuniciraju. Izvorni kod se uvek čuva u datotekama sa ekstenzijom.java. Ispod je predstavljen

More information

4.1 Učitavanje podatka tipa string Učitavanje brojčanih vrijednosti Rad sa dinamičkim objektima... 7

4.1 Učitavanje podatka tipa string Učitavanje brojčanih vrijednosti Rad sa dinamičkim objektima... 7 Java zadaci Zadaci 1. Priprema novog projekta... 1 2. Organizacija klasa u fajlove... 2 3. Ispis vrijednosti u konzolni prozor... 3 4. Učitavanje vrijednosti sa konzolnog prozora... 4 4.1 Učitavanje podatka

More information

ILM implementacija DWH baza u T-mobile

ILM implementacija DWH baza u T-mobile ILM implementacija DWH baza u T-mobile Bojan Šumljak, PS Consultant Hrvoje Dubravica, PS Head Consultant www.snt-world.com 1 Što je ILM? - information Lifecycle Management praksa primjenjivanja pravila

More information

modifier returnvaluetype methodname(list of parameters) { // Method body; }

modifier returnvaluetype methodname(list of parameters) { // Method body; } Početna grupa, 28.11.2015. Metodi 1. Metodi opšti oblik metoda: modifier returnvaluetype methodname(list of parameters) // Method body; 2. Ime metoda: početno slovo je malo, a zatim slijede slova, cifre

More information

Izrada VI laboratorijske vježbe

Izrada VI laboratorijske vježbe Izrada VI laboratorijske vježbe 1. Programirati proceduru koja se aktivira sa Standard palete alatki klikom na button Fajlovi. Prilikom startovanja procedure prikazuje se forma koja sadrži jedan list box

More information

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 08 Zvonimir Bujanović Slaven Kožić Vinko Petričević Uvod: (X)HTML i CSS Na ovim i idućim vježbama naučit ćemo osnove jezika za opisivanje

More information

Računarske osnove Interneta (SI3ROI, IR4ROI)

Računarske osnove Interneta (SI3ROI, IR4ROI) Računarske osnove terneta (SI3ROI, IR4ROI) Vežbe MPLS Predavač: 08.11.2011. Dražen Drašković, drazen.draskovic@etf.rs Autori: Dražen Drašković Naučili ste na predavanjima MPLS (Multi-Protocol Label Switching)

More information

Taking Stock. IE170: Algorithms in Systems Engineering: Lecture 7. (A subset of) the Collections Interface. The Java Collections Interfaces

Taking Stock. IE170: Algorithms in Systems Engineering: Lecture 7. (A subset of) the Collections Interface. The Java Collections Interfaces Taking Stock IE170: Algorithms in Systems Engineering: Lecture 7 Jeff Linderoth Department of Industrial and Systems Engineering Lehigh University January 29, 2007 Last Time Practice Some Sorting Algs

More information

Generic classes & the Java Collections Framework. *Really* Reusable Code

Generic classes & the Java Collections Framework. *Really* Reusable Code Generic classes & the Java Collections Framework *Really* Reusable Code First, a bit of history Since Java version 5.0, Java has borrowed a page from C++ and offers a template mechanism, allowing programmers

More information

NIZOVI.

NIZOVI. NIZOVI LINKOVI ZA KONZOLNI C# OSNOVNO http://www.mycity.rs/net/programiranje-u-c-za-osnovce-i-srednjoskolce.html http://milan.milanovic.org/skola/csharp-00.htm Niz deklarišemo navođenjem tipa elemenata

More information

Nizovi. Programiranje 1

Nizovi. Programiranje 1 Nizovi Programiranje 1 VB Nizovi Zamislite da imate 10,000 šešira i da morate svakome od njih dati jedinstvenu oznaku. Kako biste to napravili? Bilo bi razumno svakom šeširu dati njegov broj. Sada možete

More information

Informacioni sistemi i baze podataka

Informacioni sistemi i baze podataka Fakultet tehničkih nauka, Novi Sad Predmet: Informacioni sistemi i baze podataka Dr Slavica Kordić Milanka Bjelica Vojislav Đukić Rad u učionici (1/2) Baze podataka (db2015): Studentska korisnička šema

More information

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi.

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi. 1 PANEL komponenta kontejnerska, slična GropBox. Roditeljska komponenta za komp. postavljene na nju. Zajedno se pomeraju. Caption svojstvo za naziv; Alighment pomera svojstvo Caption levo i desno; Align

More information

COURSE 4 PROGRAMMING III OOP. JAVA LANGUAGE

COURSE 4 PROGRAMMING III OOP. JAVA LANGUAGE COURSE 4 PROGRAMMING III OOP. JAVA LANGUAGE PREVIOUS COURSE CONTENT Inheritance Abstract classes Interfaces instanceof operator Nested classes Enumerations COUSE CONTENT Collections List Map Set Aggregate

More information

Family Name:... Other Names:... ID Number:... Signature... Model Solutions. COMP 103: Test 1. 9th August, 2013

Family Name:... Other Names:... ID Number:... Signature... Model Solutions. COMP 103: Test 1. 9th August, 2013 Family Name:............................. Other Names:............................. ID Number:............................... Signature.................................. Model Solutions COMP 103: Test

More information

Practical Session 3 Java Collections

Practical Session 3 Java Collections Practical Session 3 Java Collections 1 Outline Working with a Collection The Collection interface The Collection hierarchy Case Study: Undoable Stack Maps The Collections class Wrapper classes 2 Collection

More information

[Ref: Core Java Chp 13, Intro to Java Programming [Liang] Chp 22, Absolute Java Chp 16, docs.oracle.com/javase/tutorial/collections/toc.

[Ref: Core Java Chp 13, Intro to Java Programming [Liang] Chp 22, Absolute Java Chp 16, docs.oracle.com/javase/tutorial/collections/toc. Contents Topic 08 - Collections I. Introduction - Java Collection Hierarchy II. Choosing/using collections III. Collection and Iterator IV. Methods of Collection V. Concrete classes VI. Implementation

More information

Objektno orijentirano programiranje. Auditorne vježbe

Objektno orijentirano programiranje. Auditorne vježbe Objektno orijentirano programiranje Auditorne vježbe Elektrotehnički fakultet Osijek Kneza Trpimira 2b 31000 Osijek www.etfos.hr 1. UVOD U C++ 1.1 Strukturno programiranje i C++ U programiranju danas dominiraju

More information

SUMMARY INTRODUCTION COLLECTIONS FRAMEWORK. Introduction Collections and iterators Linked list Array list Hash set Tree set Maps Collections framework

SUMMARY INTRODUCTION COLLECTIONS FRAMEWORK. Introduction Collections and iterators Linked list Array list Hash set Tree set Maps Collections framework SUMMARY COLLECTIONS FRAMEWORK PROGRAMMAZIONE CONCORRENTE E DISTR. Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2015 2016 Introduction Collections and

More information

PROGRAMIRANJE. Teme. Packages Reference objekata Inheritance nasljeđivanje Exceptions. Amir Hajdar

PROGRAMIRANJE. Teme. Packages Reference objekata Inheritance nasljeđivanje Exceptions. Amir Hajdar PROGRAMIRANJE Amir Hajdar Teme 2 Packages Reference objekata Inheritance nasljeđivanje Exceptions Packages API Application Programmer Interface Sve klase ponuđene u sklopu Java jezika, uključujući i kompajler

More information

Algoritmi i strukture podataka 2. Čas, Uvod u C++

Algoritmi i strukture podataka 2. Čas, Uvod u C++ Algoritmi i strukture podataka 2. Čas, Uvod u C++ Aleksandar Veljković 2017/2018 1 Uvod Jezik C++ je jezik koji pripada objektno orijentisanoj paradigmi, ipak, u okviru ovog kursa naglasak neće biti na

More information

Framework in Java 5. DAAD project Joint Course on OOP using Java

Framework in Java 5. DAAD project Joint Course on OOP using Java Topic XXX Collections Framework in Java 5 DAAD project Joint Course on OOP using Java Humboldt University Berlin, University of Novi Sad, Polytehnica University of Timisoara, University of Plovdiv, University

More information

Collections Framework: Part 2

Collections Framework: Part 2 Collections Framework: Part 2 Computer Science and Engineering College of Engineering The Ohio State University Lecture 18 Collection Implementations Java SDK provides several implementations of Collection

More information

Jezik Baze Podataka SQL. Jennifer Widom

Jezik Baze Podataka SQL. Jennifer Widom Jezik Baze Podataka SQL SQL o Jezik koji se koristi u radu sa relacionim bazama podataka o Nije programski jezik i manje je kompleksan. o Koristi se isključivo u radu za bazama podataka. o SQL nije case

More information

Software 1 with Java. Java Collections Framework. Collection Interfaces. Online Resources. The Collection Interface

Software 1 with Java. Java Collections Framework. Collection Interfaces. Online Resources. The Collection Interface Java Collections Framework Collection: a group of elements Based Design: Software 1 with Java Java Collections Framework s s Algorithms Recitation No. 6 (Collections) 2 Collection s Online Resources Collection

More information

Principles of Software Construction: Objects, Design and Concurrency. More design patterns and Java Collections. toad

Principles of Software Construction: Objects, Design and Concurrency. More design patterns and Java Collections. toad Principles of Software Construction: Objects, Design and Concurrency 15-214 toad More design patterns and Java Collections Spring 2013 Christian Kästner Charlie Garrod School of Computer Science 2012-13

More information

... ; ako je a n parno. ; ako je a n neparno

... ; ako je a n parno. ; ako je a n neparno Zadaci vezani za ciklus sa preduslovom (WHILE) Zad. Napisati program za izračunavanje n_tog stepena broja a. Zad2. Napisati program za izračunavanje sume S kvadrata parnih i kubova neparnih prirodnih brojeva

More information

x y = z Zadaci - procedure

x y = z Zadaci - procedure Zadaci - procedure Zad1. Data je kvadratna meta u koordinatnom sistemu sa koordinatama A(0,0), B(1,0), C(1,1), D(0,1). Sastaviti proceduru Gadjanje koja će odrediti broj poena na sledeći način: ako je

More information

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a Webmail sistem ima podršku za SSL (HTTPS). Korištenjem ovog protokola sva komunikacija između Webmail sistema i vašeg Web čitača je kriptovana. Prilikom pristupa

More information