Мы продолжаем создание целого калькулятора для демонстрации использования шаблона проектирования State. На этом уроке мы реализуем переход между состояниями ввода данных.
Комментарии:
Тут не одна ошибка в коде, тут их куча! Что было мной выявлено при тестировании калькулятора: 1 - нужно сбрасывать значение второй переменной в методе StateOpers().opers() 2 - нужно произвести калькуляцию в начале метода StateSecond().opers() 3 - в методе calc() добавил проверку: "Делить на ноль нельзя!" 4 - метод calc() перенёс в класс Context(), так как он вызывается не только в StateResult() 5 - не нужно производить калькуляцию при вводе очередного числа в StateResult() 6 - не нужно производить калькуляцию при вводе операции в StateResult() 7 - нужно делать сброс при вводе числа в StateResult() 8 - оставить ситуацию без изменений, если ввести символ, который не поддерживается 9 - что бы не ввели, брать первый символ з.ы. Помимо этого, как видно из скриншота, динамически увеличивается список истории вычислений. В результате отображается текущая ситуация, что тоже видно на скриншотах. Обкатал калькулятор, вроде все нюансы учёл, баги больше не встречались.
Научился: Повторил пройденное Тут не одна ошибка в коде, тут их куча!
Что было мной выявлено при тестировании калькулятора:
1 - нужно сбрасывать значение второй переменной в методе StateOpers().opers()
2 - нужно произвести калькуляцию в начале метода StateSecond().opers()
3 - в методе calc() добавил проверку: "Делить на ноль нельзя!"
4 - метод calc() перенёс в класс Context(), так как он вызывается не только в StateResult()
5 - не нужно производить калькуляцию при вводе очередного числа в StateResult()
6 - не нужно производить калькуляцию при вводе операции в StateResult()
7 - нужно делать сброс при вводе числа в StateResult()
8 - оставить ситуацию без изменений, если ввести символ, который не поддерживается
9 - что бы не ввели, брать первый символ
з.ы.
Помимо этого, как видно из скриншота, динамически увеличивается список истории вычислений.
В результате отображается текущая ситуация, что тоже видно на скриншотах.
Обкатал калькулятор, вроде все нюансы учёл, баги больше не встречались.
Научился: Реализовывать основной метод main() в классе Program(), а также методы
show() и press() в классе Context() и метод digit() в классе StateFirst()