Guest User

Untitled

a guest
Sep 24th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. /**
  2. * 割引プランを表すクラス
  3. *
  4. */
  5. class DiscountPlan (e) extends RatePlan{
  6. ヒント:設問 2 プログラム 6 の説明「DiscountPlan は、クラス RatePlan を拡張し」
  7. 継承の場合はextendsうる
  8. //割引率テーブル
  9. private final TierTable discountTiers;
  10. /**
  11. * コンストラクタ
  12. * @param name 料金プラン名
  13. * @param basicCharge 基本料金
  14. * @param pricingTiers 料金表
  15. * @param discountTiers 割引率テーブル
  16. */
  17. public DiscountPlan(String name, double basicCharge, TierTable pricingTiers, TierTable discountTiers) {
  18. //スーパークラス(RatePlanクラス)のコンストラクタを実行
  19. super(name, basicCharge, pricingTiers);
  20. //引数の割引率テーブルをフィールドに設定
  21. this.discountTiers = discountTiers;
  22. }
  23. /**
  24. * 割引を適用した金額を電気料金として返す
  25. * RatePlanクラスのメソッドのオーバーライド
  26. */
  27. int getPrice(double amount) {
  28. //上位クラスである RatePlan のメソッド getPrice で求めた電力量から電気料金を求める
  29. int price = (f) super.getPrice(amount);
  30. ヒント:設問 2 プログラム 6 の説明 「上位クラスである RatePlan のメソッド getPrice で求めた電気料金」
  31. サブクラスのメソッドから上位クラス(スーパー クラス)の同一名のメソッドを呼び出す場合、
  32. 「super . メソッド名( )」と記述する。
  33.  
  34. //上記で求めた金額に割引を適用した金額を返す
  35. return (int)(price * (g) (1.0- discountTiers.map(price)));
  36. ヒント:設問2 プログラム5 説明
  37.    「メソッドmapは、引数で与えられた電気料金から割引率を求め、その値を返す。
  38. ここで、割引 率は小数で与えるものとする。例えば、1%は 0.01 である。」
  39. DiscountTable クラスの map メソッドは、電気料金から割引率を求めるため、引数には直前で 求めた price を渡す。
  40. map メソッドの戻り値(割引率)は double になるため、1.0 からマイナスしたものをprice にかけて割引後の料金を求める。
  41. }
  42. }
Add Comment
Please, Sign In to add comment