Języki i paradygmaty programowania - Java
Bibliografia
Publications
2007
- Krzysztof Rychlicki-Kicior, J2ME – Praktyczne Projekty, 2007
2006
- Bruce Eckel, Thinking in Java, 2006
2003
- Robert Lafore, Java – Algorytmy i struktury danych, 2003
2002
- Kim Topley, J2ME in a Nutshell, 2002
2001
- Elliote Rusty Harold, Java – Programowanie Sieciowe, 2001
1998
- Barry Bone, Java dla programistów C i C++, 1998
Plan wykładów
- Wprowadzenie
- Obiekt i obiektowość
- Interfejs
- Dziedziczenie
- Polimorfizm
- Własności języka Java
- Klasa, pola, metody
- Słowo kluczowe static
- Komentowanie kodu
- Operatory w Javie
- Operatory, Inicjalizacja, proste I/O
- Operator ?:,
- Operator +dla napisów
- Przepływ sterowania w programie
- instrukcje sterujące, if-then-else, while, for, foreach, break, continue
- Inicjalizacja obiektu, konstruktor, przeciążanie konstruktora i innych funkcji
- Garbage collector
- Tablice, metody o zmiennej ilości parametrów
- Proste I/O
- Kontrola dostępu, Klasy, Polimorfizm
- Pakiet
- Biblioteka jar
- Modyfikatory dostępu w Javie
- Zasięg pakietowy
- Wielokrotne wykorzystanie klas
- Inicjalizacja klasy bazowej
- Kompozycja i dziedziczenie
- Słowo kluczowe final
- Rzutowanie w górę (upcasting)
- Interfejsy, klasy abstrakcyjne, klasy wewnętrzne i zagnieżdżone
- Polimorfizm
- Klasy abstrakcyjne
- Interfejsy, pola w interfejsach
- Interfejsy zagnieżdżone
- Klasy abstrakcyjne
- Klasy wewnętrzne (ang. inner classes)
- Lokalne klasy wewnętrzne
- Anonimowe klasy wewnętrzne
- Wzorzec Factory Method i klasy anonimowe
- Klasy zagnieżdżone
- Obsługa błędów w Javie, proste RTTI
- Obsługa błędów w Javie
- zgłaszanie wyjątków
- hierarchia wyjątków
- wyjątki z parametrami
- rejestrowanie (logowanie) wyjątków
- specyfikacja wyjątków
- sekwencje wyjątków, ponowne zgłaszanie wyjątków, wyjątki w konstruktorze
- klauzula finally, zagubienie wyjątku
- Proste RTTI
- sprawdzanie typów, tworzenie obiektów
- Typy Kontenerowe w Javie, RTTI
- RTTI (cd..)
- ładowanie klasy
- referencje klas uogólnionych
- refleksja
- Kolekcje obiektów
- taksonomia, wypisywanie kontenerów
- List, ArrayList, LinkedList
- Stack, Set, HashSet, TreeSet
- Map, HashMap, Queue, PriorityQueue
- Iterowanie po kolekcjach
- Napisy i Wyrażenia Regularne w Javie
- Napisy w Javie
- Dodawanie napisów
- operator +
- StringBuilder
- Niezamierzona rekursja
- toString()
- Operacje klasy String()
- Formatowanie napisu, Formatter
- Wyrażenia regularne
- Klasy Pattern i Matcher
- rodzaje wyrażeń regularnych
- Operacje na napisach z wykorzystaniem wyrażeń regularnych
- Operacje wejścia/wyjścia
- Podstawowe I/O
- Klasa File
- pliki i katalogi
- interfejs klasy File
- Strumienie
- Wejście/Wyjście Unicode (Reades & Writers)
- Typowe zastosowania
- buforowanie, obsługa plików tekstowych, pliki binarne, pliki o dostępie swobodnym
- Serializacja i Eksternalizacja
- NIO (New I/O)
- kanały, bufory bajtów, struktura NIO
- Kompresja ZIP/GZIP
- Współbieżność cz. 1
- Współbieżność – pojęcia
- Interfejs Runnable – zadania (ang. tasks), pule wątków
- Egzekutory – mechanizm uruchamiania zadań
- Zadania z możliwością zwracania wyników przetwarzania
- Priorytet wątku, operacje na wątku
- Wątki demonów, łączenie wątków, zadania jako klasy wewnętrzne
- Obsługa wyjątków w wątkach
- Współdzielenie zasobów i synchronizacja za pomocą:
- monitorów
- blokad jawnych
- Współbieżność cz. 2
- Klasy/operacje atomowe
- Synchronizacja i pamięć wątku
- Stany w jakich może znajdować się wątek
- Przerwanie wątku – metoda interrupt()
- Sytuacje, w których wątek nie może być przerwany metodą interrupt() i jak sobie z nimi radzić
- Status przerwania wątku
- Synchronizacja: wait(), notifyAll(), await(), signalAll()
- Zakleszczenia, kolejki blokujące
- Komunikacja między wątkami poprzez potoki
- Współbieżność cz. 3, Programowanie Sieciowe
- Współbieżność
- CountDownLatch, CyclicBarrier, DelayQueue
- Semafor
- semafor binarny. semafor w Javie
- Programowanie sieciowe
- warstwy modelu ISO/OSI
- protokoły: TCP/UDP/IP, pojęcia: Adres IP, Porty, Gnizada
- Klasy: InetAddress i URL
- HTML i Swing
- Gniazdo klienckie – nawiązywanie połączenia
- Gniazdo serwerowe – przykład prostego serwera
- Podstawy biblioteki Swing
- Java GUI, proste okienko
- Przycisk
- Model zdarzeń w bibliotece Swing
- Obszary tekstowe
- Layouty: BorderLayout, FlowLayout, GridLayout itd.
- Zdarzenia
- Różne rodzaje przycisków, grupy przycisków
- Ikony, Ramki, Listy rozwijane
- Edytowalny panel
- Zakładki, Okienka Wiadomości
- Menu, Okno Dialogowe Pliku
- Java 2 Micro Edition
- J2ME – wprowadzenie
- Instalacja środowiska
- Cykl życia MIDlet'ów
- Instalacja aplikacji na użądzeniu mobilnym
- Interfejs użytkownika
- TextBox, Komendy
- Formularz i elementy formularza
- Obsługa zdarzeń
- Przykład w pełni funkcjonalnego programu
- klient usługi whois na urządzenia mobilne
- Wykład podsumowywujący