Java

【Javaサンプル】自動販売機(Level3) クラス分け

投稿日:2019年12月19日 更新日:

自動販売機(Level2)では、小さいメソッドに処理を切り出すことを学びました。
しかし、まだMainクラス1つの中で完結しているプログラムです。
オブジェクト指向言語であるJavaを使うなら、クラス分けしたいところです。

Level3ではクラス分けして作成しました。
作成したのは、以下の4つです。

Items(商品)
Deposit(入金額)
VendingMachine(自動販売機)
Main(メインロジック)

 

どうやって書いたか?

どういうクラスが必要かを判断

・商品はクラスとして必要とすぐ判断できた。
・値オブジェクトとして、Depositクラスは必要と判断。
・自動販売機クラスは必要で、フィールドはItemsとDepositになる。 

段階的にリファクタリング

・クラスを作成し、メソッドを移動
・Main側の処理をクラスに置き換え
・移動させたメソッドを使って動くかテスト
 これの繰り返し。

 

Items(商品)

商品に関わる変数、処理(メソッド化できる箇所)をまとめます。

 

Deposit(入金額)

入金されたお金に関する変数、処理をまとめます。

 

VendingMachine(自動販売機)

ItemクラスとDepositクラスを変数に持たせ、処理をまとめます。

 

Main(メインロジック)

各クラスの機能でメインロジックを組み上げます。

 

クラス分けの価値

多くのプログラムは、Getter/Setterによるデータ構造的な仕組みでできています。
しかしこれは仕様の理解の難しさと、バグの温床になっています。

クラス分けする本当の価値は、仕様の明確化と機能の部品化です。
そうすることで、バグが少ないシステム、修正が容易なシステムが作られるのです。

私自身、もっと成長したいものです。

 

Level4

Level4ではさらに一歩進んで、ドメイン駆動的な記述に修正します。
ドメインとは「業務領域」のことです。

つまり、実際にシステムが使う人が使っている言葉や業務内容で
プログラムを表現する
というアプローチなのです。

今後、仕様の理解や保守性の高さからコーディングスキルとして
ドメイン駆動は高く評価されていくと私は考えています。

【Javaサンプル】自動販売機(Level4) ドメイン駆動

-Java
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


関連記事

【SpringBootチュートリアル】#3~ Index画面の作成

このチュートリアルでは、簡易な書籍管理システムを作っていきます。 まず最初にIndex画面を作成していきます。 HTML作成 以下の配下にindex.htmlを作成します。 配置先:プロジェクト(ここ …

【SpringBootチュートリアル】#7~ 検索画面の作成

概要 書籍情報を検索するフォーム(検索フォーム)と検索結果を表示する画面(検索結果一覧)を作成します。 検索フォームと検索結果一覧はHTMLファイルを分けて作成しています。 分けることは必須ではなく、 …

【SpringBootチュートリアル】#9~ 更新画面の作成

※2021/01/09  画面遷移等のバックエンド側の内容が抜けていたので追記しました。 概要 検索結果一覧から編集ボタン押下で遷移してくる更新画面です。 遷移時(初期表示時)には、編集ボタンを押下し …

【SpringBootチュートリアル】#1~ 開発環境を準備しよう(IDE)

想定読者 SpringBootを始めて学ぶ方   IDE(Eclipse) IDEにはEclipse以外にもNetBeansやIntelliJがあります。 好みによりますので使いやすいものを …

【Java】HashSetの使い方(順序なしSet)

HashSetの使い方をまとめました。 HashSetに関する使い方のサイトは他にもありますが、 それらのサイトには書かれていないメソッドについても書いてあります。 HashSetの基本情報 ・重複す …

記事を探す

SpringFramworkの良書

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

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