演習問題6(レジ)


演習問題6-2 (Interpreter)

商品の合計金額は Cart クラスでも求めていますが、これを Register クラスでも行います。

ただし、レジスターですので、定義された加減乗除の演算クラスを利用して計算する機能(CmdCalculate クラス)として作成してください。

演算は次のクラスで実現します。

インターフェース名
スーパークラス名
クラス名機能
IOperand
Expression
Ingredient数値
Operator
演算子
OperationAdd加算式
OperationSubtract減算式(この例では使用しない)
OperationMultiply乗算式
OperationDivide除算式


実行結果
お買い上げ日時 2020-09-23 12:30:00
合計金額  949円


コード

Enshu602.java
public class Enshu602 { public static void main(String[] args) { Register reg = new Register(); Cart cart = new Cart(); cart.add(new Vegetable("大根", 125, 1)); cart.add(new Meat("豚肉", 98, 250)); cart.add(new Vegetable("レタス", 147, 1)); cart.add(new Vegetable("トマト", 69, 4)); cart.add(new Meat("鶏肉", 78, 200)); reg.accept(cart); reg.append(new CmdPurchaseTime()); reg.append(new CmdCalculate()); reg.execute(); // 会計(表示) } }
IOperand.java
public interface IOperand { double getOperand(); }
Operator.java
public abstract class Operator { protected IOperand operand1; protected IOperand operand2; public Operator() {} public Operator(IOperand operand1, IOperand operand2) { this.operand1 = operand1; this.operand2 = operand2; } public abstract IOperand execute(); }








演習問題6-2 (Interpreter)