クラスの分析

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

継承関係

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



演習課題

次の題材について、継承関係をもつクラスを定義して、UML図にあらわしなさい。

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

クラスの分析