演習問題1(ショッピングカート 合計金額)


演習問題1-2 (Strategy)

ショッピングカートに入れた商品の金額を商品ごとに(add した単位で)割引できるようにしなさい。

getTotalPrice() に引数で渡された IDiscount インタフェースをインプリメント(あるいは Discount クラスを継承)したクラスの getPrice() を呼ぶことによって割引をします。クラスとして、商品(add ごと)の金額を一律10円値引きする Discount10Yen と、商品(add ごと)の金額が200円以上ならば20円、200円未満なら10円値引きする DiscountStep を作成してください(10円以下の商品はない)。

割引の種類が増えても、IDiscount インタフェースやそれをインプリメント(あるいは Discount クラスやそれを継承)したクラス、既存のクラスを変更しなくてもよいように作成しなさい。


実行結果
現在の合計金額は 548 円です。
現在の合計金額は 518 円です。
現在の合計金額は 508 円です。


コード

Enshu102.java
public class Enshu102 { public static void main(String[] args) { Cart cart = new Cart(); cart.add(new Vegetable("大根", 125, 1)); cart.add(new Vegetable("レタス", 147, 1)); cart.add(new Vegetable("トマト", 69, 4)); // 割引なし System.out.println("現在の合計金額は " + cart.getTotalPrice() + " 円です。"); // すべて10円値引き System.out.println("現在の合計金額は " + cart.getTotalPrice(new Discount10Yen()) + " 円です。"); // 200円以上は20円、200円未満は10円値引き System.out.println("現在の合計金額は " + cart.getTotalPrice(new DiscountStep()) + " 円です。"); } }






演習問題1-2 (Strategy)