Java Mid Basic〜リファクタリングLv2構成を考える〜

イントロダクション

前回までに、UMLの書き方などを理解しました。使用しているUMLツールは「Star UML」です。
プログラムを書くのにUMLを使って「どのようなクラス構成にするか?」を考えます。
まずは、現状のクラス構成を図にしてみます。「現状」というのは作成中のコンソールゲーム(学習用)です。

現状のクラス図

動きとしては、下の動画のように動きます。

<仕様>

  • ・アプリが起動したらユーザーの入力を待つ
  • ・入力(コマンド)によりコンソール出力する内容を切り替える
  • ・hello->"Hello World"
  • ・計算式(「1 + 2」など)->計算結果
  • ・bye->実行したコマンドの一覧を出力してアプリ終了
  • ・title->テキストファイルの中身を出力
  • ・上記以外->"想定外の入力です"を出力し、次のコマンド入力を待機

クラス図にすると下のような形になります。

ここから、どのようにクラス構成を作れば良いか考えます。

リファクタリング

「基本的」というのは「土台になる」という意味で使用しています。そして、今回のリファクタリングを行うの時の
基本的な考え方は以下の通りです。

  1. 1機能につき、1クラス
  2. 作成するクラス(機能)は再利用できるように作る
  3. JavaDocなどを使用して、新規でコードを見る人にもわかるようにコーディングする

現状の問題点

クラスが1つだけなので、大雑把に4機能(上の画像内の<>で囲っているもの)がこのクラスの中にあり「ごちゃー」としていて、まるで汚い部屋のようです。
まずは整理整頓ですね、そして、クラスを複数作成するのでこの部分クラスとクラスの繋がり部分をうまく作成してやる必要があります。

さらなるアイディア

整理整頓を行うついでに「こーすれば!」というものも組み込むともっと良いと思います。

関連ページ

UMLツール Star UMLを使う〜

UMLツール Star UML〜ユースケース図を書いて見た〜



投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す