ObjectSquare [1999 年 6 月号]

[オブジェクト指向は本当に「オブジェクト」指向か?]


2.3 人を「分類」したモデル.

さて、最後のモデルです。
このモデルを説明する前に、まず集合論を使って問題を整理してみたいと思います。人、会社員、学生という3つの概念をベン図で表現すると次のようになります。

Image.3

図3:人、会社員、学生の集合表現

ここでは全体集合「人」の部分集合として「会社員」と「学生」集合が定義されています。「会社員」でかつ「学生」でもある人は、2つの集合の積として表現されています。

オブジェクト指向のクラス (class) という用語は「分類」という意味を持っています。
不特定多数のオブジェクトで共通の性質を持つものを分類したものをクラスと考えることができますから、上記の集合はそれぞれクラスと考えて良いでしょう。
また全体集合と部分集合の関係は、スーパークラスとサブクラスの関係によく似ています。
したがって、人−会社員−学生を上記のベン図に則してモデル化をすると次のようになります。

Image.4
図4:分類によるモデル

しかしオブジェクト指向プログラミング言語による実装イメージを持っている人ならばすぐに気づくと思いますが、このモデルには前の2つのモデルと比べて、次のような大きな問題があります。

「人」を概念的に「会社員」「学生」と分類することは非常に自然な考え方です。また人が時間の経過によって、「会社員」「学生」「無職」「会社員かつ学生」のように分類のされ方が変化することも実世界では当たり前のことです。
しかし、このような分類概念をそのままクラスとしてとらえてしまうと、オブジェクト指向プログラミング言語ではこれをそのまま実装できないというのです。
これは一体どういうことなのでしょうか?


© 1999 OGIS-RI Co., Ltd.

Prev.

Index

Next