Zpo-13-lab

From Studia Informatyczne

Spis treści

Ć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

  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