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

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


== Opis ==
== Opis ==
Celem wykładu jest przedstawienie zadań i metod projektowania obiektowego. Pierwszy obszar wiedzy dotyczy wzorców projektowych, ich genezy, zastosowań oraz przykładów wykorzystania. Drugi obszar dotyczy refaktoryzacji oprogramowania, pozwalającej efektywnie wspomagać procesy pielęgnacji kodu źródłowego. Ponadto wykład obejmuje zagadnienia metryk obiektowych, testowania obiektowego oraz programowania aspektowego.
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 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 ==
== Sylabus ==
=== Autor ===
=== Autor sylabusa ===
* Bartosz Walter
* 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 ===
=== Wymagania wstępne ===
* Programowanie obiektowe
* Zrozumienie istoty paradygmatu obiektowego (Programowanie obiektowe)
* Inżynieria oprogramowania
* Zagadnienia związane z tworzeniem oraz pielęgnacją oprogramowania w modelu przyrostowym i pomiarami oprogramowania (Inżynieria oprogramowania)


=== Zawartość ===
=== Zawartość ===
* Wprowadzenie do obiektowości
** mechanizmy obiektowe
** odpowiedzialność obiektów
** kryteria oceny jakości
* Przykład biblioteki obiektowej - Java Collections
* Testowanie jednostkowe
** JUnit 4.x
** TestNG
** Obiekty zastępcze
* Metryki obiektowe
** McCabe
** Chidamber&Kemerer
** MOOD (e Abreu)
** R. Martin
* Wzorce projektowe (3 wykłady)
* Refaktoryzacja oprogramowania (4 wykłady)
** wprowadzenie,
** ''bad code smells'',
** katalog Fowlera
* Programowanie aspektowe
** AspectJ
* Programowanie komponentowe
** Rozwiązywanie zależności
** Dependency Injection


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


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

Wersja z 21:56, 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ą, 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) 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.
  • 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 [[[media:zpo-1-wyk.pdf|PDF]] | wiki | SWF, [Test SWF]
  2. Przykład biblioteki obiektowej - Java Collections PDF | wiki | SWF, [Test SWF]
  3. Testowanie jednostkowe PDF | wiki | SWF, [Test SWF]
  4. Metryki obiektowe PDF | wiki | SWF, [Test SWF]
  5. Wzorce projektowe, cz. I PDF | wiki | SWF, [Test SWF]
  6. Wzorce projektowe, cz. II PDF | wiki | SWF, [Test SWF]
  7. Wzorce projektowe, cz. III PDF | wiki | SWF, [Test SWF]
  8. Wprowadzenie do refaktoryzacji [Wykład PDF | wiki | SWF, [Test SWF]
  9. Katalog przekształceń refaktoryzacyjnych cz. I PDF | wiki | SWF, [Test SWF]
  10. Katalog przekształceń refaktoryzacyjnych cz. II PDF | wiki | SWF, [Test SWF]
  11. Katalog przekształceń refaktoryzacyjnych cz. III PDF | wiki | SWF, [Test SWF]
  12. Programowanie aspektowe PDF | wiki | SWF, [Test SWF]
  13. Programowanie komponentowe PDF | wiki | SWF, [Test SWF]

Ćwiczenia

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