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


演習問題1-3 (Decorator)

演習問題1-2 では、商品ごとに割引が行なわれ、その割引も一度に利用できるのは1つだけでした。

よって、今度は合計金額に対して、複数の割引を組み合わせて対応できるように変更します。

TotalDiscount のサブクラスとして、合計金額を5%割り引く TotalDiscount5percent や合計金額から100円値引きする TotalDiscount100yen などを作成してください。

また、割引の種類が増えても、Cart クラス、TotalDiscount クラスやそのサブクラスを変更しなくてもよいようにしなさい。


実行結果
現在の合計金額は 548 円です。
現在の合計金額は 520 円です。
現在の合計金額は 420 円です。
現在の合計金額は 425 円です。


コード

Enshu103.java
public class Enshu103 { 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)); TotalDiscount discount; // 割引なし discount = new TotalNoDiscount(cart.getTotalPrice()); System.out.println("現在の合計金額は " + discount.getPrice() + " 円です。"); // 5%割引 discount = new TotalDiscount5percent(discount); System.out.println("現在の合計金額は " + discount.getPrice() + " 円です。"); // 5%割引でさらに100円値引き discount = new TotalDiscount100yen(discount); System.out.println("現在の合計金額は " + discount.getPrice() + " 円です。"); // 100円引きでさらに5%割引 discount = new TotalDiscount5percent(new TotalDiscount100yen(new TotalNoDiscount(cart.getTotalPrice()))); System.out.println("現在の合計金額は " + discount.getPrice() + " 円です。"); } }






演習問題1-3 (Decorator)