Zpo-13-lab: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
(Nie pokazano 1 pośredniej wersji utworzonej przez tego samego użytkownika) | |||
Linia 15: | Linia 15: | ||
==Zadanie== | ==Zadanie== | ||
Zadanie polega na stworzeniu prostego kalkulatora realizującego operacje dwuargumentowe: +, -, *, /. Wejściem dla kalkulatora są liczby dziesiętne lub binarne, zapisane w pliku lub wczytywane z konsoli. | Zadanie polega na stworzeniu prostego kalkulatora realizującego operacje dwuargumentowe: +, -, *, /. Wejściem dla kalkulatora są liczby dziesiętne lub binarne, zapisane w pliku lub wczytywane z konsoli. | ||
Program powinien być złożony z komponentów realizujących dowolną dwuargumentową operację, której kontrakt jest opisany za pomocą interfejsu. | Program powinien być złożony z komponentów -- klas realizujących dowolną dwuargumentową operację, której kontrakt jest opisany za pomocą interfejsu, np. ''Dodawanie'', ''Odejmowanie''. | ||
Jedyne zależności w programie powinny łączyć ''Kalkulator'' i interfejs operacji matematycznej. Dodanie komponentu reprezentującego nową operację matematyczną powinno wymagać jedynie modyfikacji pliku konfiguracyjnego '' | Komponentem spinającym operacje matematyczne powinien być centralny komponent ''Kalkulator'', który będzie z nich korzystał. | ||
Jedyne zależności w programie powinny łączyć ''Kalkulator'' i interfejs operacji matematycznej. Dodanie komponentu reprezentującego nową operację matematyczną powinno wymagać jedynie modyfikacji pliku konfiguracyjnego ''applicationContext.xml'' z definicjami komponentów. | |||
==Rozszerzenie zadania== | ==Rozszerzenie zadania== |
Aktualna wersja na dzień 21:54, 10 wrz 2006
Ćwiczenie 13. Programowanie komponentowe
Informacje wstępne
Ćwiczenie jest realizowane w języku Java. Sugerowanym środowiskiem jest Eclipse 3.2 wyposażone w plug-in Spring-IDE
Przed przystąpieniem do realizacji ćwiczenia należy zapozanać się z wykładem oraz przeczytać artykuł nt Spring Framework zamieszczony na TheServerSide
Celem ćwiczenia jest implementacja prostej aplikacji komponentowej w oparciu o kontener IoC Spring
Instalacja
Przygotowanie do ćwiczenia polega na zainstalowaniu JDK 5.0, bibliotek Springa, środowiska Eclipse w wersji 3.2 oraz wtyczkę SpringIDE wspierającą rozwój aplikacji Spring. Sposób wykorzystania tej wtyczki został omówiony w artykule znajdującym się tutaj.
Plik z szablonem projektu znajduje się tutaj.
Zadanie
Zadanie polega na stworzeniu prostego kalkulatora realizującego operacje dwuargumentowe: +, -, *, /. Wejściem dla kalkulatora są liczby dziesiętne lub binarne, zapisane w pliku lub wczytywane z konsoli. Program powinien być złożony z komponentów -- klas realizujących dowolną dwuargumentową operację, której kontrakt jest opisany za pomocą interfejsu, np. Dodawanie, Odejmowanie.
Komponentem spinającym operacje matematyczne powinien być centralny komponent Kalkulator, który będzie z nich korzystał.
Jedyne zależności w programie powinny łączyć Kalkulator i interfejs operacji matematycznej. Dodanie komponentu reprezentującego nową operację matematyczną powinno wymagać jedynie modyfikacji pliku konfiguracyjnego applicationContext.xml z definicjami komponentów.
Rozszerzenie zadania
Należy rozszerzyć możliwości programu o:
- wczytywanie danych liczbowych zapisanych w innych systemach reprezentacji, np. binarnym lub heksadecymalnym
- wykonywanie operacji wejścia/wyjścia za pomocą konsoli lub plików
Pytanie do dyskusji
Uważa się, że zastosowanie wzorca Inversion of Control pozwala na ograniczenie zależności pomiędzy komponentami oraz że promuje abstrakcyjny styl programowania. Czy stosowanie IoC rzeczywiście wpływa na wartości metryk obiektowych dotyczących powiązań między obiektami, zależności oraz abstrakcyjności? Jak zinterpretować tę odpowiedź?
Literatura
- M. Fowler "Inversion of Control Containers and the Dependency Injection pattern". http://www.martinfowler.com/articles/injection.html
- R.C. Martin "Dependency Inversion Pattern". http://www.objectmentor.com/resources/articles/dip.pdf