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

Podobne dokumenty
Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

Programowanie Obiektowe (Java)

Podstawy otwartych języków programowania Przechowywanie danych

java.util.* :Kolekcje Tomasz Borzyszkowski

Kolekcje - pakiet Java Collections Framework

Kolekcje. Na podstawie:

Programowanie w języku Java. Kolekcje

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

Lista, Stos, Kolejka, Tablica Asocjacyjna

Kolekcje - pakiet Java Collections Framework

Java Collections Framework

GUI - projektowanie interfejsów cz. II

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

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

Java SE Laboratorium nr 7. Temat: Kolekcje

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

Dziedziczenie. dr Jarosław Skaruz

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

Programowanie obiektowe

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

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

Programowanie obiektowe i język Java

Kurs programowania. Wykład 9. Wojciech Macyna

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

Języki i techniki programowania Ćwiczenia 2

Kolekcje obiektów. Wyj tki.

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

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

Podstawy programowania obiektowego

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Platformy Programistyczne Podstawy języka Java

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

KOLEKCJE JAVY API: NAJPROSTSZE PODSTAWY

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Tytuł szkolenia: Tworzenie wydajnego oprogramowania w języku Java - techniki zaawansowane

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

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Tworzenie aplikacji w języku Java

Algorytmy i Struktury Danych.

Comparable<Klasa_uzytkownika>

Dawid Gierszewski Adam Hanasko

Kolekcje w Javie cz. 1

Wykład 6: Dziedziczenie

SZKOLENIE. Programowanie w języku Java. tel.: ; fax: ,

jlabel: void setalignment(label.center/left/right) - wyrównanie String gettext() pobiera aktualny tekst napisu void settext(string text) ustawia

Wykład 1: Wprowadzenie

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

Enkapsulacja, dziedziczenie, polimorfizm

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

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

Programowanie obiektowe - 1.

Co jeszcze mogą nam dać adnotacje? Adam Warski

PARADYGMATY PROGRAMOWANIA Wykład 4

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

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

Programowanie obiektowe Object programming. Elektrotechnika II stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny)

Programowanie obiektowe

Języki i Techniki Programowania II. Wykład 7. Współbieżność 1

Wykład 2: Podstawy Języka

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

J. Ułasiewicz Programowanie aplikacji współbieżnych 1

Programowanie obiektowe

Programowanie Komponentowe Zarządzanie obiektami: kontenery

Programowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40

Technologie i usługi internetowe cz. 2

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Java Język programowania

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

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Dziedziczenie. Tomasz Borzyszkowski

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Materiały do zajęć VII

Programowanie obiektowe

Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

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

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

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

TYPY GENERYCZNE (GENERICS)

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Wątki w Javie. Piotr Tokarski

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Podstawy Programowania Obiektowego

Język C++ wykład VIII

Wykład 8: Obsługa Wyjątków

Podstawy Programowania C++

Wykład 5: Więcej o Klasach i Metodach

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Programowanie Równoległe i Rozproszone

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

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

Tworzenie aplikacji w języku Java

Kurs WWW. Paweł Rajba.

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie i projektowanie obiektowe

SOP2 - semafory. grudzień

LABARATORIUM 9 TESTY JEDNOSTKOWE JUNIT 3.8

Transkrypt:

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 (deadlock), blokada wzajemna Klasyczny przykład Problem Ucztujących Filozofów (E. Dijkstra) Java podstawy języka, wykład 4 2

Filozof Myśli lub je do jedzenia potrzebuje dwu sztućców (widelce) 5-ciu filozofów F Filozofowie są biedni więc tylko 5 sztućców W F Siedzą przy okrągłym stole Filozof najpierw podnosi W widelec po lewej stronie potem po prawej F W W W F F Java podstawy języka, wykład 4 3

Program może się zablokować jeżeli 1. Wzajemne wykluczanie przy dostępie do wspólnego zasobu 2. Przynajmniej jeden wątek posiada zasób (blokuje go) i oczekuje na inny zasób 3. Nie ma możliwości wywłaszczania zasobów, sam wątek musi się zrzec zasobu 4. Możliwość zapętlonego oczekiwania Muszą być spełnione wszystkie te warunki jednocześnie! Java podstawy języka, wykład 4 4

Wystarczy nie spełnić choć jednego z warunków Np. Odwrócić ostatniego filozofa Bierze widelce w odwrotnej kolejności Oczekując zwalniać zasoby np. wykorzystać metody wait() i notify() Java nie posiada narzędzi chroniących przed takim przypadkiem Java podstawy języka, wykład 4 5

Trudno wyszukać błędy Dostęp do zasobów Zakleszczenie Problemy z Testowaniem Błąd może występować bardzo rzadko Poprawa Błędów Drobne Korekty Zaprojektowanie programu od nowa Najlepiej unikać przy projektowaniu Java podstawy języka, wykład 4 6

Wykonywanie wiele czynności jednocześnie Zadania mogą na siebie wpływać Potrzebna dobra diagnoza potencjalnych luk i błędów Zły projekt prowadzi do problemów BARDZO TRUDNYCH DO WYKRYCIA Klientowi nie działa a u nasz przy wszystkich testach jest ok. Java podstawy języka, wykład 4 7

Zalety Lepsze wykorzystanie sprzętu Czytelność kodu Wygodny Interfejs Użytkownika Wady Spowolnienie przy obsłudze wątków i synchronizacji Wzrost złożoności projektu Patologie (jednoczesna zmiana zasobów, zakleszczenie ) Różnice pomiędzy platformami Java podstawy języka, wykład 4 8

Przechowywanie Obiektów Pojedynczo W Tablicach Ustalony rozmiar Taki sam dostęp do wszystkich obiektów Kontenery Elastyczny rozmiar Wiele wersji = wiele zastosowań Java podstawy języka, wykład 4 9

Java 4 Omawiane na tym wykładzie Standard na telefony komór kowe Java 5 Wielkie zmiany Typy uogólnione Kompatybilność wstecz Java podstawy języka, wykład 4 10

źródło: Thinking in Java ed. 3. Java podstawy języka, wykład 4 11

Lista List (interfejs) ArrayList LinkedList Zbiory Set (interfejs) TreeSet HashSet LinkedHashSet - szybki dostęp, wolne dodawanie i zmiany - zoptymalizowany dostęp sekwencyjny - uszeregowany zbiór - zoptymalizowane wyszukiwanie - połączenie powyższych Java podstawy języka, wykład 4 12

Odwzorowania (Mapy) Map (interfejs) HashMap LinkedHashMap TreeMap WeakHashMap IdentityHashMap - stały czas dostępu - to samo plus zachowanie kolejności - uszeregowany zbiór - możliwa współpraca z Garbage Collector - jak HashMap ale inaczej porównuje Java podstawy języka, wykład 4 13

Dodawanie elementów add(object) put(object, Object) Pobieranie elementów z kontenera get(int) get(object) Wykorzystanie Iteratorów poruszanie się po kontenerze next( ) - pobieranie następnego elemetu hasnext() Java podstawy języka, wykład 4 14

Tablica indeksowany zbór elementów Ustalony rozmiar (przy inicjalizacji) JVM kontroluje przekroczenie zakresu RuntimeException Stały czas dostępu do wszystkich elementów Dodatkowe metody i pola.length.clone(),.equals().tostring() Java podstawy języka, wykład 4 15

java.util.arrays przydatne metody.binarysearch().fill().sort().aslist() Przyklad4_1 Java podstawy języka, wykład 4 16

Listy (podstawowe własności) Zmienny rozmiar Nieokreślony typ danych metody i pola add() get() size() Java podstawy języka, wykład 4 17

Listy (podstawowe typy) ArrayList rozszerzalna tablica LinkedList Stos, kolejka addfirst(), addlast() getfirst(), getlast() removefirst(), removelast() Java podstawy języka, wykład 4 18

Interfejs pomocniczy dla Kontenerów Obiekt pośredniczący metody hasnext() next() remove() Przykład4_2 Java podstawy języka, wykład 4 19

Implementacja pojęcia zbioru Nieokreślony rozmiar Elementy są unikatowe nie przyjmie ponownie tego samego obiektu Kolejność ma mniejsze znaczenie Brak metody get() LinkedHashSet, TreeSet metoda contains() Przykład4_3 Java podstawy języka, wykład 4 20

Odwzorowanie tablica asocjacyjna Dwa elementy Klucz = Wartość Klucz musi być unikatowy Przykład4_4 Java podstawy języka, wykład 4 21

Kontener nie może zawierać typów podstawowych int, float, double, boolean, Typy Opakowujące (Wrappers) Integer, Float, Double, Boolean, Obiekty dowolnych klas Kontenery typu Hash używają metody hashcode(), equals() Ich brak może powodować problemy Przykład4_5 Java podstawy języka, wykład 4 22

hashcode() Nie musi być unikatowa Nie może zależeć od momentu wywołania Taka sama dla identycznych obiektów Standardowo w Javie hashcode() <-> adres obiektu equals(object) Standardowo equals(object) porównanie adresów Java podstawy języka, wykład 4 23

Dowolny obiekt Przeładowanie metod hashcode() equals() Bez tego całkiem inne działanie Przykład4_6 Java podstawy języka, wykład 4 24

Java 5 = dużo nowych elementów Kontener Można definiować typ danych Przyklad4_7 Java podstawy języka, wykład 4 25

RTTI (Run-time type information) Identyfikacja typu w trakcie wykonywania Dwa podejścia Tradycyjne RTTI Refleksja Po co nam RTTI Jak po użyciu polimorfizmu określić pierwotny typ obiektu? Java podstawy języka, wykład 4 26

Dla każdej klasy programu Istnieje obiekt Class Tworzony przy kompilacji Znajduje się wewnątrz pliku.class Tradycyjne RTTI wykorzystanie obiektu Class Przykład4_8 Literały klas NazwaKlasy.class Java podstawy języka, wykład 4 27

Polimorfizm Przykład4_9 Rzutowanie Kompilator sprawdza czy można rzutować, inaczej wyrzuci wyjątek instanceof Bezpieczne rzutowanie Przykład4_10 Sprawdzanie typu w trakcie wykonywania Literał.isInstance() Przykład4_11 Java podstawy języka, wykład 4 28

Obiektowość Kapsułkowanie (enkapsulacja) Poziomy dostępu private, protected RTTI Złamanie tego paradygmatu Przyklad4_12 setaccessible(boolean) Java podstawy języka, wykład 4 29