@634

オブジェクト指向 - 特化

Advertisement

特化

特化とは汎用的なオブジェクトに対して、そのオブジェクトの特性を受け継ぐ、より具体的なオブジェクトを導出することである。

簡単な例をあげてみる。
マウスを表すオブジェクトが定義されているとする(図1)。
マウスオブジェクト
図1:マウスオブジェクト

次に、スクロールボタン付のマウスを表すオブジェクトを定義する。この時、すでに定義済みのマウスオブジェクトに属性を追加することで対応することができる(図2)。
マウスクラスとスクロール付きマウスクラス
図2:マウスオブジェクトとスクロール付きマウスオブジェクト

しかし、図2で赤線で囲ってある属性と操作は両オブジェクト共にまったく同じ物となってしまうため、冗長な印象をうける。これと同じ考え方で3ボタンマウスのオブジェクトなどを追加定義すると、さらに同じ属性と操作を定義しなければならなくなる。

それでは特化の概念を利用した際の、オブジェクト設計を行ってみる(図3)。
マウスオブジェクトとスクロール付きマウスオブジェクト(特化)
図3:マウスクラスとスクロール付きマウスオブジェクト(特化)

特化の考え方を利用すると、あるオブジェクトが他のオブジェクトの特性を受け継ぐことができる。ここでの例の場合、既存のマウスオブジェクトの特性をスクロール付きマウスオブジェクトが受け継ぐことになる。両クラスの内容は図2の冗長なオブジェクトとまったく同じだが、こちらの方が直感的にもわかりやすいだろう(スクロール付きマウスオブジェクトはマウス+スクロール機能ということがすぐに理解できる。)

設計段階で特化関係を見出すことは、その後のシステムの柔軟性を高めることになるため非常に重要である。逆の視点から考えると、システム構築段階での仕様変更に対しても特化の考え方を用いることで、少ない変更での修正を行うことが可能となる場合が多い。

Advertisement

ショートカット

634
634ブログ
このカテゴリのトップページに戻る
Incubator(Pukiwiki)
634ラボ
   UIコレクションギャラリー
   ZO-3ジェネレーター

サイト検索


Y!ログール

ビリヤード