-
Разработайте классы
Const, Variable,
Add, Subtract, Multiply,
Divide для вычисления выражений с одной переменной
в типе int (интерфейс Expression).
-
Классы должны позволять составлять выражения вида
new Subtract(
new Multiply(
new Const(2),
new Variable("x")
),
new Const(3)
).evaluate(5)
При вычислении такого выражения вместо каждой переменной
подставляется значение,
переданное в качестве аргумента методу evaluate.
Таким образом, результатом вычисления
приведенного примера должно стать число 7.
-
Метод
toString должен выдавать запись выражения
в полноскобочной форме. Например
new Subtract(
new Multiply(
new Const(2),
new Variable("x")
),
new Const(3)
).toString()
должен выдавать ((2 * x) - 3).
- Сложный вариант.
Метод
toMiniString (интерфейс ToMiniString)
должен выдавать выражение с минимальным числом скобок.
Например
new Subtract(
new Multiply(
new Const(2),
new Variable("x")
),
new Const(3)
).toMiniString()
должен выдавать 2 * x - 3.
-
Реализуйте метод
equals, проверяющий,
что два выражения совпадают. Например,
new Multiply(new Const(2), new Variable("x"))
.equals(new Multiply(new Const(2), new Variable("x")))
должно выдавать true, а
new Multiply(new Const(2), new Variable("x"))
.equals(new Multiply(new Variable("x"), new Const(2)))
должно выдавать false.
-
Для тестирования программы должен быть создан класс
Main, который
вычисляет значение выражения x2−2x+1, для
x, заданного в командной строке.
-
При выполнении задания следует обратить внимание на:
-
Выделение общего интерфейса создаваемых классов.
-
Выделение абстрактного базового класса для бинарных операций.