プログラミング 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


関連記事

オブジェクト指向とは何なのかを簡単に説明してみる

オブジェクト指向とは何なのか? これを私の理解を元に、ごくごく簡単に説明してみたいと思います。   目次 オブジェクト指向とは?オブジェクトとは?指向とは?その「オブジェクト」がわらん!とい …

【Laravel】SQLの確認はenableQueryLogを使う

SQLのデバッグのために、SQLとバインドされた値を確認したいことがあります。 その時に使える方法として、よく提示されるのは以下の2つです。 1.enableQueryLogメソッドとgetQuery …

【Java】文字列の完全一致と部分一致を判定する方法

Stringオブジェクトのmatches、containsメソッドを使った説明です。 戻り値:boolean   目次 完全一致説明コード部分一致(前方一致)説明コード部分一致(後方一致)説 …

no image

【PHP】配列と連想配列と多次元配列の説明と使用例

目次 配列とは?定義例まとめ 配列とは? 1つの変数に複数の値を持つものです。 整数型や文字列型は1つの変数に1つの値を持ちますが、配列は同じようなデータの集まりを1つの変数に持つことができるようにな …

【Javaサンプル】自動販売機を作成(Level1)

Javaの勉強用サンプルです。 テーマは自動販売機。 プログラミング初心者向けに書いています。   目次 自動販売機を題材として選んだ理由自社研修で行っている身近なもので誰でもよく知っている …

SpringFramworkの良書

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

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