API STREAM WYRAŻENIA LAMBDA
|
|
- Seweryna Janicka
- 7 lat temu
- Przeglądów:
Transkrypt
1 Wykorzystano fragmenty wykładów M. Piotrowskiego i M. Wójcika KOLEKCJE API STREAM WYRAŻENIA LAMBDA Waldemar Korłub Platformy Technologiczne KASK ETI Politechnika Gdańska
2 2 Kolekcje
3 Kolekcje 3 Kolekcja kontener, obiekt grupujący elementy Collection Framework narzędzia służące do reprezentacji i manipulacji kolekcjami: interfejsy abstrakcyjne typy reprezentujące kolekcje, implementacje konkretne implementacje interfejsów, algorytmy metody narzędziowe pozwalające na wyszukiwanie, sortowanie, permutowanie itd. n mogą być wykorzystywane niezależnie od implementacji kolekcji
4 Interfejsy kolekcji 4 Collection najbardziej uniwersalny interfejs kolekcji brak ograniczeń typu elementów, powtarzalności lub kolejności, Set nie zawiera duplikatów elementów, List sekwencja elementów o określonej kolejności, może zawierać duplikaty, Queue sekwencja elementów (np. FIFO) lub posortowane elementy (kolejki priorytetowe),
5 Interfejsy kolekcji 5 Map odwzorowanie par klucz à wartość nie może zawierać powtórzonych kluczy, jeden klucz może wskazywać na jedną wartość, SortedSet zawiera posortowane elementy SortedMap sortowanie wzgle dem kluczy
6 6 Podstawowe operacje: przeglądanie kolekcji Interfejs List obsługuje indeksowanie elementów, np.: for(int i = 0; i < list.size(); ++i){ list.get(i); } for-each: for (Object o: collection) { /*...*/ } nie należy usuwać elementów z kolekcji, po której iterujemy (ConcurrentModificationException), działa również dla tablic; iterator: pozwala na usuwanie elementów n usuwać należy jedynie za pośrednictwem interfejsu iteratora! Iterator it = c.iterator(); while (it.hasnext()) { Object element = it.next(); if (/*...*/) { it.remove(); } }
7 Podstawowe operacje 7 Bulk operations operacje na wielu elementach kolekcji containsall, addall, removeall, retainall, clear Konwersja na tablice: Object[] toarray() zwraca kolekcję jako tablicę elementów typu Object, Type[] toarray(new Type[0]) zwraca kolekcję jako tablicę elementów typu Type
8 Sortowanie elementów kolekcji 8 Collections.sort(List list) sortowanie listy elementów typu Comparable Interfejs Comparable: pozwala na automatyczne sortowanie, int compareto(t other) zwracane wartości: n <0 gdy this mniejszy od other n 0 gdy this i other są równe n >0 gdy this większy od other
9 Sortowanie elementów kolekcji 9 boolean equals() metoda zdefiniowana w klasie Object (wszystkie klasy dziedziczą po Object) sprawdza czy obiekty są równe Gdy equals(other) zwraca true, metoda compareto(other) powinna zwracać 0! int hashcode() Jeśli nadpisujemy metodę equals() zawsze należy nadpisać również metodę hashcode() Gdy equals(other) zwraca true, metody hashcode() obu obiektów powinien zwracać tę samą wartość Wykorzystywana przez HashSet, HashMap itd.
10 Sortowanie elementów kolekcji 10 Nie wszystkie klasy dziedziczą po Comparable Collections.sort(List list, Comparator comp) Comparator<T> określa zasady porównywania elementów Jedna metoda: int compare(t o1, T o2) Comparator<String> comp = new Comparator<String>() public int compare(string o1, String o2) { return o1.length() - o2.length(); } };
11 Wybrane implementacje kolekcji 11 Interfejs Set: HashSet implementacja hash mapy, brak sortowania i stałej kolejności elementów, TreeSet implementacja struktury drzewiastej, zapewnia sortowanie, LinkedHashSet implementacja w postaci hash mapy i listy dwukierunkowej, zapewnia kolejnośc elementów; Interfejs List: ArrayList implementacja dynamicznie rozszerzalnej tablicy, LinkedList implementacja listy dwukierunkowej;
12 Wybrane implementacje kolekcji 12 Interfejs Queue: LinkedList, PriorityQueue implementacja kopca, zapewnia sortownie; Interfejs Map: HashMap brak sortowania, TreeMap sortowanie według kluczy, LinkedHashMap zachowana kolejność dodawania elementów.
13 Złożoność operacji 13 Kolekcja Dostęp losowy Wyszukiwanie Dodawanie ArrayList O(1) O(n) O(n) LinkedList O(n) O(n) O(1) HashSet O(1) O(1) O(1) HashMap O(1) O(1) O(1) TreeMap O(log(n)) O(log(n)) O(log(n)) PriorityQueue O(n)* O(n) O(log(n)) * tylko za pośrednictwem iteratora
14 Zewnętrzne biblioteki 14 Guava HashBiMap n Dwukierunkowe odwzorowanie MultiSet n Pozwala na duplikaty ArrayListMultiMap n Pozwala na duplikaty kluczy RangeSet n Zbiór rozłącznych niepustych zakresów Fastutil Eclipse Collections JCTools
15 API Stream 15 Dodatkowe operacje na kolekcjach umożliwia API Stream Lecz najpierw
16 16 Wyrażenia lambda
17 Wyrażenia lambda: motywacje Rozszerzenie języka o elementy programowania funkcyjnego, m.in.: Domknięcia Currying częściowa aplikacja funkcji Mapowanie, filtrowanie, redukcja Łatwość zrównoleglania kodu funkcyjnego Zwięzła składnia Wygoda użycia w połączeniu z API Stream
18 Wyrażenia lambda: realizacja Wprowadzone w wersji SE8 (marzec 2014) Zdefiniowane w kategoriach programowania obiektowego Nie stanowią wyłomu w obiektowości języka Nie są samodzielnym elementem języka Dają wygodniejszą składnię do wykonywania operacji obiektowych Zintegrowane w wielu miejscach w bibliotece standardowej, w szczególności w API Stream
19 Zwięzłość Przed wyrażeniami lambda: b.addactionlistener( new ActionListener() public void actionperformed(actionevent event) { handleevent(event); } }); Obecnie: b.addactionlistener(event -> handleevent(event));
20 Zwięzłość Przed: new Thread(new Runnable() public void run() { doinbackground(); } }); Obecnie: new Thread(() -> doinbackground());
21 Interfejsy funkcyjne Koncepcja wprowadzona w SE8 na potrzeby wyrażeń lambda Interfejsy posiadające pojedynczą metodę abstrakcyjną Instancje anonimowych klas wewnętrznych, implementujących interfejs funkcyjny, mogą zostać zastąpione wyrażeniem lambda
22 Podstawowa składnia Instancje anonimowych klas wewnętrznych: new InterfejsFunkcyjny() public ReturnType method(argumenty) { /*ciało*/ } }; Zastępowane przez wyrażenie lambda: (argumenty) -> {/*ciało*/}
23 Przykład Komparator: new Comparator<String>() public int compare(string s1, String s2){ return (s1.length() - s2.length()); } }; Komparator jako wyrażenie lambda: (String s1, String s2) -> { return (s1.length() - s2.length()); }
24 Cukier (składniowy) Typy argumentów po lewej stronie operatora -> są zazwyczaj zbędne Najczęściej mogą być wywnioskowane z deklaracji metody w interfejsie funkcyjnym Jeśli występuje pojedynczy argument, nawiasy () są opcjonalne Jeśli ciało składa się z pojedynczego wyrażenia, nawiasy {} są opcjonalne Słowo kluczowe return również jest opcjonalne
25 Przykład Komparator: new Comparator<String>() public int compare(string s1, String s2){ return (s1.length() - s2.length()); } }; Komparator jako wyrażenie lambda: (String s1, String s2) -> { return (s1.length() - s2.length()); } Z pominięciem elementów opcjonalnych: (s1, s2) -> s1.length() - s2.length()
26 Lambda a obiektowość Wyrażenia lambda są zdefiniowane w kategoriach programowania obiektowego Jakiego typu jest wyrażenie lambda? à typ interfejsu funkcyjnego, który implementuje Wiele sytuacji wymaga typowych interfejsów funkcyjnych
27 Typowe interfejsy funkcyjne: java.util.function Predicate<T> wejście: T, wyjście: boolean public interface Predicate<T> { boolean test(t t); } Function<T, R> wejście: T; wyjście: R Consumer<T> wejscie: T; wyjście: void Supplier<T> wejście: brak; wyjście: T BinaryOperator<T> wejście: T, T; wyjście: T
28 Zmienne typu interfejsu funkcyjnego Skoro znamy typ wyrażenia lambda, możemy przypisać je do zmiennej jak każdą instancję implementującą dany interfejs Runnable r = () -> doinbackground(); Thread thread = new Thread(r); Comparator<String> comparator = (s1, s2) -> s1.length() - s2.length(); Arrays.sort(array, comparator); Function<String, Integer> len = s -> s.length(); len.apply("platformy technologiczne");
29 Currying częściowe wiązanie parametrów Dwuargumentowe wyrażenie lambda: BiPredicate<String, String> startwithsimple = (letter, str) -> str.startswith(letter); Currying wymaga rozdzielenia parametrów na osobne wyrażenia lambda: Function<String, Predicate<String>> startswith = letter -> str -> str.startswith(letter); Związanie wartości pierwszego argumentu: Predicate<String> startswithp = startswith.apply("p"); Związanie wartości drugiego argumentu i wywołanie: boolean flag = startswithp.test("platformy");
30 Zasięgi, dostęp do zmiennych Wyrażenie lambda nie wprowadza nowego zasięgu Słowo kluczowe this odnosi się do klasy zewnętrznej, nie do instancji anonimowej klasy wewnętrznej Nie występuje KlasaZewnetrzna.this Można odwoływać się do pól klasy zewnętrznej Można odwoływać się do zmiennych lokalnych oznaczonych słowem kluczowym final Można odwoływać się do zmiennych lokalnych, które pozostają niezmienne, nawet jeśli nie posiadają słowa kluczowego final (ang. effectively final)
31 31 API Stream
32 API Stream Programowanie funkcyjne to nie tylko wyrażenia lambda Map Filter Reduce API Stream (SE8) wprowadza zestaw interfejsów pozwalających na pisanie kodu w duchu programowania funkcyjnego z użyciem wyrażeń lambda
33 API Stream prosty przykład Proceduralnie: for(integer i: list){ System.out.print(i); } API Stream: list.stream().foreach(i -> System.out.println(i)); pozyskanie strumienia wyrażenie lambda
34 API Stream prosty przykład Wywołanie metody stream() opcjonalne, jeśli chcemy użyć tylko foreach() Jeśli ciało wyrażenia lambda ogranicza się do wywołania metody o liście argumentów identycznej jak lista argumentów wyrażenia, to można je zastąpić referencją na metodę, np.: Lambda: i -> System.out.println(i) Referencja: System.out::println Wypisanie zawartości listy na konsolę: list.foreach(system.out::println);
35 Pozyskiwanie strumieni Z kolekcji: Collection<String> collection = /*...*/ Stream<String> stream = collection.stream(); Z tablicy, zbioru obiektów: Stream.of(T...) Z wyrażenia regularnego: Pattern.compile(",").splitAsStream("Waldemar,Korłub,KASK,ETI"); Z pliku: Files.lines(Paths.get("katalog", "plik.txt")) buduje ścieżkę do pliku z uwzględnieniem specyfiki systemu operacyjnego, np.: \ dla Windowsa; / dla UNIXa
36 Podstawowe metody foreach(consumer) map(function) filter(predicate) findfirst() findany() collect(collectors.tolist()) sorted()/sorted(comparator) skip(long) limit(long) count()
37 Złożony przykład #1 List<String> names = Files.lines(Paths.get("nazwiska.txt")) filtrowanie: zaczyna się na K mapowanie: na duże litery bez duplikatów.filter(s -> s.startswith("k")).map(string::touppercase).distinct().sorted().collect(tolist()); posortowane wyniki operacji w postaci listy
38 Złożony przykład #2a 38 class Developer { String name; String city; int age; List<String> languages; } /*...gettery i inne metody...*/
39 Złożony przykład #2b 39 List<Developer> developers = /*...*/ strumień deweloperów double avgage = developers.stream().filter(dev -> dev.getcity().equals("gdańsk")).maptoint(dev -> dev.getage()).average().orelse(0); obliczenie średniej może się nie udać zwraca 0, jeśli średnia nie występuje strumień liczb
40 Złożony przykład #2c 40 strumień deweloperów List<String> languages = developers.stream().map(developer::getlanguages) strumień zawierający listy języków List<String> Java C Ruby List<String> C C++ List<String> Java C# Perl.flatMap(Collection::stream) strumień nazw języków Java C Ruby C C++ Java C# Perl.distinct().sorted().collect(toList());
41 Grupowanie elementów 41 Map<String, List<Developer>> devsbycity = developers.stream().collect(groupingby(developer::getcity)); kolektor grupujący Klucz (String) Wartość (List<Developer>) Gdańsk Wrocław Warszawa
42 Operacje pośrednie i terminalne 42 Operacje pośrednie Zwracają kolejny strumień n np.: filter, map, sorted Odroczone wykonanie (ang. lazy execution) n Nie wykonują operacji dopóki nie nastąpi wywołanie metody terminalnej Operacje terminalne Przetwarzają dane w chwili wywołania n np.: collect, reduce, foreach Powodują wykonanie wszystkich wcześniejszych operacji pośrednich
43 Zrównoleglenie Kolekcja liczb: List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); Przetwarzanie sekwencyjne: list.stream(). map(n -> Integer.toString(n * 2) + " "). foreach(system.out::print); // Przetwarzanie równoległe: list.parallelstream(). map(n -> Integer.toString(n * 2) + " "). foreach(system.out::print); //
44 Parallel stream 44 Oparty na frameworku Fork/Join (Java SE7) Domyślnie wykorzystuje pulę wątków ForkJoinPool.commonPool() liczba_wątków_puli = liczba_rdzeni 1 Wykorzystuje jako watek roboczy również wątek, w którym wywołano.parallelstream() liczba_wątków_roboczych = liczba_rdzeni Wywołania.parallelStream() z różnych miejsc aplikacji domyślnie używają tej samej puli wątków! Uwaga na zagładzanie zadań
45 Parallel stream własna pula wątków 45 Możliwe jest zdefiniowanie własnej puli wątków: ForkJoinPool custompool = new ForkJoinPool(4); custompool.submit( () -> devs.parallelstream().foreach(/*...*/)); Jeśli strumień zwraca wartość: ForkJoinTask<Double> task = custompool.submit( () -> developers.parallelstream().maptoint(developer::getage).average().orelse(0)); Double avg = task.get(); // wywołanie blokujące
46 Parallel stream własna pula wątków 46 Można również użyć klasy CompletableFuture, np.: CompletableFuture<Double> future = CompletableFuture.supplyAsync( () -> developers.parallelstream().maptoint(developer::getage).average().orelse(0), new ForkJoinPool(4)); Double avg = future.get(); CompletableFuture pozwala na budowanie sekwencji powiązanych ze sobą współbieżnych zadań
47 47 Pytania?
Programowanie w języku Java. Kolekcje
Programowanie w języku Java Kolekcje Definicja Kolekcja to obiekt, który grupuje elementy danych (inne obiekty) i pozwala traktować je jak jeden zestaw danych, umożliwiając jednocześnie wykonywanie na
Java Collections Framework
Java Collections Framework Co to jest Java Collections Framework JCF Zunifikowana architektura do reprezentacji i manipulacji kolekcjami danych. Składa się z: Interfejsów Definuje abstrakcyjne typy możliwych
Kolekcje. Na podstawie:
Kolekcje Na podstawie: http://wazniak.mimuw.edu.pl Kolekcje w Javie Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór. Pozwala na zapis, odczyt, korzystanie z danych oraz
java.util.* :Kolekcje Tomasz Borzyszkowski
java.util.* :Kolekcje Tomasz Borzyszkowski Wstęp Kolekcje w Java dają programiście pewien standardowy sposób radzenia sobie z przetwarzaniem grup obiektów. Implementacja kolekcji w Java składa się z następujących
Programowanie Obiektowe (Java)
1. Wprowadzenie do kontenerów Wykład ósmy Kontenery s ą obiektami, które potrafi ą przechowywa ć inne obiekty w określony sposób. O kontenerach można myśle ć jako o gotowych do użycia strukturach danych.
Podstawy otwartych języków programowania Przechowywanie danych
Podstawy otwartych języków programowania Przechowywanie danych Wiktor Wandachowicz Sposoby przechowywania danych Typy podstawowe Pojedyncze obiekty Tablice obiektów i tablice typów podstawowych jednowymiarowe
Kolekcje - pakiet Java Collections Framework
Programowanie obiektowe Kolekcje - pakiet Java Collections Framework Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Definicja kolekcji
Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór.
Kolekcje Kolekcje w Javie Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór. Pozwala na zapis, odczyt, korzystanie z danych oraz ich wzajemną komunikację. Przykład: ręka
PROGRAMOWANIE FUNKCYJNE
PROGRAMOWANIE FUNKCYJNE ZAGADNIENIA: Funkcje Wyrażenia lambda Strumienie MATERIAŁY: https://fyingbytes.github.io/.../java8-part0.html http://www.oracle.com/technetwork/.../ma14-java-se-8-streams-2177646.html
Kolekcje - pakiet Java Collections Framework
Programowanie obiektowe Kolekcje - pakiet Java Collections Framework Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Programowanie obiektowe
Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski
Realizacja ekstensji klasy Paulina Strzelecka, Tomasz Roszkowski Przechowywanie obiektów (odwolañ do obiektów) w Javie typ wbudowany - tablica zbiór klas kontenerowych Paulina Strzelecka, Tomasz Roszkowski
Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego Łódź. Java podstawy języka, wykład 4 1
Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego 03.12.2010 Łódź Java podstawy języka, wykład 4 1 Stosując blokady (synchronizację) Można doprowadzić do zablokowania wszystkich wątków Zakleszczenie
GUI - projektowanie interfejsów cz. II
Katedra Inżynierii Wiedzy, Uniwersytet Ekonomiczny w Katowicach Wykład 2 Java Foundations Classes przyciski; pola tekstowe; panele; okna dialogowe; biblioteka Swing. Metodyka (paradygmat) programowania
Języki i metody programowania Java INF302W Wykład 3 (część 2)
Języki i metody programowania Java INF302W Wykład 3 (część 2) Autor Dr inż. Zofia Kruczkiewicz Autor, Zofia Kruczkiewicz Języki i metody programowania Java, wykład 3, część 2 1 STRUKTURA WYKŁADU 1. Systemowe
Kolekcje mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011
Kolekcje mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Kolekcja obiekt, który grupuje inne obiekty, traktując je jako jeden zestaw danych i pozwalający na wykonywanie operacji
Tworzenie aplikacji w języku Java
Tworzenie aplikacji w języku Java Wykład 2 Java Collections Framework Piotr Czapiewski Wydział Informatyki ZUT 2 października 2009 Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku
Programowanie obiektowe
Programowanie obiektowe Wykład 8: Tablice i kolekcje obiektów. 4/27/2013 S.Deniziak: Programowanie obiektowe - Java 1 Tablice class A { A [ ] a; A [ ] b=new A[5]; a b A [ ] c = {new A(), new A(), new A(),
Lista, Stos, Kolejka, Tablica Asocjacyjna
Lista, Stos, Kolejka, Tablica Asocjacyjna Listy Lista zbiór elementów tego samego typu może dynamicznie zmieniać rozmiar, pozwala na dostęp do poszczególnych elementów Typowo dwie implementacje: tablicowa,
Platformy Programistyczne Podstawy języka Java
Platformy Programistyczne Podstawy języka Java Agata Migalska 6 maja 2014 Plan wykładu 1 Sztuka wysławiania się w języku Java 2 Cały świat jest obiektem 3 Kolekcje 4 Zmienne i metody statyczne 5 Słowo
dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1
Ćwiczenie 1 Uruchamianie programu w Netbeans Uruchom środowisko Netbeans. Stwórz nowy projekt typu Java Application. Nadaj projektowi nazwę HelloWorld (Project Name), zwróć uwagę na folder, w którym zostanie
Kolekcje. object that groups multiple elements into a single unit
Kolekcje object that groups multiple elements into a single unit W wielu programach deklaracje typu: MyObject myreference; są uprawnione, jednak często zwłaszcza przy bardziej skomplikowanych programach
WIELOWĄTKOWOŚĆ. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska
WIELOWĄTKOWOŚĆ Waldemar Korłub Platformy Technologiczne KASK ETI Politechnika Gdańska Wydajność 2 Do 2005 roku wydajność komputerów poprawiano zwiększając częstotliwość taktowania procesora 1995: Pentium
Java niezbędnik programisty spotkanie nr 8. Kolekcje c.d.
Java niezbędnik programisty spotkanie nr 8 Kolekcje c.d. 1 Kontenery (rysunek pożyczony z Thinkin in Java ed. 3) Legenda: kreski-interfejsy kropki-kl. Abstr. 2 Przykład static Collection fill(collection
Programowanie w Javie - wykład 14 Podstawy programowania funkcyjnego
1 Programowanie w Javie - wykład 14 Podstawy programowania funkcyjnego Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/
Język JAVA podstawy. Wykład 4, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 4, część 3 1 Język JAVA podstawy Plan wykładu: 1. Podstawy modelowania obiektowego 2. Konstruktory 3. Dziedziczenie, związki pomiędzy klasami, UML 4. Polimorfizm 5. Klasy abstrakcyjne
Programowanie i projektowanie obiektowe
Programowanie i projektowanie obiektowe Kolekcje Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 1 / 24 Kolekcje Interfejsy Implementacje Algorytmy Marketspeak
Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016
Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa
JAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Interfejsy w Java. Przetwarzanie równoległe. Wątki.
Informatyka I Interfejsy w Java. Przetwarzanie równoległe. Wątki. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Interfejsy w Java Pojęcie interfejsu w programowaniu Deklaracja
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych kolekcji. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych
Programowanie w Javie wykład 15 Elementy programowania funkcyjnego cd.
Programowanie w Javie wykład 15 1 Elementy programowania funkcyjnego cd. Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/
Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().
Wątki Streszczenie Celem wykładu jest wprowadzenie do obsługi wątków w Javie. Czas wykładu 45 minut. Definiowanie wątków jako klas potomnych Thread Nadpisanie metody run(). class Watek extends Thread public
Comparable<Klasa_uzytkownika>
Przechowywanie obiektów w pamięci programu Część II (obiekty typów definiowanych przez użytkownika) Obiekty typów definiowanych przez użytkownika muszą być przystosowane do przechowywania w pojemnikach
Klasy abstrakcyjne i interfejsy
Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie
Kolekcje w Javie cz. 1
Kolekcje w Javie cz. 1 Programowanie obiektowe Jacek Sroka na podstawie materiałów Janusza Jabłonowskiego 8 kwietnia 2013 Po co są kolekcje? Po co są kolekcje? A po co są programy? Żeby manipulować danymi.
2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne
Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie
Java: kilka brakujących szczegółów i uniwersalna nadklasa Object
Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów
Kurs programowania. Wykład 9. Wojciech Macyna
Wykład 9 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista czy
Programowanie obiektowe
Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do
Programowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.
Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016
Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac
Dawid Gierszewski Adam Hanasko
Dawid Gierszewski Adam Hanasko Chcemy stworzyć klasę w której możemy przechowywać dwie zmienne dowolnych typów Tworzymy tyle różnych klas ile potrzeba: Class ParaInt{ int pierwszy; Int drugi; Class ParaButow{
import java.util.*; public class ListExample { public static void main(string args[]) { List<String> lista1= new ArrayList<String> ();
collection Zadanie.1 Napisać program, który: a) tworzy listę (implementacja tablicy ArrayList), dodając po jednym elemencie (korzystając z operacji podstawowej add). Następnie wypisuje całą listę, drugi
Język Java część 2 (przykładowa aplikacja)
Programowanie obiektowe Język Java część 2 (przykładowa aplikacja) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Java Java przykładowa
Programowanie w Javie- wykład 12 Kolekcje (zbiory)
1 Programowanie w Javie- wykład 12 Kolekcje (zbiory) Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 Barteczko, JAVA Uniwersalne techniki
Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]
1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie
Java: interfejsy i klasy wewnętrzne
Java: interfejsy i klasy wewnętrzne Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 INTERFEJSY Interfejs to opis co klasa implementująca dany interfejs powinna robić, ale bez określania
Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej
Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,
1 Atrybuty i metody klasowe
1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich
Wstęp do ruby dla programistów javy
czyli dlaczego java ssie Akademickie Stowarzyszenie Informatyczne 26 lutego 2011 Podstawowe cechy Ruby vs Java Wieloparadygmatowy Imperatywny Typowanie Silne Dynamiczne Otwarte klasy Interpretowany Wszystko
Wykład 2 Składnia języka C# (cz. 1)
Wizualne systemy programowania Wykład 2 Składnia języka C# (cz. 1) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Budowa projektu 2 Struktura programu
Java SE Laboratorium nr 7. Temat: Kolekcje
Java SE Laboratorium nr 7 Temat: Kolekcje 1 1. Definicja i idea Często w programach zachodzi potrzeba przechowywania w pamięci nieznanej z góry liczby elementów. Możliwość taką dostarczają tzw. kontenery
Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego
Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Procesy i wątki Proces posiada samodzielne środowisko wykonawcze. Proces posiada własny zestaw podstawowych zasobów w czasie wykonywania; W szczególności, każdy proces ma własną przestrzeń pamięci. W uproszczeniu
JDK 8 WPROWADZENIE DO WYBRANYCH ZAGADNIEŃ
JDK 8 WPROWADZENIE DO WYBRANYCH ZAGADNIEŃ by Szymon Stępniak / @wololock / crafted with reveal.js ABOUT ME Software Developer @ Ideazone (Torun, Poland) Java/Groovy, Grails contributor, TDD-holic @wololock
WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy
WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy Pojęcie klasy Program napisany w języku Java składa się ze zbioru klas. Każda klasa zawiera
Algorytmy i Struktury Danych. Anna Paszyńska
Algorytmy i Struktury Danych Anna Paszyńska Tablica dynamiczna szablon Array Zbiory Zbiory template class Container {public: virtual ~Container() { }; virtual int Count() const = 0;
Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1
Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie
Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++
Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu
Kompletna dokumentacja kontenera C++ vector w - http://www.cplusplus.com/reference/stl/vector/
STL, czyli o co tyle hałasu W świecie programowania C++, hasło STL pojawia się nieustannie i zawsze jest o nim głośno... często początkujące osoby, które nie znają STL-a pytają się co to jest i czemu go
Dokumentacja do API Javy.
Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu
Programowanie obiektowe
Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.
Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
PHP: bloki kodu, tablice, obiekty i formularze
1 PHP: bloki kodu, tablice, obiekty i formularze SYSTEMY SIECIOWE Michał Simiński 2 Bloki kodu Blok if-else Switch Pętle Funkcje Blok if-else 3 W PHP blok if i blok if-else wyglądają tak samo i funkcjonują
Programowanie w Javie- wykład 11 Kolekcje (listy)
1 Programowanie w Javie- wykład 11 Kolekcje (listy) Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 Barteczko, JAVA Uniwersalne techniki
Typy sparametryzowane
Typy sparametryzowane Streszczenie Celem wykładu jest zaprezentowanie typów sparametryzowanych. Czas wykładu 90 minut. Istnieją algorytmy, których zasada działania nie zależy od typu danych wejściowych.
TYPY GENERYCZNE (GENERICS)
TYPY GENERYCZNE (GENERICS) ZAGADNIENIA: wprowadzenie, konwencje, metody, typy surowe parametry ograniczone podtypy, dziedziczenie, symbole wieloznaczne, ograniczenia. MATERIAŁY: http://docs.oracle.com/javase/tutorial/java/generics/
Podstawy programowania. Podstawy C# Tablice
Podstawy programowania Podstawy C# Tablice Tablica to indeksowany zbiór elementów Tablica jest typem referencyjnym (deklaracja tworzy tylko referencję, sama tablica musi być utworzona oddzielnie, najprościej
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje na logice Objective-C bez kompatybilności
Polimorfizm. dr Jarosław Skaruz
Polimorfizm dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? finalne składowe klasy abstrakcyjne interfejsy polimorfizm Finalne składowe Domyślnie wszystkie pola i metody
Współbieżność w środowisku Java
Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych
Java. Michał Wójcik. michal.wojcik@eti.pg.gda.pl http://mwojcik.eti.pg.gda.pl
Java Michał Wójcik michal.wojcik@eti.pg.gda.pl http://mwojcik.eti.pg.gda.pl Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechnika Gdańska 5 kwietnia
Programowanie w języku Java 7 z biblioteką SWING
Programowanie w języku Java 7 z biblioteką SWING Opis Szkolenie przeznaczone jest dla osób bez większego doświadczenia w programowaniu. Pokrywa ono większość składni języka Java, skupiając się na podstawowych
Programowanie obiektowe
Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;
Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,
Programowanie obiektowe
Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych
Programowanie i struktury danych
Programowanie i struktury danych 1 / 30 STL Standard Template Library, STL (ang. = Standardowa Biblioteka Wzorców) biblioteka C++ zawierająca szablony (wzorce), które umożliwiają wielokrotne użycie. Główne
Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania
Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania Opis biznesowy świata rzeczywistego Wymagania funkcjonalne i niefunkcjonalne aplikacji Diagram przypadków życia Diagramy klas i sekwencji:
Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43
Programowanie w C++ Wykład 6 Katarzyna Grzelak 1 kwietnia 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Podstawy Programowania Obiektowego
Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja
Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7
Instrukcja 7 Laboratoria 9, 10 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji
Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/
Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i
Klasy abstrakcyjne, interfejsy i polimorfizm
Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z
Języki i techniki programowania Ćwiczenia 2
Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...
Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)
Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.) Kontenery - - wektor vector - - lista list - - kolejka queue - - stos stack Kontener asocjacyjny map 2016-01-08 Bazy danych-1 W5 1 Kontenery W programowaniu
KOLEKCJE JAVY API: NAJPROSTSZE PODSTAWY
KOLEKCJE JAVY API: NAJPROSTSZE PODSTAWY I. TABLICE, CZYLI PODSTAWOWY RODZAJ KOLEKCJI: ARRAYS Wady i zalety 1. (Na rozgrzewkę) Zdefiniuj dwie klasy w programie (mogą być nawet puste na nasze potrzeby).
Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),
Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których
Programowanie obiektowe
Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje
Wykład 3 Składnia języka C# (cz. 2)
Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest
KOTLIN. Język programowania dla Androida
KOTLIN Język programowania dla Androida Historia Kotlin został opracowany przez firmę JetBrains Prace rozpoczęto w 2011 r., od 2012 r. dostępny na licencji Apache 2. Nazwa pochodzi od wyspy koło Petersburga
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja
Programowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 7 Katarzyna Grzelak 23 kwietnia 2018 K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40 Standard Template Library (STL) K.Grzelak (Wykład 7) Programowanie w C++ 2 / 40 C++ Templates
Wykład 4. Klasa List Kolejki Stosy Słowniki
Wykład 4 Klasa List Kolejki Stosy Słowniki Klasa List Poważną niedogodnością tablic jako kolekcji danych jest fakt, że muszą one mieć stały rozmiar. Programista musi wiedzieć z góry ile miejsca powinien
Aplikacje w Javie- wykład 11 Wątki-podstawy
1 Aplikacje w Javie- wykład 11 Wątki-podstawy Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/ http://docs.oracle.com/javase/9/docs/
Java niezbędnik programisty spotkanie nr 9. Java 2 Platform, Standard Edition 5.0
Java niezbędnik programisty spotkanie nr 9 Java 2 Platform, Standard Edition 5.0 1 Historia 1991 rozpoczyna się the Green Project (to jeszcze era MS DOS) 1992 pojawia się język Oak 1995 zmiana nazwy z
Tworzenie aplikacji w języku Java
Tworzenie aplikacji w języku Java Wykład 1 Piotr Czapiewski Wydział Informatyki ZUT 2 października 2009 Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009
Programowanie obiektowe i zdarzeniowe
Marek Tabędzki Programowanie obiektowe i zdarzeniowe 1/23 Programowanie obiektowe i zdarzeniowe wykład 6 polimorfizm Na poprzednim wykładzie: dziedziczenie jest sposobem na utworzenie nowej klasy na podstawie
Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca 2009. Norbert Potocki db4o
Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie 1 czerwca 2009 Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie = bjects = database for objects w pełni obiektowa
Dziedziczenie. Tomasz Borzyszkowski
Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.