ObjectSquare [1999 年 6 月号]

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


4.まとめ

4.1 (再び)オブジェクト指向かクラス指向か?

私たちは生まれた後、「赤ん坊」から「子供」「青年」「中年」「熟年」と成長していきます。またそれとは別に「学生」「会社員」「タレント」「議員」「無職」「自営業」などといろいろな身分になります。その他にも「釣り愛好家」や「カラオケ愛好家」になったりとたくさんの変化をします。
実世界のオブジェクトは、オブジェクト自身でそれぞれ固有の性質を持ち、勝手な振る舞いをします。このオブジェクトを分類するためにはさまざまな分類基準があり、ただ1種類の分類に属すると決めつけるわけにはいきません。また人は成長することで変化をし、そのことにより分類のされ方も変化します。

しかしオブジェクト指向言語の世界は違います。
オブジェクト指向言語の世界に住むオブジェクトは、生まれてから死ぬまでただひとつの「分類」 (class) が決まっています。ポリモルフィズムという概念はありますが、オブジェクトの帰属するクラスが変化するわけではありません。小学生、中学生、高校生、大学生をまとめて学生と分類することはあっても、オブジェクトは決して中学生クラスから高校生クラスに変化できないのです。

したがって、実世界の概念をモデル化し、オブジェクト指向プログラミング言語を使って実装するまでの間のどこかの段階で、オブジェクトの世界に合うモデルにする必要があります。
最初からそうしてしまうのは1つの方法です。しかしそうすると問題領域をとらえる段階で、実装構造までも規定してしまいがちです。したがって最初は分類によるモデリングを行い、問題領域についてきちんと理解をした後、オブジェクト指向プログラミング言語による実装を前提としたモデルに「設計」するアプローチが有効となるでしょう。

現在のオブジェクト指向プログラミング言語を前提とする限り、オブジェクトはクラスに強い制約を受けます。オブジェクトはそれ自身で固有のメソッドや属性を持つことができませんし、成長しても決して別のクラスに変化することはできません。
オブジェクトはクラスに完全に支配されているのです。

さてここで冒頭に書いた疑問をもう一度繰り返しましょう。
「オブジェクト指向アプローチは、クラス指向アプローチと呼んだ方が適切ではないだろうか?」
少なくとも私には、クラス指向アプローチの方がより適切な表現に感じられます。 みなさんはどう思われますか?


© 1999 OGIS-RI Co., Ltd.

Prev.

Index

Next