API STREAM WYRAŻENIA LAMBDA

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

Download "API STREAM WYRAŻENIA LAMBDA"

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

Bardziej szczegółowo

Java Collections Framework

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

Bardziej szczegółowo

Kolekcje. Na podstawie:

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

Bardziej szczegółowo

java.util.* :Kolekcje Tomasz Borzyszkowski

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

Bardziej szczegółowo

Programowanie Obiektowe (Java)

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

Bardziej szczegółowo

Podstawy otwartych języków programowania Przechowywanie danych

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

Bardziej szczegółowo

Kolekcje - pakiet Java Collections Framework

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

PROGRAMOWANIE FUNKCYJNE

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

Bardziej szczegółowo

Kolekcje - pakiet Java Collections Framework

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

Bardziej szczegółowo

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

GUI - projektowanie interfejsów cz. II

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Tworzenie aplikacji w języku Java

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

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

Lista, Stos, Kolejka, Tablica Asocjacyjna

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

Bardziej szczegółowo

Platformy Programistyczne Podstawy języka Java

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Kolekcje. object that groups multiple elements into a single unit

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

Bardziej szczegółowo

WIELOWĄTKOWOŚĆ. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie w Javie - wykład 14 Podstawy programowania funkcyjnego

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/

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie i projektowanie obiektowe

Programowanie i projektowanie obiektowe Programowanie i projektowanie obiektowe Kolekcje Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 1 / 24 Kolekcje Interfejsy Implementacje Algorytmy Marketspeak

Bardziej szczegółowo

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

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

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

Bardziej szczegółowo

Interfejsy w Java. Przetwarzanie równoległe. Wątki.

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

Bardziej szczegółowo

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

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

Bardziej szczegółowo

Programowanie w Javie wykład 15 Elementy programowania funkcyjnego cd.

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/

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Comparable<Klasa_uzytkownika>

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

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

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

Bardziej szczegółowo

Kolekcje w Javie cz. 1

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna

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

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Dawid Gierszewski Adam Hanasko

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Język Java część 2 (przykładowa aplikacja)

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Java: interfejsy i klasy wewnętrzne

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

1 Atrybuty i metody klasowe

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

Bardziej szczegółowo

Wstęp do ruby dla programistów javy

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Java SE Laboratorium nr 7. Temat: Kolekcje

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

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

Bardziej szczegółowo

JDK 8 WPROWADZENIE DO WYBRANYCH ZAGADNIEŃ

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

Bardziej szczegółowo

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 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

Bardziej szczegółowo

Algorytmy i Struktury Danych. Anna Paszyńska

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

Bardziej szczegółowo

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 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

Bardziej szczegółowo

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Dokumentacja do API Javy.

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

Bardziej szczegółowo

Programowanie obiektowe

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.

Bardziej szczegółowo

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 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

Bardziej szczegółowo

PHP: bloki kodu, tablice, obiekty i formularze

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Typy sparametryzowane

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

Bardziej szczegółowo

TYPY GENERYCZNE (GENERICS)

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

Bardziej szczegółowo

Podstawy programowania. Podstawy C# Tablice

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

Bardziej szczegółowo

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.) 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

Bardziej szczegółowo

Polimorfizm. dr Jarosław Skaruz

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

Bardziej szczegółowo

Współbieżność w środowisku Java

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

Bardziej szczegółowo

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 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

Bardziej szczegółowo

Programowanie w języku Java 7 z biblioteką SWING

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

Bardziej szczegółowo

Programowanie obiektowe

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;

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

Programowanie i struktury danych

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

Bardziej szczegółowo

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

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:

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

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

Bardziej szczegółowo

Podstawy Programowania Obiektowego

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

Bardziej szczegółowo

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

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

Bardziej szczegółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

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

Bardziej szczegółowo

Klasy abstrakcyjne, interfejsy i polimorfizm

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

Bardziej szczegółowo

Języki i techniki programowania Ćwiczenia 2

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

KOLEKCJE JAVY API: NAJPROSTSZE PODSTAWY

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

KOTLIN. Język programowania dla Androida

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

Bardziej szczegółowo

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 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

Bardziej szczegółowo

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 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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Tworzenie aplikacji w języku Java

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

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe

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

Bardziej szczegółowo

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca 2009. Norbert Potocki db4o

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

Bardziej szczegółowo

Dziedziczenie. Tomasz Borzyszkowski

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.

Bardziej szczegółowo