Как можно сделать откат и повтор OOP? echo $calculate->init(20).
->compute('+', 2)
->replay();
->undo();
->getResult();
каким образом можно реализовать откат и повтор метода в OOP?

4 Фев 2021 в 19:45
129 +1
0
Ответы
1

Для реализации отката и повтора методов в ООП можно создать класс Calculator с методами init, compute, replay, undo и getResult. Ниже приведен пример реализации класса Calculator:

class Calculator {
private $result;
private $history;
public function init($value) {
$this->result = $value;
$this->history = [$value];
return $this;
}
public function compute($operator, $value) {
switch ($operator) {
case '+':
$this->result += $value;
break;
case '-':
$this->result -= $value;
break;
case '*':
$this->result *= $value;
break;
case '/':
$this->result /= $value;
break;
default:
break;
}
$this->history[] = $this->result;
return $this;
}
public function replay() {
$this->result = end($this->history);
return $this;
}
public function undo() {
array_pop($this->history);
$this->result = end($this->history);
return $this;
}
public function getResult() {
return $this->result;
}
}
$calculate = new Calculator();
echo $calculate->init(20)->compute('+', 2)->replay()->undo()->getResult();

В данном примере класс Calculator содержит методы для инициализации значения, выполнения операций, отката, повтора и получения результата. При вызове методов init и compute результат операции история вычислений сохраняется в массиве history. Метод replay возвращает результат последней операции, а метод undo отменяет последнюю операцию. Метод getResult возвращает текущее значение результата.

17 Апр 2024 в 21:02
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир