Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * 割引プランを表すクラス
- *
- */
- class DiscountPlan (e) extends RatePlan{
- ヒント:設問 2 プログラム 6 の説明「DiscountPlan は、クラス RatePlan を拡張し」
- 継承の場合はextendsうる
- //割引率テーブル
- private final TierTable discountTiers;
- /**
- * コンストラクタ
- * @param name 料金プラン名
- * @param basicCharge 基本料金
- * @param pricingTiers 料金表
- * @param discountTiers 割引率テーブル
- */
- public DiscountPlan(String name, double basicCharge, TierTable pricingTiers, TierTable discountTiers) {
- //スーパークラス(RatePlanクラス)のコンストラクタを実行
- super(name, basicCharge, pricingTiers);
- //引数の割引率テーブルをフィールドに設定
- this.discountTiers = discountTiers;
- }
- /**
- * 割引を適用した金額を電気料金として返す
- * RatePlanクラスのメソッドのオーバーライド
- */
- int getPrice(double amount) {
- //上位クラスである RatePlan のメソッド getPrice で求めた電力量から電気料金を求める
- int price = (f) super.getPrice(amount);
- ヒント:設問 2 プログラム 6 の説明 「上位クラスである RatePlan のメソッド getPrice で求めた電気料金」
- サブクラスのメソッドから上位クラス(スーパー クラス)の同一名のメソッドを呼び出す場合、
- 「super . メソッド名( )」と記述する。
- //上記で求めた金額に割引を適用した金額を返す
- return (int)(price * (g) (1.0- discountTiers.map(price)));
- ヒント:設問2 プログラム5 説明
- 「メソッドmapは、引数で与えられた電気料金から割引率を求め、その値を返す。
- ここで、割引 率は小数で与えるものとする。例えば、1%は 0.01 である。」
- DiscountTable クラスの map メソッドは、電気料金から割引率を求めるため、引数には直前で 求めた price を渡す。
- map メソッドの戻り値(割引率)は double になるため、1.0 からマイナスしたものをprice にかけて割引後の料金を求める。
- }
- }
Add Comment
Please, Sign In to add comment