Programowanie obiektowe w Javie

(autor wykładu: Krzysztof Barteczko)

Wykład poświęcony jest pogłębieniu znajomości języka Java i na tym przykładzie wyrobieniu umiejętności programowania obiektowego i zdarzeniowego, a także poznaniu ważnych, ogólnych koncepcji współczesnego programowania:
Umiejętności te winny być wykorzystywane i sprawdzane przy budowie zaawansowanych aplikacji, korzystających z różnorodnych środków platformy Java m.in.


Przewidywany plan wykładów


1. Obiektowość Javy I (repetytorium i synteza)

Podstawowe definicje. Abstrakcja obiektowa. Hermetyzacja. Szczególne właściwości języka Java.

2. Obiektowość Javy II (koncepcja polimorfizmu)

Kompozycja. Dziedziczenie. Polimorfizm. Metody i klasy abstrakcyjne

3. Obiektowość Javy III (interfejsy i klasy wewnętrzne)

Interfejsy. Adaptery. Klasy wewnętrzne

4. Wprowadzenie do współbieżności w Javie

Tworzenie, uruchamianie, wstrzymywanie i kończenie wątków. Synchronizacja. Koordynacja.

5. Strumienie

Hierarchia i klasyfikacja klas strumieniowych, Operowanie na strumieniach i ich filtrowanie. Kodowanie. Utrwalanie obiektów (serializacja). Strumienie w Internecie. Nowe środki I/O w Javie 1.4: bufory i kanały.

6. Kolekcje

Klasy i interfejsy kolekcyjne - logika powiązań. Listy. Zbiory. Mapy. Iteratory, Algorytmy.

7. Wprowadzenie do programowania GUI

Okna. Kilka przykładów komponentów wizualnych. Koncepcja rozkładu. Kontekst graficzny: jak i kiedy wykreślane są komponenty wizualne? Buforowanie grafiki.

8. Komponenty GUI

Podstawowe komponenty AWT i Swingu oraz ich właściwości. Kontenery. Rozkłady. Wyspecjalizowane kontenery.  Elementarne komponenty. Dialogi.  Menu rozwijalne.


9. Delegacyjny model obsługi zdarzeń I

Koncepcje delegacyjnego modelu obsługi zdarzeń na przykładzie zdarzenia "akcja". Sposoby implementacji. Separacja kodu.


10. Delegacyjny model obsługi zdarzeń II

Rodzaje interfejsów nasłuchu i typy zdarzeń. Ich obsługa. Zarządzanie fokusem w Javie 1.4. Menu kontekstowe Własne interfejsy nasłuchu i typy zdarzeń.

11. Zaawansowane właściwości komponentów Swingu

Architektura okien Swingu.  Obieralny wygląd (pluggable look and feel). Akcje. Mapy akcji i mapy klawiaturowe.


12. Podstawy architektury MVC

Idea MVC. Przegląd modeli danych/GUI oraz odpowiednie interfejsy nasłuchu. Programowanie list.



13. Zaawansowane zastosowania MVC
Wykreślacze komórek. Tabele i związane z nimi modele.  Edytory komórek. Drzewa. Dokumenty tekstowe - proste i złożone, ich modele i edytory.

14. Grafika i animacja

Koncepcja kontekstu graficznego (powtórzenie i uzupełnienia).  Grafika 2D: wykreślanie linii, kształtów i figur. Pióra i kolory. Zasady animacji.


15. Dynamiczna Java i JavaBeans

Dynamiczne kształtowanie fazy wykonania: niskopoziomowa refleksja.
Koncepcja programowanie komponentowego i  JavaBeans.
Właściwości - ich rodzaje, nasluch zmian i wetowanie. Introspekcja.




Literatura podstawowa: 

  1. Krzysztof  Barteczko. Java. Wykłady i ćwiczenia, MIKOM 2001
  2. Jan Bielecki. Java XP, PLJ 2001
  3. Bruce Eckel. Thinking in Java (wersja polska), Helion 2001
 
Literatura uzupeniająca: 
  1. Vincent J. Hardy, Java 2D API Graphics, The Sun MicroSystem Press, 2000
  2. Doug Lea. Concurrent Programming in Java. Design Principles and Patterns, Addison-Wesley 1996
  3. Matthew Robinson , Pavel Vorobiev. Swing, Softbound 2000,
  4. Java Tutorial, Sun Microsystem 2002