Warsztaty programistyczne (WPR)

 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 nieco bardziej zaawansowanych aplikacji, korzystających z różnorodnych środków platformy Java m.in.

Przewidywany plan wykładów


Temat wykładu
Tydzień
Proponowany zakres ćwiczeń

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

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

1
budowanie klas
2. Obiektowość Javy II (dziedziczenie i  polimorfizmu)

Kompozycja. Dziedziczenie. Polimorfizm. Metody i klasy abstrakcyjne
 

1-2
wykorzystabie polimorfizmu (na drugich ćwiczeniach)
3. Obiektowość Javy III (interfejsy i klasy wewnętrzne). Wyjątki

Interfejsy. Adaptery. Klasy wewnętrzne. Wyjątki
 

2-3
j.w. + ew. użycie interfejsów
4. Wprowadzenie do współbieżności w Javie

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

3-4
proste programy wielowątkowe (jedne ćwiczenia)
5. Strumienie

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

4-5
przetwarzanie strumieni; serializcja, kodowanie, NIO (dwa ćwiczenia, przy czym można i należy wykorzystać wielowątkowość)
6. Kolekcje

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

6-7
wykorzystanie klas kolekcyjnych, użycie komparatorów i algorytmów
7. Programowanie GUI. Komponenty wizualne

Zasady programowania GUI. Komponenty AWT i Swingu (przegląd) . Wspólne właściwości komponentów AWT i Swingu. Prosta grafika i rysowanie (bez Graphics2D) 
 

7-8 
ustalanie właściwości komponentów, rysowanie, pokazywanie obrazków. 
8. Komponenty GUI II

Kontenery. Rozkłady.  Elementarne komponenty (etykiety i przyciski).  Menu rozwijalne.Dialogi.

8-9
tworzenie GUI z różnymi rozkładami komponentów i menu .
 
9. Delegacyjny model obsługi zdarzeń I

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

10
różne sposoby obsługi zdarzenia "akcja", przyłączanie i odłączanie słuchaczy, separowanie 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 .
 

11
obsługa różnych rodzajów zdarzeń
11. Rozbudowane właściwości komponentów Swingu 

Architektura okien Swingu.  Przezroczystość. Ramki.  Akcje. Mapy akcji i mapy klawiaturowe.  Wyspecjalizowane kontenery. Obieralny wygląd (pluggable look and feel).
 

12
Użycie okien wewnętrznych, wyspecjalizowanych kontenerów oraz map akcji i map klawiaturowych.
12. Architektura MVC

Idea MVC. Przegląd modeli danych/GUI oraz odpowiednie interfejsy nasłuchu. Programowanie list. 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.
 

13-14
Modele danych na przykładzie listy.
Wykreślacze i edytory komórek (tabele). Proste edytory tekstowe. 
13.  Dodatkowy czas - na zaległości, podsumowanie etc.
 
 
15
Ostateczne zaliczenie przedmiotu.

Uwaga: dla grup, które mają ćwiczenia poprzedzające wykład - harmonogram ćwiczeń należy przesunąć o 1 wiersz tabeli w dół, a na pierwszych ćwiczeniach zrobić powtórzenie najważniesjzych rzeczy z semestru I.