Io-13-lab-wiki

From Studia Informatyczne

Spis treści

Ćwiczenie 13. Ewolucja oprogramowania

Informacje wstępne

Ćwiczenie jest realizowane w języku Java w środowisku Eclipse 3.2. Celem ćwiczenia jest przeanalizowanie rozwoju niewielkiego programu i jego wpływu zmian na jego jakość.

Instalacja

Przygotowanie do ćwiczenia polega na zainstalowaniu JDK 5.0 oraz środowiska Eclipse w wersji 3.2 Po uruchomieniu środowiska i wyborze przestrzeni roboczej należy zaimportować projekt z rozwiązaniami początkowymi.

Zadanie

W kolejnych krokach będzie rozwijany program-kalkulator realizujący proste obliczenia matematyczne. Przed przeczytaniem poleceń do kolejnego kroku należy zakończyć implementację poprzedniego. Warto także zapisywać kolejne kroki w postaci osobnych projektów Eclipse, aby umożliwić późniejsze porównania jakości.

Wersja początkowa

W wersji początkowej program wykonuje 4 podstawowe dwuargumentowe operacje matematyczne: +, -, *, / na liczbach całkowitych typu int. Kalkulator wczytuje polecenia ze strumienia wejściowego, po jednym w każdej linii. Polecenie ma postać:

liczba operator liczba

przy czym między liczbami a operatorem znajduje się zawsze przynajmniej jedna spacja. Program w odpowiedzi wyświetla wyniki wykonania operacji.

Przykładowe programy, posiadające opisaną w tym punkcie funkcjonalność, znajdują się tutaj. Są to dwa niezależne rozwiązania:

  • KalkulatorA, stosujące podejście strukturalne, zbudowane wewnątrz main() w jednej klasie
  • KalkulatorB, wykorzystujące mechanizmy obiektowe w celu oddzielenia implementacji kalkulatora od operacji matematycznych

Zastanów się, której z wersji wolisz użyć do dalszych prac. Jakie są kryteria wyboru?

Krok 1

Treść zadania

Rozszerz kalkulator o wykonywanie dwuargumentowych operacji bitowych: alternatywy (oznaczanej symbolem "||") i koniunkcji (oznaczanej symbolem "&&").

Krok 2

Treść zadania

Zastąp istniejącą notację infiksową notacją postfiksową RPN (ang. reverse polish notation), w której argumenty odkładane są na stosie ulegającym redukcji w momencie wykonania działania. W ten sposób zapis dotychczasowy zapis 2 + 3 będzie miał postać 2 3 +. Na stosie odłożone zostaną argumenty 2 i 3, a wczytanie operatora + spowoduje wykonanie redukcji na stosie poprzez zdjęcie dwóch elementów, wykonanie dodawania i odłożenie na stosie wyniku operacji.

Użycie notacji RPN pozwala na obliczanie wartości złożonych wyrażeń bez konieczności pamiętania o priorytecie poszczególnych operatorów.

Krok 3

Treść zadania

Zaimplementuj w kalkulatorze operacje na ułamkach zwykłych, zapisywanych w postaci a/b (bez spacji). Licznik i mianowanik ułamka są zawsze liczbami naturalnymi.

Wersja rozszerzona zadania może zawierać także mechanizm skracania ułamków i wyłączania całości.

Pytania do dyskusji

  • Na podstawie rozwoju programu oceń jakość kodu na kolejnych etapach. Co - Twoim zdaniem - jest najważniejszym elementem przyczyniającym się do utrzymania lub nawet poprawy jakości kodu programu w kolejnych iteracjach?
  • Czy wybór początkowego wersji początkowej programu (A lub B) miał wpływ na jakość końcowej wersji?