Szczegółowy spis treści
1. Budowa i ponowne wykorzystanie klas
1. Abstrakcja i hermetyzacja
2. Wykorzystanie składowych statycznych
3. Inicjacje
4. Przeciążanie metod i konstruktorów
5. Zastosowanie słowa kluczowego this
6. Ponowne wykorzystanie klas: kompozycja i dziedziczenie
6.1. Kompozycja
6.2. Dziedziczenie
7. Przedefiniowanie metod
7.1. Pojęcie przedefiniowania metod
7.2. Przedefiniowanie i klauzula throws
7.3. Przedefiniowanie a przesłanianie i pokrywanie
7.4. Kowariantne typy wyników
8. Rzutowanie typów referencyjnych
8.1. Konwersje referencyjne
8.2. Stwierdzanie typu
2. Polimorfizm, interfejsy i klasy wewnętrzne
1. Metody wirtualne i polimorfizm
2. Znaczenie polimorfizmu
3. Metody i klasy abstrakcyjne
4. Interfejsy
5. Użyteczność interfejsów: przykłady "for-each" i formatowania
6. Klasy wewnętrzne
6.1. Pojęcie klasy wewnętrznej
6.2. Anonimowe klasy wewnętrzne
6.3. Wewnętrzne klasy lokalne
6.4. Anonimowe klasy wewnętrzne a domknięcia i tablice funkcji
7. Zaawansowane użycie wyliczeń (enum)
3. Typy i metody sparametryzowane (generics)
1. Wprowadzenie
2. Typy surowe i czyszczenie typów
3. Restrykcje
4. Ograniczenia parametrów typu
5. Parametry uniwersalne (wildcards)
6. Metody sparametryzowane i konkludowanie typów
4. Wprowadzenie do programowania współbieżnego
1. Podstawowe pojęcia: procesy i wątki
2. Jak stworzyć i uruchomić nowy wątek?
3. Kończenie pracy wątku
4. Synchronizacja wątków
5. Koordynacja wątków
6. Stany wątków
7. Wstrzymywanie i przerywanie wątków
8. Priorytety wątków
9. Demony i grupy
10. Zliczanie czasu i zadania czasowe
11. Pułapki programowania wspólbieżnego
5. Strumienie
1. Ogólny obraz: pojęcie strumienia i pakietu we-wy Javy
2. Klasy strumieniowe
3. Strumieniowe klasy przedmiotowe. Wiązanie strumieni ze źródłem/odbiornikiem
4. Klasy przetwarzające (przekształacanie danych w trakcie operacji na strumieniach)
5. Hierarchie dziedziczenia klas strumieniowych
6. Buforowanie
7. Strumienie binarne
8. Kodowanie
9. Serializacja obiektów
10. Potoki
11. Obiekty plikowe
12. Pliki o dostępie swobodnym
13. Archiwizacja, kompresja i dekompresja
14. Skaner i formator
6. Kolekcje
1. Architektura kolekcji (JCF). Interfejsy i implementacje
2. Ogólne operacje na kolekcjach. Operacje opcjonalne i grupowe.
3. Iteratory
4. Przykład: uniwersalne działania na kolekcjach
5. Listy i iteratory listowe
6. Kolejki
7. Zbiory. Haszowanie i porządkowanie.
8. Porównywanie obiektów
9. Mapy
10. Algorytmy, widoki, fabrykatory kolekcji
11. Własne implementacje kolekcji
7. Programowanie GUI: komponenty wizualne i kontenery
1. Ogólne reguły działania z komponentami GUI.
2. Komponenty AWT a komponenty Swingu
3. Krótki przegląd komponentów Swingu
4. Wspólne właściwości komponentów (AWT i Swing)
5. Własne komponenty i rysowanie
6. Kontenery
7. Okna
8. Rozkłady
8.1. Zarządcy rozkładów - zasady ogólne
8.2. Proste rozkłady - FlowLayout, BorderLayot i GreedLayout
8.3. Rozkład BoxLayout
8.4. Rozkłady TableLayout i MigLayout
9. Działania na kontenerach
10. Komponenty Swingu a wielowątkowość. Schemat aplikacji Swing
11. J-komponenty (wspólne właściwości lekkich komponentów Swingu)
12. Etykiety i przyciski
13. Menu rozwijalne
14. Dialogi
8. Delegacyjny model obsługi zdarzeń - zasady
1. Reguły ogólne i mechanizm obsługi zdarzeń
2. Anonimowe klasy wewnętrzne dla obsługi zdarzeń
3. Uzyskiwanie informacji o zdarzeniach
4. Specjalizowani uniwersalni słuchacze zdarzeń
5. Właściwość clientProperty i jej wykorzystanie przy obsłudze zdarzeń
6. Selekcja obsługiwanych zdarzeń i komponentów
7. Dynamiczne zmiany funkcjonalności: przyłączanie i odłączanie słuchaczy
8. Separacja
9. Obsługa zdarzeń - konkrety
1. Hierarchia klas zdarzeniowych
2. Obsługa zdarzeń - przegląd
3. Obsługa zdarzeń myszki
4. Obsługa menu
4.1. Menu kontekstowe
4.2. Obsługa wyboru opcji menu kontekstowego i rozwijalnego
4.3. Invoker menu kontekstowego. Menu kontekstowe i rozwijalne w jednym
5. Fokus
6. Obsługa klawiatury
7. Obsługa okien
8. Zdarzenia na komponentach wyboru
10. Rozbudowane możliwości Swingu
1. Architektura okien
2. Okna wewnętrzne
3. Wyspecjalizowane kontenery Swingu
3.1. Panel dzielony - JSplitPane
3.2. Panel zakładkowy - JTabbedPane
3.3. Panel przewijany - JScrollPane
3.4. Pasek narzędzi - JToolBar
4. Akcje
5. Mapy akcji i mapy klawiaturowe
6. Obieralny wygląd (pluggable look & feel)
7. Integracja z pulpitem
7.1. Dokumentocentryczne uruchamianie rodzimych aplikacji. Przeglądarka i poczta.
7.2. Ikonki obszaru powiadomień (tray)
8. Dlugotrwałe zadania i SwingWorker
11. Komponenty Swing i architektura Model-View-Controller
1. Modele i widoki
2. Lista: modele i widoki
3. Zmiany w modelu i komunikacja model-widok
4. Nasłuch zmian w modelach: uogólnienie.
5. Suwaki: nasłuch zmian modelu za pomocą ChangeListenera
6. Lista rozwijalna
7. Wykreślacze
8. Tabele
9. Drzewa
10. Komponenty tekstowe
12. Sortowanie i filtrowanie tabel. Techniki łatwego ponownego użycia
1. Sort - najprościej
2. Klucze sortowania
3. Ikony porządku
4. Komparatory
5. Konwertery napisowe
6. Model danych tabeli - klucz do właściwego sortowania i filtrowania
7. Uniwersalne GUI sortowania i filtrowania tabel
8. Model + uniwersalne GUI = łatwe dostosowania i modyfikacje
9. Sortowanie po kluczach
10. Edycja
11. Filtrowanie wierszy