[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Задание №2
xnordmanДата: Пятница, 21.03.2014, 01:17 | Сообщение # 1
Сержант
Группа: Администраторы
Сообщений: 29
Репутация: 0
Статус: Offline
Шаблон проектирования «фабричный метод», logging,  тестирование (unittesting).

Часть 1. Написать стековый
калькулятор, который принимает в качестве аргумента командой строки имя файла,
содержащего команды. Если аргумента нет, то использовать стандартный поток
ввода для чтения команд. Использовать вещественные числа.
Реализовать
следующий набор команд:
·     # -строка с комментарием.
·     POP, PUSH — снять/положить число со/настек(а).
·     + , - , *, /, SQRT – арифметические операции. Используют один или два верхнихэлемента стека, изымают их из стека, помещая результат назад
·     PRINT— печать верхнего элемента стека (без удаления).
·     DEFINE— задать значение параметра. В дальнейшем везде использовать вместо параметра
это значение.

Пример (должно вывести 2):
DEFINE a 4
PUSH a
SQRT
PRINT

Часть2.
1.        Реализоватьнабор модульных тестов, покрывающих функционал калькулятора.
2.        Реализоватьжурналирование процесса работы калькулятора.
Методическиеуказания:·     Созданиекоманд рекомендуется реализовать посредством шаблона проектирования «фабричный
метод» ([url=http://ru.wikipedia.org/wiki/Фабричный_метод_(шаблон_проектирования]http://ru.wikipedia.org/wiki/Фабричный_метод_(шаблон_проектирования[/url][url=http://ru.wikipedia.org/wiki/Фабричный_метод_(шаблон_проектирования)])[/url]).
·     Загрузкуклассов команд при создании в фабрике осуществлять по полному
квалифицированному имени класса (включая имя пакета) посредством
Class.forName() с последующим созданием объектов команд методом
Class.newInstance(). Фабрика конфигурируется с помощью файла содержащего
соответствия между именами команд и классами, реализующими эти команды.
Зависимости фабрики от конкретных классов команд (кроме корневого-абстрактного)
быть не должно. Файл конфигурации должен храниться рядом с файлом
класса-фабрики, и загружаться в фабрику с помощью Class.getResourceAsStream()
·     Аргументыкоманде (тем у которых есть аргументы) на исполнение можно передавать в виде
массива либо списка объектов, команда сама должна уметь интерпретировать свои
аргументы
·     Содержимоестека и список (лучше ассоциативный контейнер Map<String, Double>)
определенных именованных параметров передавать команде в виде специального
объекта — контекста исполнения
·     Разработатьиерархию исключений, которые будут выбрасывать команды при исполнении. В случае
возникновения исключения — выводить информацию об ошибке и продолжать
исполнение программы (из файла или команд вводимых с консоли)
·     Дляреализации модульных тестов обычно используют готовые библиотеки:


·     Для реализациижурналирования обычно используют одну из библиотек:
o  Java Logging API (http://download.oracle.com/javase....ew.html).
oLog4j (http://logging.apache.org/log4j/1.2/).
 
  • Страница 1 из 1
  • 1
Поиск: