Lambda funkce Novinky v interfaces Streamy Optional - aneb zbavujeme se null. Java 8. Ondřej Hrstka
|
|
- Miluše Soukupová
- před 5 lety
- Počet zobrazení:
Transkript
1 Java 8 Ondřej Hrstka Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 13 A0B36PR2 Programování 2 Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 1 / 26
2 Obsah Lambda funkce Novinky v interfaces Default metody Statické metody Streamy Optional - aneb zbavujeme se null Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 2 / 26
3 Lambda výrazy (anonymní funkce) Ukážeme si na příkladu: //Java < 8 Comparator<String> lengthcomparator = new Comparator<>() { public int compare(string o1, String o2) { return o1.length() - o2.length(); } }; Collections.sort(list, lengthcomparator); Často se nám v kódu vyskytuje (anonymní) třída, která má pouze jednu metodu. Nemá žádné instanční proměnné. Dalším častým příkladem jsou listenery v GUI. Takový kód byl potom velmi nepřehledný. Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 3 / 26
4 Lambda výrazy (anonymní funkce) Ukážeme si na příkladu: //Java < 8 Comparator<String> lengthcomparator = new Comparator<>() { public int compare(string o1, String o2) { return o1.length() - o2.length(); } }; Collections.sort(list, lengthcomparator); Často se nám v kódu vyskytuje (anonymní) třída, která má pouze jednu metodu. Nemá žádné instanční proměnné. Dalším častým příkladem jsou listenery v GUI. Takový kód byl potom velmi nepřehledný. Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 3 / 26
5 Lambda výrazy (anonymní funkce) //Java 8 Comparator<String> lengthcomparator = (o1, o2) -> o1.length() - o2.length(); Collections.sort(list, lengthcomparator); //Anebo Collections.sort(list, (o1, o2) -> o1.length() - o2.length()); Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 3 / 26
6 Lambda výrazy (anonymní funkce) //Java 8 Comparator<String> lengthcomparator = (o1, o2) -> o1.length() - o2.length(); Collections.sort(list, lengthcomparator); //Anebo Collections.sort(list, (o1, o2) -> o1.length() - o2.length()); Zjednodušeně řečeno jedná o snažší vytvoření anonymní třídy. Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 3 / 26
7 Možné zápisy lambda výrazu Zápis pomocí anonymní třídy: new BiFunction<T1, T2, T3>() public T3 apply(t1 t1, T2 t2) { T3 t3; //... return t3; } }; Plný zápis : (T1 t1, T2 t2) -> { T3 t3; //... return t3; }; Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 4 / 26
8 Možné zápisy lambda výrazu Zápis pomocí anonymní třídy: new BiFunction<T1, T2, T3>() public T3 apply(t1 t1, T2 t2) { T3 t3; //... return t3; } }; Můžeme vynechat typy argumentů: (t1, t2) -> { T3 t3; //... return t3; }; Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 4 / 26
9 Možné zápisy lambda výrazu Zápis pomocí anonymní třídy: new BiFunction<T1, T2, T3>() public T3 apply(t1 t1, T2 t2) { return t1.somefunction(t2); } }; Pokud funkce obsahuje jedinný výraz, který by byl vracen pomocí return: (t1, t2) -> t1.somefunction(t2); Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 5 / 26
10 Možné zápisy lambda výrazu Jeden argument: x -> x + 10; Žádný argument, void funkce : () -> System.out.println("Hello world!"); Žádný argument, int funkce : () -> 42; Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 6 / 26
11 Souvislost s Closures Volná definice: Closure je funkce, která má přístupné všechny prvky (metody, proměnné) ve scope v kterém je definována. Ukázka closure:... boolean ascending = false; Comparator<String> comparator = (s1, s2) -> { int order = ascending? 1 : -1; return order * (o1.length() - o2.length()); }; return comparator;... Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 7 / 26
12 Souvislost s Closures Proměnné ke kterým je přistupováno z closure musí být effectively final: A variable or parameter whose value is never changed after it is initialized is effectively final. Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 7 / 26
13 Souvislost s Closures Proměnné ke kterým je přistupováno z closure musí být effectively final: A variable or parameter whose value is never changed after it is initialized is effectively final. Proč? Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 7 / 26
14 Reference na metody Často lambda funkce pouze volá jinou metodu. V takovém případě se nám vyplatí reference na metody. K tomuto se používá operátor :: Instanční metoda () -> this.bar(); this::bar; x -> foo.bar1(x); foo::bar1; Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 8 / 26
15 Reference na metody Často lambda funkce pouze volá jinou metodu. V takovém případě se nám vyplatí reference na metody. K tomuto se používá operátor :: Statická metoda x -> Math.sin(x); Math::sin(x); Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 8 / 26
16 Reference na metody Často lambda funkce pouze volá jinou metodu. V takovém případě se nám vyplatí reference na metody. K tomuto se používá operátor :: Konstruktor x -> new Foo(x); Foo::new; Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 8 / 26
17 Reference na metody Často lambda funkce pouze volá jinou metodu. V takovém případě se nám vyplatí reference na metody. K tomuto se používá operátor :: Instanční metoda argumentu (Foo foo) -> foo.tostring(); Foo::toString(); Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 8 / 26
18 @FunctionalInterface Pomocí lambdy můžeme vytvořit instanci libovolného interface, které má právě jednu instanční funkci. Pokud si chceme nechat tuto možnost pohlídat kompilátorem, můžeme označit public interface Bar {... Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 9 / 26
19 Lambda funkce - shrnutí Java framework obsahuje v balíčku java.util.function předpřipravené funkční interfaces pro mnohá použití. Např.: Consumer<T>, Function<T,R>, Supplier<T>, Predicate<T>, BiFunction<T,U,R>, Consumer<T> Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 10 / 26
20 Lambda funkce - shrnutí Java framework obsahuje v balíčku java.util.function předpřipravené funkční interfaces pro mnohá použití. Např.: Consumer<T>, Function<T,R>, Supplier<T>, Predicate<T>, BiFunction<T,U,R>, Consumer<T> Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 10 / 26
21 Lambda funkce - shrnutí Java framework obsahuje v balíčku java.util.function předpřipravené funkční interfaces pro mnohá použití. Např.: Consumer<T>, Function<T,R>, Supplier<T>, Predicate<T>, BiFunction<T,U,R>, Consumer<T> Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 10 / 26
22 Lambda funkce - shrnutí Java framework obsahuje v balíčku java.util.function předpřipravené funkční interfaces pro mnohá použití. Např.: Consumer<T>, Function<T,R>, Supplier<T>, Predicate<T>, BiFunction<T,U,R>, Consumer<T> Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 10 / 26
23 Lambda funkce - shrnutí Java framework obsahuje v balíčku java.util.function předpřipravené funkční interfaces pro mnohá použití. Např.: Consumer<T>, Function<T,R>, Supplier<T>, Predicate<T>, BiFunction<T,U,R>, Consumer<T> Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 10 / 26
24 Lambda funkce - shrnutí Java framework obsahuje v balíčku java.util.function předpřipravené funkční interfaces pro mnohá použití. Např.: Consumer<T>, Function<T,R>, Supplier<T>, Predicate<T>, BiFunction<T,U,R>, Consumer<T> Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 10 / 26
25 Obsah Lambda funkce Novinky v interfaces Default metody Statické metody Streamy Optional - aneb zbavujeme se null Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 11 / 26
26 Default metoda - Motivace (jedna z mnoha) Když máme lambda funkce, dovedeme si představit metodu IterableforEach(Consumer<T> action), která pro danou instanci Iterable zavolá action na každou iterovanou položku. Tato metoda by plnila podobnou funkci jako operátor for-each, avšak v některých případech by mohla být optimalizována na konkrétní třídu. Proč nemůžeme tuto metodu přidat do další verze Javy? Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 12 / 26
27 Default metoda Java 8 zavádí klíčové slovo default které můžeme použít u deklerace metody v interface. Tato metoda může mít definované tělo přímo v interface. interface Foo { default void bar() { System.out.println("Hello world!"); foo(); } } void foo(); Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 13 / 26
28 Diamond problem interface A { default void foo() {} } interface B extends A default void foo() {...} } interface C extends A default void foo() {...} } public class D implements B, C {... } Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 14 / 26
29 Statické metody Interface nyní může obsahovat statické metody. Hodí se třeba jako factory metody public interface Comparator<T> {... public static <T, Comparable<U>> Comparator<T> comparing(function<t, U> keyextractor) {... } } (o1, o2) -> o1.length() - o2.length(); Comparator.comparing(String::length) Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 15 / 26
30 Statické metody Interface nyní může obsahovat statické metody. Hodí se třeba jako factory metody public interface Comparator<T> {... public static <T, Comparable<U>> Comparator<T> comparing(function<t, U> keyextractor) {... } } (o1, o2) -> o1.length() - o2.length(); Comparator.comparing(String::length) Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 15 / 26
31 Obsah Lambda funkce Novinky v interfaces Default metody Statické metody Streamy Optional - aneb zbavujeme se null Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 16 / 26
32 balíček java.util.stream umožňují zpracovávat data pomocí deklerativního zápisu Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 17 / 26
33 //Java 7 List<Transaction> grocerytransactions = new Arraylist <>(); for(transaction t: transactions){ if(t.gettype() == Transaction.GROCERY){ grocerytransactions.add(t); }} Collections.sort(groceryTransactions, new Comparator() { public int compare(transaction t1, Transaction t2){ return t2.getvalue().compareto(t1.getvalue()); }}); List<Integer> transactionids = new ArrayList<>(); for(transaction t: grocerytransactions){ transactionsids.add(t.getid()); } Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 18 / 26
34 //Java 8 List<Integer> transactionsids = transactions.stream().filter(t -> t.gettype() == Transaction.GROCERY).sorted(comparing(Transaction::getValue).reversed()).map(Transaction::getId).collect(toList()); Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 19 / 26
35 Vybrané metody Streamu filter map flatmap sorted collect parallel reduce Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 20 / 26
36 Vybrané metody Streamu filter map flatmap sorted collect parallel reduce Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 20 / 26
37 Vybrané metody Streamu filter map flatmap sorted collect parallel reduce Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 20 / 26
38 Vybrané metody Streamu filter map flatmap sorted collect parallel reduce Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 20 / 26
39 Vybrané metody Streamu filter map flatmap sorted collect parallel reduce Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 20 / 26
40 Vybrané metody Streamu filter map flatmap sorted collect parallel reduce Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 20 / 26
41 Vybrané metody Streamu filter map flatmap sorted collect parallel reduce Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 20 / 26
42 Obsah Lambda funkce Novinky v interfaces Default metody Statické metody Streamy Optional - aneb zbavujeme se null Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 21 / 26
43 I call it my billion-dollar mistake. It was the invention of the null reference in Sir Charles Antony Richard Hoare Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 22 / 26
44 Když je null pointer tak špatný, tak se ho zbavme. Ale jak potom reprezentovat, když funkce nemůže vrátit žádnou hodnotu? Třeba když žádná není... Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 23 / 26
45 Třída Optional public final class Optional<T> { public static<t> Optional<T> empty() {...} public static<t> Optional<T> of(t value) {...} public static<t> Optional<T> ofnullable(t value) {..}... } Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 24 / 26
46 Třída Optional - metody filter map flatmap ispresent ifpresent get orelseget Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 25 / 26
47 Třída Optional - metody filter map flatmap ispresent ifpresent get orelseget Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 25 / 26
48 Třída Optional - metody filter map flatmap ispresent ifpresent get orelseget Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 25 / 26
49 Třída Optional - metody filter map flatmap ispresent ifpresent get orelseget Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 25 / 26
50 Třída Optional - metody filter map flatmap ispresent ifpresent get orelseget Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 25 / 26
51 Třída Optional - metody filter map flatmap ispresent ifpresent get orelseget Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 25 / 26
52 Třída Optional - metody filter map flatmap ispresent ifpresent get orelseget Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 25 / 26
53 Třída Optional - ukázka kódu String version = computer.flatmap(computer::getsoundcard).flatmap(soundcard::getusb).map(usb::getversion) Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 26 / 26
54 @Nonnull anotace umožňují označit proměnné jestli mohou být null. Společně s Optional nám to umožní zvýšit kvalitu kódu. Anotace jsou popsány v JSR 305: Annotations for Software Defect Detection. Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 27 / 26
Stream API. Petr Krajča. Základy programovaní 4 (Java) Katedra informatiky Univerzita Palackého v Olomouci
Základy programovaní 4 (Java) Stream API Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci Petr Krajča (UP) KMI/ZP4JV 5. listopad, 2014 1 / 10 Stream API Java 8 nový přístup k práci s kolekcemi
VíceNávrh softwarových systém. Návrh softwarových systémů
Návrh softwarových systém ů - Java 8 Jiří Šebek Návrh softwarových systémů (B6B36NSS) Co je nového? Default interface methods Lambda expressions Method references and repeatable annotations Streams Functional
VíceJazyk C# (seminář 6)
Jazyk C# (seminář 6) Pavel Procházka KMI 29. října 2014 Delegát motivace Delegáty a události Jak docílit v C# funkcionální práce s metodami v C je to pomocí pointerů na funkce. Proč to v C# nejde pomocí
VíceIterator & for cyklus
Iterator & for cyklus for (Object o : foo) funguje pokud je foo pole nebo je foo iterovatelné jako to zařídit? implementovat interface java.lang.iterable Iterable má jednu metodu java.util.iterator iterator()
Více14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
Vícetypová konverze typová inference
Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie
VíceGenerické typy. Podrobněji: The Java Language Specification ( Third Edition ) , 18
Generické typy jsou třídy či interfejsy deklarující tzv. typové parametry jimiž: - systematizují typovou kontrolu kompilátorem, - vyjadřují jasněji smysl, zlepšují čitelnost a robustnost programu, - ulehčují
VíceÚvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
VíceParametrizované třídy Generics generické třídy. JDK zavádí mimo jiné tzv. parametrizované třídy - generics
1 Parametrizované třídy Generics generické třídy JDK zavádí mimo jiné tzv. parametrizované třídy - generics Úvod 2 podobnost se šablonami (templates) z C++ nejčastěji použité v oblasti knihoven kontejnerového
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Více8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním
VíceDefinice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky
JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance
VíceDatové typy v Javě. Tomáš Pitner, upravil Marek Šabo
Datové typy v Javě Tomáš Pitner, upravil Marek Šabo Úvod k datovým typům v Javě Existují dvě základní kategorie datových typů: primitivní a objektové Primitivní v proměnné je uložena přímo hodnota např.
VíceDefinice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky
JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceSeznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí
Kolekce obecně Seznamy a iterátory doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Kolekce ::= homogenní sada prvků
VíceProgramování v C++ 2, 4. cvičení
Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceGenerické programování
Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =
VíceTeoretické minimum z PJV
Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov
VíceAbstraktní datové typy: zásobník
Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní
VíceUJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/
UJO Framework revoluční architektura beans verze 0.80 http://ujoframework.org/ Pavel Pone(c), září 2008 Historie rok 2004 upravené objekty z frameworku Cayenne nevýhodou byla špatná typová kontrola rok
VíceEnterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Enterprise Java
VícePrincipy objektově orientovaného programování
Principy objektově orientovaného programování Třídy a objekty doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz C E T
VíceAbstraktní třída a rozhraní
Abstraktní třída a rozhraní Někdy se může stát, zejména při psaní v hierarchické struktuře hodně nadřazených tříd, že tušíme, že bude ve zděděných třídách vhodné použít nějakou metodu. Tuto metodu ještě
VíceJava Výjimky Java, zimní semestr
Java Výjimky 1 Výjimky (exceptions) hlášení a ošetření chyb výjimka signalizuje nějaký chybový stav výjimka = instance třídy java.lang.throwable dvě podtřídy java.lang.error a java.lang.exception konkrétní
Více11.5.2012. Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9
Obsah přednášky 9 Základy programování (IZAPR, IZKPR) Přednáška 9 Základy dědičnosti, přístupová práva Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií
VíceIRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33
Objekt jako proměnná Objekty a metody Objekt = proměnná referenčního typu vznik pomocí new, chování viz pole jako referenční proměnná minulý semestr Stack Heap objekt ref this 10 20 atr1 atr2 jinyobjekt
VíceDědění, polymorfismus
Programování v jazyce C/C++ Ladislav Vagner úprava Pavel Strnad Dědění. Polymorfismus. Dnešní přednáška Statická a dynamická vazba. Vnitřní reprezentace. VMT tabulka virtuálních metod. Časté chyby. Minulá
VíceStromy. Příklady. Rekurzivní datové struktury. Základní pojmy
Základní pojmy Stromy doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Graf uzly hrany orientované / neorientované Souvislý
VíceProgramování v Javě I. Únor 2009
Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory
VíceAlgoritmizace a programování
Algoritmizace a programování Struktura programu Vytvoření nové aplikace Struktura programu Základní syntaktické elementy První aplikace Verze pro akademický rok 2012/2013 1 Nová aplikace NetBeans Ve vývojovém
VíceStatické proměnné a metody. Tomáš Pitner, upravil Marek Šabo
Statické proměnné a metody Tomáš Pitner, upravil Marek Šabo Úvod Se statickou metodou jsme se setkali už u úplně prvního programu - Hello, world! public class Demo { public static void main(string[] args)
VíceJazyk C# (seminář 3)
Jazyk C# (seminář 3) Pavel Procházka KMI October 8, 2014 Motivace Největší využití v programování okenních aplikací a GUI knihoven. Data reprezentujeme pomocí objektů (tříd), máme tedy ucelený pohled na
Vícepublic static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());
Anotace a Hibernate Aleš Nosek, Ondřej Vadinský, Daniel Krátký Anotace v Javě Anotace jsou novinkou v Javy verze 5. Anotace umožňují doplnit kód Javy o dodatečné informace. Zapisují se přímo do zdrojového
Více20. Projekt Domácí mediotéka
Projekt Domácí mediotéka strana 211 20. Projekt Domácí mediotéka 20.1. Základní popis, zadání úkolu V projektu Domácí mediotéka (Dome) se jednoduchým způsobem evidují CD a videa. Projekt je velmi jednoduchý
VíceStruktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová
Struktura třídy, operátory, jednoduché algoritmy, junit 2. cvičení Alena Buchalcevová Cíle cvičení seznámit se s rozhraním (interface) v Javě seznámit se s testováním při vývoji (makety, JUnit) naučit
VíceProgramování v Javě I. Leden 2008
Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory
VícePrvní kapitola úvod do problematiky
První kapitola úvod do problematiky Co je to Flex Adobe Flex je ActionSript (AS) framework pro tvorbu Rich Internet Aplications (RIA), tedy knihovna AS tříd pro Flash. Flex používáme k vytvoření SWF souboru
VíceProjekty pro výuku programování v jazyce Java
JIHOČESKÁ UNIVERZITA V ČESKÝCH BUDĚJOVICÍCH Pedagogická fakulta Katedra informatiky Akademický rok: 2006/2007 TEZE BAKALÁŘSKÉ PRÁCE Projekty pro výuku programování v jazyce Java Jméno: František Přinosil
VíceProgramování v jazyce JavaScript
Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Anonymní funkce BI-JSC Evropský sociální fond
VíceJAVA Unit testing Java, zimní semestr
JAVA Unit testing Úvod unit testing testování malý jednotek funkčnosti jednotka nezávislá na ostatních testování zcela oddělené vytvářejí se pomocné objekty pro testování kontext typicky v OO jazycích
VíceFronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4
Fronta (Queue) Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Fronta uplatňuje mechanismus přístupu FIFO first
VíceOMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC
OMO 4 - Creational design patterns A Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC Ing. David Kadleček, PhD. kadlecd@fel.cvut.cz, david.kadlecek@cz.ibm.com 1 Creational
VíceDatové struktury. alg12 1
Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou
VíceBridge. Známý jako. Účel. Použitelnost. Handle/Body
Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době
VíceSeminář Java IV p.1/38
Seminář Java IV Seminář Java IV p.1/38 Rekapitulace Deklarace tříd Proměnné, metody, konstruktory, modifikátory přístupu Datové typy primitivní, objektové, pole Dědičnost Řídící konstrukce Podmínky, cykly
VíceAnotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký
Anotace a Hibernate Aleš Nosek Ondřej Vadinský Daniel Krátký Anotace v Javě novinka Javy 5 umožňují k Java kódu přidávat dodatečné informace (podobně jako JavaDoc) za předchůdce anotací je možné považovat
VíceJava Řetězce Java, zimní semestr
Java Řetězce 1 Řetězec instance třídy java.lang.string kompilátor s nimi zachází téměř jako s primit. typy řetězcové konstanty = instance třídy String nezměnitelné!!! pro změny třídy StringBuffer, StringBuilder
VíceZáklady Guice Vazby Scopes. Google Guice. základní seznámení s frameworkem Google Guice
základní seznámení s frameworkem Lukáš Koĺısko lkolisko@gmail.com 26.11.2007 Cíle prezentace Cíle prezentace To DI, or not to DI Varianty řešení DI Výhody a nevýhody Cílem prezentace je ukázat, že... v
Více14.4.1. Typický prvek kolekce pro české řazení
14.4. Co všechno by měl mít typický prvek kolekce 177 Poznámka: Třídy BigInteger, BigDecimal a Date budou vysvětleny v částech [15./183, [16./185 a [18.1./204. 14.4.1. Typický prvek kolekce pro české řazení
VíceDefinice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky
JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance
VíceSpráva paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016
Správa paměti Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016 Objektové modelování, B36OMO 10/2016, Lekce 2 https://cw.fel.cvut.cz/wiki/courses/xxb36omo/start
VíceVýchozí a statické metody rozhraní. Tomáš Pitner, upravil Marek Šabo
Výchozí a statické metody rozhraní Tomáš Pitner, upravil Marek Šabo Výchozí a statické metody rozhraní Java 8 přidává ohledně metod v rozhraní nové možnosti. Neuvidíme je tedy ve starém kódu a mnozí vývojáři
VíceJAVA. Další jazyky kompilovatelné do Java byte-code
JAVA Další jazyky kompilovatelné do Java byte-code Přehled Scala objektový a funkcionální jazyk Closure funkcionální jazyk dialekt Lispu Groovy skritpovací jazyk Kotlin nová Java Jython Java implementace
VícePokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.
Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. 1. Odkrokujte následující program a s použitím notace z přednášky sledujte stav paměti
VícePokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.
Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. 1. Odkrokujte následující program a s použitím notace z přednášky popište stav paměti
VíceVýčtový typ strana 67
Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce
VíceEnterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Enterprise Java
Více7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená
VíceObsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth
Evropský sociální fond. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace Ing. Ondřej Guth Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze
VíceIW5 - Programování v.net a C# 4 Pokročilé konstrukce C#
4 - Pokročilé konstrukce C# IW5 - Programování v.net a C# Strana 1 Obsah přednášky Výjimky Delegáti Události Lambda výrazy Strana 2 Výjimky a jejich zpracování Slouží k ošetření výjimečných (chybových)
VíceDatové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12.
Obsah přednášky: Definice pojmů o datový typ, o abstraktní datový typ Datové struktury Abstraktní datové typy a jejich implementace o Fronta (Queue) o Zásobník (Stack) o Množina (Set) Algoritmizace (Y36ALG),
Více1. Programování proti rozhraní
1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní
VícePŘETĚŽOVÁNÍ OPERÁTORŮ
PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceObjektově orientované programování v PHP 5. Martin Klíma
Objektově orientované programování v PHP 5 Martin Klíma OOP & PHP 5 V PHP 5 konečně značné rozšíření OOP Blíží se to moderním programovacím jazykům jako Java nebo C# Výhody OOP Zapouzdření (nové modifikátory
VíceObjekty v PHP 5.x. This is an object-oriented system. If we change anything, the users object.
Objekty v PHP 5.x This is an object-oriented system. If we change anything, the users object. Objektové PHP Objekty se poprvé objevili v PHP ve verzi 4. Nepříliš zdařilý pokus. Programátoři získali nedůvěru
VícePB161 Programování v jazyce C++ Přednáška 10
.. PB161 Programování v jazyce C++ Přednáška 10 Šablony Nikola Beneš 23. listopadu 2015 PB161 přednáška 10: šablony 23. listopadu 2015 1 / 29 K zamyšlení Jaký je rozdíl mezi new int[10] a new int[10]()?
VíceGeorge J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu
A Tutorial Advances in query languages for similarity-based databases George J. Klir Petr Krajča State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu Palacky University,
VíceNávrhové vzory Tvorba objektů
Objektové modelování, AD7B36OMO Návrhové vzory Tvorba objektů JIŘÍ ŠEBEK Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze https://edux.feld.cvut.cz/courses/ad7b36omo Přednáška
VíceEnterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Enterprise Java
VíceObsah přednášky. GUI v Javě a událostmi řízené programování. Základní prvky grafického rozhraní. Základní komponenty.
GUI v Javě a událostmi řízené programování Obsah přednášky GUI v Javě (připomínka) Návrhář GUI Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 4 A0B36PR2
Více1 - Úvod do platformy.net. IW5 - Programování v.net a C#
1 - Úvod do platformy.net IW5 - Programování v.net a C# Strana 1 Obsah přednášky Objektově orientované paradigma.net Framework Základní rysy jazyka C# Strana 2 Objektová orientace C# implementuje základní
VíceSeminář Java II p.1/43
Seminář Java II Seminář Java II p.1/43 Rekapitulace Java je case sensitive Zdrojový kód (soubor.java) obsahuje jednu veřejnou třídu Třídy jsou organizovány do balíků Hierarchie balíků odpovídá hierarchii
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceKIV/PIA 2013 Jan Tichava
KIV/PIA 2013 Jan Tichava Java EE JSF, PrimeFaces Spring JPA, EclipseLink Java Platform, Enterprise Edition Persistence Zobrazovací vrstva Interakce aplikací Deployment Java Persistence API Enterprise
VíceVláknové programování část V
Vláknové programování část V Lukáš Hejmánek, Petr Holub {xhejtman,hopet@ics.muni.cz Laboratoř pokročilých síťových technologií PV192 2014 03 25 1/25 Přehled přednášky Paměťový model Javy GUI v Javě Vlákna
VíceTřídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické
Třídy, polymorfismus A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické Polymorfizmus ~ vícetvarost Polymorfizmus základní vlastnost objektového přístupu základní princip polymorfismu:
VíceIRAE 07/08 Přednáška č. 1
Úvod do předmětu OOP Objekt Proč OOP? Literatura, osnova předmětu viz. cvičení Základní prvek OOP sw inženýrství = model reálných objektů (věcí) člověk, auto, okno (ve windows), slovník, = model abstraktní
VíceTvorba informačních systémů
Tvorba informačních systémů Michal Krátký 1, Miroslav Beneš 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních
VíceÚvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39
Programování v C# Hodnotové datové typy, řídící struktury Petr Vaněček 1 / 39 Obsah přednášky Referenční datové typy datové položky metody přístupové metody accessory, indexery Rozhraní Pole 2 / 39 Třídy
VíceVyužití OOP v praxi -- Knihovna PHP -- Interval.cz
Page 1 of 6 Knihovna PHP Využití OOP v praxi Po dlouhé teorii přichází na řadu praxe. V následujícím textu si vysvětlíme možnosti přístupu k databázi pomocí různých vzorů objektově orientovaného programování
VíceGUI v Javě a událostmi řízené programování
GUI v Javě a událostmi řízené programování Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 4 A0B36PR2 Programování 2 Jan Faigl, 2016 A0B36PR2 Přednáška
VíceClass loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu
Seminář Java Zavádění tříd Radek Kočí Fakulta informačních technologií VUT Duben 2008 Radek Kočí Seminář Java Zavádění tříd 1/ 16 JVM zavádí třídy dynamicky Class loader objekt schopný zavádět třídy abstraktní
VíceÚvod. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík,2016
Úvod Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Karel Richta, Martin Hořeňovský, Aleš Hrabalík,2016 Přednášky byly připraveny i s pomocí materiálů, které vyrobili Ladislav Vágner a Pavel Strnad
VíceProgramovací jazyk Java
1 z 8 Programovací jazyk Java Enumerace (výčty) Složitější definice výčtového typu Konstanty anonymních typů Výčtový typ a datové struktury Java packaging JAR archivy CLASSPATH Apache Ant 10. přednáška
VíceGoogle Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky
Google Web Toolkit Martin Šurkovský, SUR096 Vysoká škola Báňská - Technická univerzita Ostrava Katedra informatiky 29. března 2010 Martin Šurkovský, SUR096 (VŠB - TUO) Google Web Toolkit 29. března 2010
VíceProgramování v C++ 1, 5. cvičení
Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědění 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené
VíceJava - řazení objektů
Java - řazení objektů Kapitola seznamuje se základními principy řazení objektů Klíčové pojmy: Přirozené řazení, absolutní řazení, ideální porovnávatelná třída ŘAZENÍ OBJEKTŮ U objektů není příliš jasné,
VícePB161 Programování v jazyce C++ Přednáška 4
PB161 Programování v jazyce C++ Přednáška 4 Dynamická alokace Kopírovací konstruktor Přetypování v C++ Nikola Beneš 12. října 2015 PB161 přednáška 4: dynamická alokace, kopírovací konstruktor, casting
VíceZáklady objektové orientace I. Únor 2010
Seminář Java Základy objektové orientace I Radek Kočí Fakulta informačních technologií VUT Únor 2010 Radek Kočí Seminář Java Základy OO (1) 1/ 20 Téma přednášky Charakteristika objektově orientovaných
VíceGUI v Javě a událostmi řízené programování
GUI v Javě a událostmi řízené programování Jiří Vokřínek Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 6 B0B36PJV Programování v JAVA Jan Faigl, Jiří Vokřínek,
VíceGUI v Javě a událostmi řízené programování
GUI v Javě a událostmi řízené programování Jiří Vokřínek Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 6 B0B36PJV Programování v JAVA Jan Faigl, Jiří Vokřínek,
VíceIII/2 Inovace a zkvalitnění výuky prostřednictvím ICT
Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň
VíceMožnosti deklarativního programování v jazyce Java 8
Vysoká škola ekonomická v Praze Fakulta informatiky a statistiky Katedra informačních technologií Studijní program: Aplikovaná informatika Obor: Informační systémy a technologie Možnosti deklarativního
VícePokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.
Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. 1. Odkrokujte následující program a s použitím notace z přednášky sledujte stav paměti
VíceJAVA JavaBeans Java, letní semestr
JAVA JavaBeans Komponenty přehled komponenta znovupoužitelný kus kódu charakterizována službami, které poskytuje a požaduje není přesná definice komponentové modely JavaBeans Enterprise JavaBeans (EJB)
Více4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ
4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ OBJEKT Program v Javě je staticky strukturován na třídy, jejichž instance (objekty) za běhu dynamicky programu vznikají a zanikají. Objekt je nejprve
Více