クラスの分析

クラスの間の関係にはいくつか種類がある.それらを分析してクラス図を作成する.

継承関係

オブジェクトを抽象化したり、具体化したりして、クラスを階層的に定義することで、効率よく拡張したり、機能を追加したりできる。 そこで、ある対象に対して、抽象化もしくは具体化する事例を提示する。



演習課題1

次の題材について、継承関係をもつクラスを定義しなさい.

  • 乗り物では、最上位クラスを「のりもの」クラスとして、乗り物の種類別に、具体化していく。プリウスやFITなど、具体的な車種などについては、インスタンス時に決めるものとして、それらをインスタンス化できるぐらいの十分な程度まで特化したクラスを定義する。
  • クラスを定義するときには,そのクラスを定義する意義のあるフィールドやメソッドを定義してみよう。そのようなフィールドやメソッドが見つけられないときには、そのクラスを定義する必要性があるのか、見直してみよう。
  • (応用):乗り物として継承する階層関係以外に,共通で持つ特徴を表す,インターフェースはどのように使えそうだろうか?例えば,救急車とパトカーに共通するサイレンは,どのように位置付けられるだろうか?
進め方
  1. 各自で,乗り物に該当する種類を付箋に書き込む.(付箋の上部に書く.特徴づけるフィールドやメソッドを思いつけば,それも書いてもよいが,クラス名をまずは出す.)
  2. 同じ種類にまとめられそうなクラスをまとめて,その種類に名前を付ける(ラベリングする).
  3. 共通するメソッド・フィールドをクラスに書き込む.
  4. ラベリングしたものをさらにまとめて,最終的に全体を包含するラベリングが「のりもの」になるように,クラスを階層的にまとめる.

演習課題2

議論した構造をUMLのクラス図にて表しなさい.また,プログラムコードを作成しなさい.

整理した構造について,UMLのクラス図で表し,フィールドやメソッドを定義する.クラスが持つメソッドやフィールドが実装されたJavaプログラムコードを作成する.作成したコードをインスタンスして,動作を確認するコードも作成して,動作を確かめること.

進め方
  1. 各クラスのフィールド・メソッドを決める.クラス図を作成する. (astahで作成する)
  2. 出力したソースコードにて,メソッドを具体的に実装する.
  3. インスタンス化するためのクラスを作成して,そのクラスにてインスタンス化して実行して確かめる.(eclipseで作成)
  4. クラス図にして,クラスを構築するクラス数は最低10件とする.

クラスの分析