解答例 - j2.lesson06.HogeBooksHybridReceipt

package j2.lesson06;

/**
 * 課題1903 - 解答例.
 * ほげ書店のレシート兼領収書を表すクラス.
 @author arakawa
 @version $Id: HogeBooksHybridReceipt_java.rps,v 1.1 2006/03/06 12:56:15 java2005 Exp $
 */
public class HogeBooksHybridReceipt implements Receipt, Acquittance {

    private final HogeBooksReceipt receipt;
    private final HogeBooksAcquittance acquittance;

    /**
     * レシート兼領収書のインスタンスを作成する。
     */
    public HogeBooksHybridReceipt() {
        super();
        this.receipt = new HogeBooksReceipt();
        this.acquittance = new HogeBooksAcquittance();
    }

    /**
     * この領収書兼レシートを表示する。
     */
    public void show() {
        this.acquittance.show();
        System.out.println("================");
        this.receipt.show();
    }
    
    /**
     * 購入した商品を追加する。
     @param name 商品の名前
     @param cost 商品の単価
     */
    public void addItem(String name, int cost) {
        this.receipt.addItem(name, cost);
        // 正式な領収書の合計金額をレシートのものと揃える
        this.acquittance.setTotalAmount(this.receipt.getTotalAmount());
    }

    /**
     * 合計金額を取得する。
     @return 合計金額
     */
    public int getTotalAmount() {
        return this.receipt.getTotalAmount();
    }

    /**
     * 支払人の名前を取得する。
     @return 支払人の名前
     */
    public String getPayerName() {
        return this.acquittance.getPayerName();
    }
    
    /**
     * 支払人の名前を設定する。
     @param payer 支払人の名前
     */
    public void setPayerName(String payer) {
        this.acquittance.setPayerName(payer);
    }

    /**
     * 発行者の名前を取得する。
     @return 発行者の名前
     */
    public String getIssuerName() {
        return this.acquittance.getIssuerName();
    }
    
    /**
     * 但し書きを取得する。
     @return 但し書き
     */
    public String getFinePrint() {
        return this.acquittance.getFinePrint();
    }
    
    /**
     * 但し書きを設定する。
     @param finePrint 但し書き
     */
    public void setFinePrint(String finePrint) {
        this.acquittance.setFinePrint(finePrint);
    }
    
    /**
     * サンプルプログラム。
     @param args 無視される
     */
    public static void main(String[] args) {
        HogeBooksHybridReceipt receipt = new HogeBooksHybridReceipt();
        receipt.setPayerName("ふー");
        receipt.setFinePrint("書籍代");
        receipt.addItem("雑誌"250);
        receipt.addItem("文庫"530);
        receipt.show();
    }
}