Zpo-13-lab

Z Studia Informatyczne
Wersja z dnia 21:27, 30 sie 2006 autorstwa Bwalter (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Ć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 plug-ina SpringIDE

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 realizujących dowolną dwuargumentową operację, której kontrakt jest opisany za pomocą interfejsu. 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 context.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

  1. M. Fowler "Inversion of Control Containers and the Dependency Injection pattern". http://www.martinfowler.com/articles/injection.html
  2. R.C. Martin "Dependency Inversion Pattern". http://www.objectmentor.com/resources/articles/dip.pdf