Funkcijska sučelja: često korištena za modeliranje objekata koji obavljaju određene poslove Anotirana su signaliziraju da se t

Слични документи
Slide 1

Tutoring System for Distance Learning of Java Programming Language

Računarski praktikum I - Vježbe 11 - Funktori

Zadatak 011 Razmotrite sljedeći primjer. package hr.fer.oopj.primjeri.p011; public class Main { } public static void main(string[] args) { obrada(2.71

Tutoring System for Distance Learning of Java Programming Language

UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke o

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

PowerPoint Presentation

Uvod u PHP

PowerPoint Presentation

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

PowerPoint Presentation

ZADACI ZA VEŽBU 1. Realizovati konzolnu aplikaciju koja će računati površinu kvadrata, pravougaonika ili trougla. 2. Preko konzole se unosi ocena od 1

Tutoring System for Distance Learning of Java Programming Language

PowerPoint Presentation

Sveucilište u Zagrebu

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

Microsoft PowerPoint - JavaP9_2019

VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

03 SUBP

PowerPoint Presentation

PowerPoint Presentation

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

PowerPoint Presentation

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

PowerPoint Presentation

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

Класе комбинација презентације (Хортона) и к о бајаги скрипте (Ово је прича коју врло радо причам) нови тип података: дефинишу могуће вредности подата

Microsoft PowerPoint - Bitovi [Compatibility Mode]

Programski jezik C

Uvod u računarstvo 2+2

Datum: 20

Programiranje za UNIX Okruženje unix procesa

8 LINQ upiti LINQ (Language Integrated Query upit integrisan u jezik) jeste skup mogućnosti koje jezik C# i Framework pružaju za pisanje strukturirani

Microsoft Word - MySQL_3.doc

Microsoft PowerPoint - JavaP7_2018

Grananje u programu predavač: Nadežda Jakšić

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

Funkcije predavač: Nadežda Jakšić

OOP08

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

Računarski praktikum I - Vježbe 09 - this, static

Računarski praktikum I - Vježbe 06 - Standard Template Library (2)

Fakultet tehničkih nauka, Novi Sad Predmet: ISIBP

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

PROMENLJIVE, TIPOVI PROMENLJIVIH

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

Tutoring System for Distance Learning of Java Programming Language

Mrežno računarstvo

P1.2 Projektovanje asemblera

Funkcije predavač: Nadežda Jakšić

Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić

Web orijentirana rješenja u turizmu

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

Introduction to Programming

3.Kontrlne (upravlja~ke) strukture u Javi

Microsoft PowerPoint - 6. Query Builder.pptx

Uvod u računarstvo 2+2

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1

Mathcad - MCADMod MCD

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra

Државно такмичење године 5. и 6. разред 1. [pločice] Правоугаону терасу димензија d s центиметара квадратних треба поплочати коришћењем плочица

PowerPoint Presentation

АГЕНЦИЈА ЗА БАНКАРСТВО РЕПУБЛИКЕ СРПСКЕ УПУТСТВО ЗА ЕЛЕКТРОНСКО ДОСТАВЉАЊЕ ПОДАТАКА ИЗ ОБЛАСТИ РЕСТРУКТУРИРАЊА БАНАКА Бања Лука, јули године

070-ALIP2-udzbenik.indb

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj

Slide 1

Programiranje 2 7. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/7

Osnove inženjerske informatike II. Uvod u programiranje Vaš prvi program K. F. & V. B.

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

PowerPoint Presentation

Primenjeno programiranje - Vežbe

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

Microsoft Word - 1.Operacije i zakoni operacija

CLI

Microsoft PowerPoint - 12-Funkcije_1.ppt [Compatibility Mode]

Programski jezik C

studirko.com predstavlja: Večernja škola C# za FPZ ( ) v 4.0 Za studirko.com napisao: Slaven Špigl

SPR , IV godina, VHDL – Ispitna pitanja

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Microsoft Word - WP_kolokvij_2_rjesenja.doc

PowerPoint Presentation

Microsoft Word - 11 Pokazivaci

Programski jezik JAVA PREDAVANJE

PowerPoint Presentation

Microsoft PowerPoint Aplikacijski moduli ISMO [Compatibility Mode]

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

12.WT-javaScript-Drupal

Microsoft Word - Java_introduction_NEW_SYLLABUS.doc

Microsoft Word - 02 Elementi programskog jezika Pascal

P3.2 Paralelno programiranje 2

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Računarski praktikum I - Vježbe 01 - Uvod

Primenjeno programiranje - vezbe GUI i baze podataka

Транскрипт:

Funkcijska sučelja: često korištena za modeliranje objekata koji obavljaju određene poslove Anotirana su s @FunctionalInterface; signaliziraju da se ta sučelja mogu koristiti za stvaranje objekata u lambda-izrazima (ali baš kao i s @Override, ta anotacija nije nužna već se koristi u dokumentacijske svrhe. Pregled funkcijskih sučelja: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/function/packagesummary.html Model obrade: objekt dobiva podatak koji dalje samostalno obrađuje Consumer<T> void accept(t t BiConsumer<T,U> void accept(t t, U u DoubleConsumer void accept(double value IntConsumer void accept(int value LongConsumer void accept(long value Consumer<String> c1 = t->system.out.println(t; Consumer<String> c2 = System.out::println;

Model ispitnog predikata: objekt dobiva podatak za koji treba reći je li prihvatljiv Predicate<T> boolean test(t t BiPredicate<T,U> boolean test(t t, U u DoublePredicate boolean test(double value IntPredicate boolean test(int value LongPredicate boolean test(long value Predicate<String> p1 = t -> t.length(>3; Predicate<String> p2 = t ->!t.isempty(; Predicate<String> p3 = String::isEmpty; Predicate<Integer> p4 = t -> t%3 == 0;

Model preslikavanja: objekt dobiva podatak jednog tipa i transformira ga u novi podatak, moguće drugog tipa Function<T,R> R apply(t t BiFunction<T,U,R> R apply(t t, U u DoubleFunction<R> R apply(double t IntFunction<R> R apply(int t LongFunction<R> R apply(long t ToIntFunction<T> int applyasint(t value ToLongFunction<T> long applyaslong(t value ToDoubleFunction<T> double applyasdouble(t value ToIntBiFunction<T,U> int applyasint(t t, U u ToLongBiFunction<T,U> long applyaslong(t t, U u ToDoubleBiFunction<T,U> double applyasdouble(t t, U u Function<String,Integer> f1 = s -> Integer.valueOf(s; Function<String,Integer> f2 = Integer::valueOf; Function<Integer,String> f3 = i -> i.tostring(; Function<Integer,String> f4 = Integer::toString; Function<Student,Integer> f5 = s -> s.getocjena(; Function<Student,Integer> f6 = Student::getOcjena;

Operatori: objekti koji rade preslikavanje nad istom domenom Unarni: funkcija T T Binarni: funkcija TxT T BinaryOperator<T> extends BiFunction<T,T,T> T apply(t t, T u UnaryOperator<T> extends Function<T,T> T apply(t t DoubleUnaryOperator double applyasdouble(double operand IntUnaryOperator int applyasint(int operand LongUnaryOperator long applyaslong(long operand DoubleBinaryOperator double applyasdouble(double left, double right IntBinaryOperator int applyasint(int left, int right LongBinaryOperator long applyaslong(long left, long right BinaryOperator<Integer> suma = (left,right -> left+right; UnaryOperator<Integer> povecaj = t -> t+1;

Primjene: Iterabilni objekti (npr. kolekcije jednostavnih vrijednosti imaju foreach: Iterable<T> default void foreach(consumer<? super T> action List<String> imena = popuni(; imena.foreach(ime -> System.out.println(ime; imena.foreach(system.out::println; Kolekcije jednostavnih vrijednosti imaju removeif: Collection<E> default boolean removeif(predicate<? super E> filter List<String> imena = popuni(; imena.removeif(ime -> ime.length(<3; // Ovo gore je pokrata za: Iterator<String> it = imena.iterator(; while(it.hasnext( { String ime = it.next(; if(ime.length(<3 it.remove(; Mape imaju foreach: Map<K,V> default void foreach(biconsumer<? super K,? super V> action Map<String,Integer> ocjene = popuni(; ocjene.foreach( (ime,ocjena -> System.out.printf("%s %d",ime,ocjena ;

Mape imaju replaceall: Map<K,V> default void replaceall(bifunction<? super K,? super V,? extends V> function Map<String,Integer> ocjene = popuni(; ocjene.replaceall( (ime,ocjena -> ime.length(<3? ocjena-1 : ocjena+1 ; Mape imaju compute: Map<K,V> default V compute( K key, BiFunction<? super K,? super V,? extends V> remappingfunction - na par (key,value iz mape primijeni remapping funkciju koja treba vratiti novu vrijednost - ako je nova vrijednost null, ako je par postojao, briše se iz mape - ako je nova vrijednost različita od null, par se ažurira tom novom vrijednosti - pozivatelju se vraća nova vrijednost Map<Object,String> map = Object key = String msg = "Pero"; String r = map.compute(key, (k,v-> v==null? msg : v.concat(msg int novi = brojpojava.compute(ime, (i,b -> b==null? 1 : b+1

Mape imaju merge: Map<K,V> default V merge( K key, V value, BiFunction<? super V,? super V,? extends V> remappingfunction - ako mapa nema par s predanim ključem, ili je u njemu vrijednost null, dodaj/ažuriraj par tako da vrijednost bude predana (drugi argument - ako u mapi postoji par s predanim ključem i vrijednost nije null, ažuriraj vrijednost tako da odgovara rezultatu primjene bifunkcije na vrijednost zapisanu u mapi i vrijednost predanu kao drugi argument - ako remappling funkcija vrati null, par se uklanja iz mape map.merge(key, msg, String::concat map.merge( ime, msg, (old, init -> old.concat(init map.merge( ime, msg, new BiFunction<String,String,String>( { public String apply(string old, String init { return old.concat(init;

brojpojava.merge(ime, 1, (old,init -> old+init brojpojava.merge(ime, 1, (old,init -> old+1 brojpojava.merge(ime, 1, Integer::sum brojpojava.merge( ime, 1, (old, init -> old+init brojpojava.merge( ime, 1, new BiFunction<Integer,Integer,Integer>( { public Integer apply(integer old, Integer init { return old+init;