プログラミング Java

【Java】オブジェクト指向の練習題材(会計オブジェクト)

投稿日:

前回記事、オブジェクト指向とは何なのかを簡単に説明してみるの練習題材です。

ここでは3つのオブジェクトを作成していきます。
– 会計オブジェクト:会計金額の算出
– 請求書オブジェクト:請求明細の保持と合計金額の算出
– 請求明細オブジェクト:請求する内容の保持

 

目的

オブジェクト指向プログラミングの練習。
仕様理解、フィールド、コンストラクター、メソッドの実装に慣れる。

 

仕様

会計クラス

・クラス名:Account
・以下のフィールドを持つ。
 請求書クラス
・コンストラクターの引数は請求書クラスとする。
・以下のメソッドを持つ。
 請求書クラスの合計額から消費税を算出する。
 請求書クラスの合計に消費税を加算した、総請求額を算出する。。

請求書クラス

・クラス名:Invoice
・以下のフィールドを持つ。
 請求先名
 請求詳細クラスのリスト
・コンストラクターの引数は請求先名とする。
・以下のメソッドを持つ。
 請求先名の表示
 請求詳細の追加
 請求額の合計算出

請求詳細クラス

・クラス名:InvoiceDetail
・以下のフィールドを持つ。
 商品名
 請求額
 品数
・コンストラクターの引数は、商品名、請求額、品数とする。
・以下のメソッドを持つ。
 商品名を取得
 請求額を取得
 品数を取得

Mainクラス

・クラス名:Main
・請求書オブジェクトを生成する。
・請求書オブジェクトに請求詳細のオブジェクトをいくつか追加する。
・会計オブジェクトを生成する。
・合計額を算出する。

 

手順

会計クラスの実装(1)

・フィールドにInviceクラスを定義する。
 この時点でInvoiceクラスは無いため、空のInvoiceクラスを作成しておく。

・コンストラクターを実装します。

・メソッドを実装します。
– 消費税額の算出
– 総請求額の算出
 税率は10%の固定値にしています。
 まだInvoiceクラスから合計金額を取得できない(未実装の)ため、
 固定値「0」で仮実装しておきます。

会計クラスは一旦ここまでです。
先に請求書クラスと請求詳細クラスを実装してから、再度メソッドの中身を実装します。

 

請求書クラスの実装(1)

・フィールドを実装します。
 請求者名はStringとします。
 請求詳細クラスのListを定義します。
 請求詳細クラスはこの時点ではまだ、空のクラスとして作成しておきます。

・コンストラクターを実装します。
 請求詳細クラスのフィールドは、空のListで初期化しておきます。

・メソッドを実装します。
 請求先名はGetterです。
 請求詳細の追加は、Listのaddを使います。
 請求詳細の合計算出メソッドは、固定値「0」 で仮実装しておます。

請求書クラスは一旦ここまでとします。
請求明細クラスの実装を行い、請求明細からの値が取得できるようになったら残りを実装します。

 

請求詳細クラスの実装

・フィールドに、商品名、請求額、請求数を定義します。

・コンストラクターを実装します。

・メソッドを実装します。
 実装するのは、各フィールドのgetterです。
 私は個人的に、getHoge()という「get」が好きではないため、name()というメソッド名にします。
 そうすると、呼び出しの際、「invoiceDetail.name()」となり、
 「請求詳細の名称」のような自然言語に近い表現になると感じているためです。

請求詳細クラスはこれで完成です。

請求書クラスの実装(2)

・請求明細の合計算出メソッドを実装します。
 Listで実装してるので、拡張for文が使えます。

これで請求書クラスの実装は完了です。

 

会計クラスの実装(2)

– 消費税を算出
– 請求総額を算出
 仮実装で「0」としていた請求金額を、「invoice.totalAmount()」に修正します。

これで会計クラスの実装は完了です。

 

メインクラス

以下の順で実際に合計額が表示されるか見てみましょう。
・請求書オブジェクトを生成する。
・請求書オブジェクトに請求詳細のオブジェクトをいくつか追加する。
・会計オブジェクトを生成する。
・合計額を算出する。

 

まとめ

・仕様に基づき、複数のクラスを実装する経験をした。
・他のクラスが未実装の場合、仮の値を設定しておくこともある。
・フィールドは、各クラスに適切な値のみ持つ。
・コンストラクターは、オブジェクト生成(インスタンス化)に必要な値を与える。
・メソッドは、各オブジェクトに必要な機能を実装する。

 

サンプルコード

 
最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!
もし内容が良かったらランキング評価を頂けると励みになります(^^)

ランキング評価する

-プログラミング, Java
-,

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

【JdbcTemplate】IN句に値を入れて複数件取得する方法

JdbcTemplateでIN句に毎回異なる数の値をセットして、 複数のレコードを取得する場合は、「NamedParameterJdbcTemplate」で取得することができます。 コード例 [cra …

【Java】Optionalが処理できないならデフォルト値を返そう

概要 Optionalはnullである可能性を明示的に返してくれる便利なコンテナ・オブジェクトです。 if(obj == null)… といったことをしなくてよくなったのは素晴らしいことだ …

Camtasia(カムタジア)でKrisp(クリスプ)を使う方法

Camtasiaで動画撮影する時のノイズ除去にKrispを導入する方法です。 前提 Krisp(無料版でOK)をインストール済みであること。 Pro版を試したい方は以下の招待URLからダウンロードして …

【Java】画像ファイルをバイナリで比較する方法

  画像ファイルの比較 比較元ファイル 素材はPhotoACから拝借しました。 コピー元画像:PCを持つ女性 コピーしたファイルとの比較(True) コピー元ファイルをコピーしただけのファイ …

【SpringBoot入門】#13~ 独自のエラー画面の作成

概要 何らかのエラーが発生した場合に、エラー画面を表示して対応したいことがあります。 デフォルトのwhite label Error pageのままというわけにはいかないので、 独自のエラー画面を作成 …

SpringFramworkの良書

■おすすめ教材
Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

※SpringはJavaのFrameworkの1つです。
変更のしやすさ、保守性の高さが特徴です。