Zaawansowane projektowanie obiektowe: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
Linia 26: Linia 26:


=== Zawartość ===
=== Zawartość ===
 
* Pierwsza część (4w + 4l) jest poświęcona przypomnieniu podstawowych celów obiektowości oraz mechanizmów, któe je wspierają (dziedziczenia, polimorfizmu), omówieniu ich zastosowań oraz porównaniu możliwości, jakie oferują. Przedstawione też będą podstawowe kryteria jakości projektu obiektowego. Ilustracją jest biblioteka Java Collections i jej ewolucja wraz z rozwojem języka Java.
* Pierwsza część (4w + 4l) jest poświęcona przypomnieniu podstawowych celów obiektowości oraz mechanizmów, któe je wspierają, omówieniu ich zastosowań oraz porównaniu możliwości, jakie oferują. Przedstawione też będą podstawowe kryteria jakości projektu obiektowego.
* Podczas drugiej części (2w + 4l) przypomniane będą zasady testowania jednostkowego z wykorzystaniem dostępnych bibliotek (JUnit 3.8.x, JUnit 4.x, TestNG). Przedstawiona zostanie także koncepcja obiektów zastępczych (ang. mock objects), pozwalająca na testowanie jednostkowe także obiektów o skomplikowanych zależnościach.
* Podczas drugiej części (2w + 4l) przypomniane będą zasady testowania jednostkowego z wykorzystaniem dostępnych bibliotek (JUnit 3.8.x, JUnit 4.x, TestNG) a także koncepcja obiektów zastępczych na podstawie biblioteki EasyMock.
* Trzecia część (2w + 2l) dotyczy metryk obiektowych, służących do ilościowej oceny jakości projektu. Obejmuje ona trzy rodziny metryk: MOOD, C&K oraz Martina. Przedstawione zostaną ich definicje, typowe wartości oraz sposoby interpretacji otrzymanych wyników.
* Trzecia część (2w + 2l) dotyczy metryk obiektowych, służących do ilościowej oceny jakości projektu. Obejmuje ona trzy rodziny metryk: MOOD, C&K oraz Martina.
* Kolejna część (6w + 6l) jest poświęcona wzorcom projektowym autorstwa Bandy Czterech (Gang of Four), uzupełnionym o kilka wzorców innych autorów.
* Kolejna część (6w + 6l) jest poświęcona wzorcom projektowym autorstwa Bandy Czterech (Gang of Four), uzupełnionym o kilka wzorców innych autorów.
* W piątej części (8w + 6l) przedstawiona zostanie refaktoryzacja oprogramowania - technika wspomagająca pielęgnację kodu źródłowego. Omówione zostaną założenia refaktoryzacji, sposoby zapewniania jej poprawności, typowe błędne rozwiązania wymagające modyfikacji, wsparcie oferowane przez środowiska deweloperskie oraz przekształcenia refaktoryzacyjne z katalogu M. Fowlera
* W piątej części (8w + 6l) przedstawiona zostanie refaktoryzacja oprogramowania - technika wspomagająca pielęgnację kodu źródłowego. Omówione zostaną założenia refaktoryzacji, sposoby zapewniania jej poprawności, typowe błędne rozwiązania wymagające modyfikacji, wsparcie oferowane przez środowiska deweloperskie oraz przekształcenia refaktoryzacyjne z katalogu M. Fowlera
Linia 37: Linia 36:
== Moduły ==
== Moduły ==
===Wykłady===
===Wykłady===
# Wprowadzenie do przedmiotu [[[media:zpo-1-wyk.pdf|PDF]] | [[zpo-1-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-1-wyk/player.html SWF], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2001%20-%20output/quizmaker.html SWF]]
# Wprowadzenie do przedmiotu [Wykład [[media:zpo-1-wyk.pdf|PDF]] | [[zpo-1-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-1-wyk/player.html SWF]], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2001%20-%20output/quizmaker.html SWF]], [Lab [[zpo-1-lab|wiki]]]
# Przykład biblioteki obiektowej - Java Collections [[media:zpo-2-wyk.pdf|PDF]] | [[zpo-2-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-2-wyk/player.html SWF], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2002%20-%20output/quizmaker.html SWF]]
# Przykład biblioteki obiektowej - Java Collections [Wykład [[media:zpo-2-wyk.pdf|PDF]] | [[zpo-2-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-2-wyk/player.html SWF]], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2002%20-%20output/quizmaker.html SWF]], [Lab [[zpo-2-lab|wiki]]]
# Testowanie jednostkowe [[media:zpo-3-wyk.pdf|PDF]] | [[zpo-3-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-3-wyk/player.html SWF], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2003%20-%20output/quizmaker.html SWF]]
# Testowanie jednostkowe [Wykład [[media:zpo-3-wyk.pdf|PDF]] | [[zpo-3-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-3-wyk/player.html SWF]], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2003%20-%20output/quizmaker.html SWF]], [Lab [[zpo-3-lab|wiki]]]
# Metryki obiektowe [[media:zpo-4-wyk.pdf|PDF]] | [[zpo-4-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-4-wyk/player.html SWF], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2004%20-%20output/quizmaker.html SWF]]
# Metryki obiektowe [Wykład [[media:zpo-4-wyk.pdf|PDF]] | [[zpo-4-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-4-wyk/player.html SWF]], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2004%20-%20output/quizmaker.html SWF]], [Lab [[zpo-4-lab|wiki]]]
# Wzorce projektowe, cz. I [[media:zpo-9-wyk.pdf|PDF]] | [[zpo-9-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-9-wyk/player.html SWF], [Test  [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2009%20-%20output/quizmaker.html SWF]]
# Wzorce projektowe, cz. I [Wykład [[media:zpo-9-wyk.pdf|PDF]] | [[zpo-9-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-9-wyk/player.html SWF]], [Test  [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2009%20-%20output/quizmaker.html SWF]], [Lab [[zpo-9-lab|wiki]]]
# Wzorce projektowe, cz. II [[media:zpo-10-wyk.pdf|PDF]] | [[zpo-10-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-10-wyk/player.html SWF], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2010%20-%20output/quizmaker.html SWF]]
# Wzorce projektowe, cz. II [Wykład [[media:zpo-10-wyk.pdf|PDF]] | [[zpo-10-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-10-wyk/player.html SWF]], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2010%20-%20output/quizmaker.html SWF]], [Lab [[zpo-10-lab|wiki]]]
# Wzorce projektowe, cz. III [[media:zpo-11-wyk.pdf|PDF]] | [[zpo-11-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-11-wyk/player.html SWF], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2011%20-%20output/quizmaker.html SWF]]
# Wzorce projektowe, cz. III [Wykład [[media:zpo-11-wyk.pdf|PDF]] | [[zpo-11-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-11-wyk/player.html SWF]], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2011%20-%20output/quizmaker.html SWF]], [Lab [[zpo-11-lab|wiki]]]
# Wprowadzenie do refaktoryzacji [Wykład [[media:zpo-5-wyk.pdf|PDF]] | [[zpo-5-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-5-wyk/player.html SWF], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2005%20-%20output/quizmaker.html SWF]]
# Wprowadzenie do refaktoryzacji [Wykład [[media:zpo-5-wyk.pdf|PDF]] | [[zpo-5-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-5-wyk/player.html SWF]], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2005%20-%20output/quizmaker.html SWF]], [Lab [[zpo-5-lab|wiki]]]
# Katalog przekształceń refaktoryzacyjnych cz. I [[media:zpo-6-wyk.pdf|PDF]] | [[zpo-6-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-6-wyk/player.html SWF], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2006%20-%20output/quizmaker.html SWF]]
# Katalog przekształceń refaktoryzacyjnych cz. I [Wykład [[media:zpo-6-wyk.pdf|PDF]] | [[zpo-6-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-6-wyk/player.html SWF]], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2006%20-%20output/quizmaker.html SWF]], [Lab [[zpo-6-lab|wiki]]]
# Katalog przekształceń refaktoryzacyjnych cz. II [[media:zpo-7-wyk.pdf|PDF]] | [[zpo-7-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-7-wyk/player.html SWF], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2007%20-%20output/quizmaker.html SWF]]
# Katalog przekształceń refaktoryzacyjnych cz. II [Wykład [[media:zpo-7-wyk.pdf|PDF]] | [[zpo-7-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-7-wyk/player.html SWF]], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2007%20-%20output/quizmaker.html SWF]], [Lab [[zpo-7-lab|wiki]]]
# Katalog przekształceń refaktoryzacyjnych cz. III [[media:zpo-8-wyk.pdf|PDF]] | [[zpo-8-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-8-wyk/player.html SWF], [Test  [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2008%20-%20output/quizmaker.html SWF]]
# Katalog przekształceń refaktoryzacyjnych cz. III [Wykład [[media:zpo-8-wyk.pdf|PDF]] | [[zpo-8-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-8-wyk/player.html SWF]], [Test  [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2008%20-%20output/quizmaker.html SWF]], [Lab [[zpo-8-lab|wiki]]]
# Programowanie aspektowe [[media:zpo-12-wyk.pdf|PDF]] | [[zpo-12-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-12-wyk/player.html SWF], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2012%20-%20output/quizmaker.html SWF]]
# Programowanie aspektowe [Wykład [[media:zpo-12-wyk.pdf|PDF]] | [[zpo-12-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-12-wyk/player.html SWF]], [Test [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2012%20-%20output/quizmaker.html SWF]], [Lab [[zpo-12-lab|wiki]]]
# Programowanie komponentowe [[media:zpo-13-wyk.pdf|PDF]] | [[zpo-13-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-13-wyk/player.html SWF], [Test  [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2013%20-%20output/quizmaker.html SWF]]
# Programowanie komponentowe [Wykład [[media:zpo-13-wyk.pdf|PDF]] | [[zpo-13-wyk-toc|wiki]] | [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/zpo-13-wyk/player.html SWF]], [Test  [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/zpo/qm/ZPO%2013%20-%20output/quizmaker.html SWF]], [Lab [[zpo-13-lab|wiki]]]


===Ćwiczenia===
===Ćwiczenia===
# Wprowadzenie do przedmiotu [[zpo-1-lab|wiki]]
# Wprowadzenie do przedmiotu [Lab [[zpo-1-lab|wiki]]]
# Przykład biblioteki obiektowej - Java Collections [[zpo-2-lab|wiki]]
# Przykład biblioteki obiektowej - Java Collections [Lab [[zpo-2-lab|wiki]]]
# Testowanie jednostkowe [[zpo-3-lab|wiki]]
# Testowanie jednostkowe [Lab [[zpo-3-lab|wiki]]]
# Testowanie z użyciem obiektów zastępczych [[zpo-4-lab|wiki]]
# Testowanie z użyciem obiektów zastępczych [Lab [[zpo-4-lab|wiki]]]
# Metryki obiektowe [[zpo-5-lab|wiki]]
# Metryki obiektowe [Lab [[zpo-5-lab|wiki]]]
# Wzorce projektowe, cz. I [[zpo-9-lab|wiki]]
# Wzorce projektowe, cz. I [Lab [[zpo-9-lab|wiki]]]
# Wzorce projektowe, cz. II [[zpo-10-lab|wiki]]
# Wzorce projektowe, cz. II [Lab [[zpo-10-lab|wiki]]]
# Wzorce projektowe, cz. III [[zpo-11-lab|wiki]]
# Wzorce projektowe, cz. III [Lab [[zpo-11-lab|wiki]]]
# Refaktoryzacja za pomocą Eclipse [[zpo-6-lab|wiki]]
# Refaktoryzacja za pomocą Eclipse [Lab [[zpo-6-lab|wiki]]]
# Refaktoryzacja z wykorzystaniem testów jednostkowych [[zpo-7-lab|wiki]]
# Refaktoryzacja z wykorzystaniem testów jednostkowych [Lab [[zpo-7-lab|wiki]]]
# Katalog przekształceń refaktoryzacyjnych [[zpo-8-lab|wiki]]
# Katalog przekształceń refaktoryzacyjnych [Lab [[zpo-8-lab|wiki]]]
# Programowanie aspektowe [[zpo-12-lab|wiki]]
# Programowanie aspektowe [Lab [[zpo-12-lab|wiki]]]
# Programowanie komponentowe [[zpo-13-lab|wiki]]
# Programowanie komponentowe [Lab [[zpo-13-lab|wiki]]]


==Literatura==
==Literatura==

Wersja z 22:37, 4 wrz 2006

Forma zajęć

Wykład (30 godzin) + laboratorium (30 godzin)

Opis

Umiejętność wykorzystania możliwości, jakie daje paradygmat obiektowy, pozwala tworzyć oprogramowanie lepiej zmodularyzowane, łatwiejsze do modyfikacji i tańsze w pielęgnacji. Powstanie koncepcji wzorców projektowych, a następnie przeniesienie jej na inne obszary informatyki związane z programowaniem, świadczą o wadze tych zagadnień oraz zainteresowaniu nimi ze strony programistów. Celem wykładu jest przypomnienie zadań i metod projektowania obiektowego, a także zaprezentowanie niektórych nowych koncepcji, które w ostatnich latach przeżywają gwałtowny rozwój. Pierwszy ważny obszar dotyczy technik testowania jednostkowego, doboru strategii tworzenia testów i wykorzystania w tym celu specjalizowanego oprogramowania. Kolejna grupa zagadnień dotyczy wzorców projektowych, ich genezy, zastosowań oraz przykładów wykorzystania. Trzeci obszar dotyczy refaktoryzacji oprogramowania, pozwalającej efektywnie wspomagać procesy pielęgnacji kodu źródłowego. Elementami uzupełniającymi wykład są zagadnienia związane z metrykami obiektowymi, programowaniem aspektowym i wprowadzeniem do programowania komponentowego.

Wszystkie problemy zostaną przedstawione na przykładzie popularnego języka programowania Java.

Sylabus

Autor sylabusa

  • dr inż. Bartosz Walter, Politechnika Poznańska
  • email: Bartosz.Walter@cs.put.poznan.pl

Autor kursu

Kurs został opracowany przez dr. inż. Bartosza Waltera z Instytutu Informatyki Politechniki Poznańskiej.

Wymagania wstępne

  • Zrozumienie istoty paradygmatu obiektowego (Programowanie obiektowe)
  • Zagadnienia związane z tworzeniem oraz pielęgnacją oprogramowania w modelu przyrostowym i pomiarami oprogramowania (Inżynieria oprogramowania)

Zawartość

  • Pierwsza część (4w + 4l) jest poświęcona przypomnieniu podstawowych celów obiektowości oraz mechanizmów, któe je wspierają (dziedziczenia, polimorfizmu), omówieniu ich zastosowań oraz porównaniu możliwości, jakie oferują. Przedstawione też będą podstawowe kryteria jakości projektu obiektowego. Ilustracją jest biblioteka Java Collections i jej ewolucja wraz z rozwojem języka Java.
  • Podczas drugiej części (2w + 4l) przypomniane będą zasady testowania jednostkowego z wykorzystaniem dostępnych bibliotek (JUnit 3.8.x, JUnit 4.x, TestNG). Przedstawiona zostanie także koncepcja obiektów zastępczych (ang. mock objects), pozwalająca na testowanie jednostkowe także obiektów o skomplikowanych zależnościach.
  • Trzecia część (2w + 2l) dotyczy metryk obiektowych, służących do ilościowej oceny jakości projektu. Obejmuje ona trzy rodziny metryk: MOOD, C&K oraz Martina. Przedstawione zostaną ich definicje, typowe wartości oraz sposoby interpretacji otrzymanych wyników.
  • Kolejna część (6w + 6l) jest poświęcona wzorcom projektowym autorstwa Bandy Czterech (Gang of Four), uzupełnionym o kilka wzorców innych autorów.
  • W piątej części (8w + 6l) przedstawiona zostanie refaktoryzacja oprogramowania - technika wspomagająca pielęgnację kodu źródłowego. Omówione zostaną założenia refaktoryzacji, sposoby zapewniania jej poprawności, typowe błędne rozwiązania wymagające modyfikacji, wsparcie oferowane przez środowiska deweloperskie oraz przekształcenia refaktoryzacyjne z katalogu M. Fowlera
  • Część szósta (2w + 2l) dotyczy programowania aspektowego - nowej techniki programowania, umożliwiającej łatwe łączenie przecinających się zagadnień w kodzie programu z zachowaniem jego modularyzacji. Zagadnienia aspektowe zostaną omówione na przykładzie najpopularniejszego języka AspectJ, jednak w kontekście innych rozwiązań, które są dostępne na rynku.
  • Ostatnia, siódma część kursu (2w + 2l) jest poświęcona wprowadzeniu do programowania komponentowego. Jej celem jest przybliżenie koncepcji komponentu, sposobom łączenia komponentów ze sobą, oraz rozwiązywania zależności, jakie między nimi występują. Zostanie przedstawiona idea wstrzykiwania zależności, wyszukiwania zależności oraz przykładowe rozwiązania korzystającego z tych koncepcji. Przykłady zostaną omówione na podstawie biblioteki Spring.

Moduły

Wykłady

  1. Wprowadzenie do przedmiotu [Wykład PDF | wiki | SWF], [Test SWF], [Lab wiki]
  2. Przykład biblioteki obiektowej - Java Collections [Wykład PDF | wiki | SWF], [Test SWF], [Lab wiki]
  3. Testowanie jednostkowe [Wykład PDF | wiki | SWF], [Test SWF], [Lab wiki]
  4. Metryki obiektowe [Wykład PDF | wiki | SWF], [Test SWF], [Lab wiki]
  5. Wzorce projektowe, cz. I [Wykład PDF | wiki | SWF], [Test SWF], [Lab wiki]
  6. Wzorce projektowe, cz. II [Wykład PDF | wiki | SWF], [Test SWF], [Lab wiki]
  7. Wzorce projektowe, cz. III [Wykład PDF | wiki | SWF], [Test SWF], [Lab wiki]
  8. Wprowadzenie do refaktoryzacji [Wykład PDF | wiki | SWF], [Test SWF], [Lab wiki]
  9. Katalog przekształceń refaktoryzacyjnych cz. I [Wykład PDF | wiki | SWF], [Test SWF], [Lab wiki]
  10. Katalog przekształceń refaktoryzacyjnych cz. II [Wykład PDF | wiki | SWF], [Test SWF], [Lab wiki]
  11. Katalog przekształceń refaktoryzacyjnych cz. III [Wykład PDF | wiki | SWF], [Test SWF], [Lab wiki]
  12. Programowanie aspektowe [Wykład PDF | wiki | SWF], [Test SWF], [Lab wiki]
  13. Programowanie komponentowe [Wykład PDF | wiki | SWF], [Test SWF], [Lab wiki]

Ćwiczenia

  1. Wprowadzenie do przedmiotu [Lab wiki]
  2. Przykład biblioteki obiektowej - Java Collections [Lab wiki]
  3. Testowanie jednostkowe [Lab wiki]
  4. Testowanie z użyciem obiektów zastępczych [Lab wiki]
  5. Metryki obiektowe [Lab wiki]
  6. Wzorce projektowe, cz. I [Lab wiki]
  7. Wzorce projektowe, cz. II [Lab wiki]
  8. Wzorce projektowe, cz. III [Lab wiki]
  9. Refaktoryzacja za pomocą Eclipse [Lab wiki]
  10. Refaktoryzacja z wykorzystaniem testów jednostkowych [Lab wiki]
  11. Katalog przekształceń refaktoryzacyjnych [Lab wiki]
  12. Programowanie aspektowe [Lab wiki]
  13. Programowanie komponentowe [Lab wiki]

Literatura

  1. E. Gamma i in.: Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku, WNT, 2005
  2. B. Eckel: Thinking in Java. Wydanie II lub III, Helion, 2003
  3. M. Fowler: Refaktoryzacja. Ulepszanie struktury istniejącego kodu. WNT, 2006
  4. B. Henderson-Sellers: Object-oriented metrics. Measures of complexity. Prentice Hall, 1995.