Zaawansowane projektowanie obiektowe: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 36: | Linia 36: | ||
== Moduły == | == Moduły == | ||
===Wykłady=== | ===Wykłady=== | ||
# Wprowadzenie do przedmiotu [ | # 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]] | ||
# Przykład biblioteki obiektowej - Java Collections | # 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]] | ||
# 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]] | |||
# Metryki obiektowe | # 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 | # 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 | # 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 | # 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 | # 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 | # 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 | # 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 | # 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 | # 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 | # 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=== | ===Ćwiczenia=== | ||
# Wprowadzenie do przedmiotu | # Wprowadzenie do przedmiotu [[zpo-1-lab|wiki]] | ||
# Przykład biblioteki obiektowej - Java Collections | # Przykład biblioteki obiektowej - Java Collections [[zpo-2-lab|wiki]] | ||
# Testowanie jednostkowe | # Testowanie jednostkowe [[zpo-3-lab|wiki]] | ||
# Testowanie z użyciem obiektów zastępczych | # Testowanie z użyciem obiektów zastępczych [[zpo-4-lab|wiki]] | ||
# Metryki obiektowe | # Metryki obiektowe [[zpo-5-lab|wiki]] | ||
# Wzorce projektowe, cz. I | # Wzorce projektowe, cz. I [[zpo-9-lab|wiki]] | ||
# Wzorce projektowe, cz. II | # Wzorce projektowe, cz. II [[zpo-10-lab|wiki]] | ||
# Wzorce projektowe, cz. III | # Wzorce projektowe, cz. III [[zpo-11-lab|wiki]] | ||
# Refaktoryzacja za pomocą Eclipse | # Refaktoryzacja za pomocą Eclipse [[zpo-6-lab|wiki]] | ||
# Refaktoryzacja z wykorzystaniem testów jednostkowych | # Refaktoryzacja z wykorzystaniem testów jednostkowych [[zpo-7-lab|wiki]] | ||
# Katalog przekształceń refaktoryzacyjnych | # Katalog przekształceń refaktoryzacyjnych [[zpo-8-lab|wiki]] | ||
# Programowanie aspektowe | # Programowanie aspektowe [[zpo-12-lab|wiki]] | ||
# Programowanie komponentowe | # Programowanie komponentowe [[zpo-13-lab|wiki]] | ||
==Literatura== | ==Literatura== |
Wersja z 22:38, 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
- Wprowadzenie do przedmiotu [[[media:zpo-1-wyk.pdf|PDF]] | wiki | SWF, [Test SWF]
- Przykład biblioteki obiektowej - Java Collections PDF | wiki | SWF, [Test SWF]
- Testowanie jednostkowe PDF | wiki | SWF, [Test SWF]
- Metryki obiektowe PDF | wiki | SWF, [Test SWF]
- Wzorce projektowe, cz. I PDF | wiki | SWF, [Test SWF]
- Wzorce projektowe, cz. II PDF | wiki | SWF, [Test SWF]
- Wzorce projektowe, cz. III PDF | wiki | SWF, [Test SWF]
- Wprowadzenie do refaktoryzacji [Wykład PDF | wiki | SWF, [Test SWF]
- Katalog przekształceń refaktoryzacyjnych cz. I PDF | wiki | SWF, [Test SWF]
- Katalog przekształceń refaktoryzacyjnych cz. II PDF | wiki | SWF, [Test SWF]
- Katalog przekształceń refaktoryzacyjnych cz. III PDF | wiki | SWF, [Test SWF]
- Programowanie aspektowe PDF | wiki | SWF, [Test SWF]
- Programowanie komponentowe PDF | wiki | SWF, [Test SWF]
Ćwiczenia
- Wprowadzenie do przedmiotu wiki
- Przykład biblioteki obiektowej - Java Collections wiki
- Testowanie jednostkowe wiki
- Testowanie z użyciem obiektów zastępczych wiki
- Metryki obiektowe wiki
- Wzorce projektowe, cz. I wiki
- Wzorce projektowe, cz. II wiki
- Wzorce projektowe, cz. III wiki
- Refaktoryzacja za pomocą Eclipse wiki
- Refaktoryzacja z wykorzystaniem testów jednostkowych wiki
- Katalog przekształceń refaktoryzacyjnych wiki
- Programowanie aspektowe wiki
- Programowanie komponentowe wiki
Literatura
- E. Gamma i in.: Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku, WNT, 2005
- B. Eckel: Thinking in Java. Wydanie II lub III, Helion, 2003
- M. Fowler: Refaktoryzacja. Ulepszanie struktury istniejącego kodu. WNT, 2006
- B. Henderson-Sellers: Object-oriented metrics. Measures of complexity. Prentice Hall, 1995.