ショートカット
ファシリテーター × あり方
コーディングの向こう側
Hello, ANOTHER world!
オブジェクト指向のはなし
プログラミングのはなし
C言語実力診断クイズ
eSkillBooks
オブジェクト指向のはなし

(OOP == C++) ではない

導入

C++ はオブジェクト指向を実現するツールに過ぎません。C++ を使用すること自体がオブジェクト指向であるという勘違いは危険です。

解説

このサイトではおもに C++ を取り上げていますが、オブジェクト指向言語は他にもあります。有名なのは Java でしょう。C++ を取り上げたのは、多くの開発環境で標準の言語に採用されているためです。

オブジェクト指向開発で C++ が良く使われるのは、その自由度の高さからでしょう。Java などに比べると、かなり細かい部分まで自由に制御できます。また、C 言語とほぼ互換性があるため、オブジェクト指向に慣れていない開発者にとってはいつでも C 言語の手法に戻れるという安心感があります。

皆がオブジェクト指向開発に C++ を利用しているからといって、C++ で開発することとオブジェクト指向を用いることは同じ意味ではありません。たとえば C++ にはクラスを宣言するための class というキーワードがありますが、これを使ったからといってオブジェクト指向を実践したことにはならないのです。オブジェクトとは何かという点をしっかり理解した上で、きちんとカプセル化されていなければ意味がありませんね。

継承についても同じことが言えます。継承は本来 Is-A 関係を表現するためのものですが、オブジェクト指向を理解せずに使うと Has-A 関係を表現するために(誤って)使用してしまったりします。

このような間違いに気づかずに、「オブジェクト指向って便利だなぁ」などと感心していてはいけません。便利なのは言語仕様がそうなっているからです。オブジェクト指向は考え方なのであって、言語そのものではないことを良く理解してください。

もしあなたが開発者なら、C++ に備わっている数々のエキサイティングな機能に初めて出会ったとき、それらを使わずにはいられないでしょう。しかしオブジェクト指向そのものに対する理解がなければ、あなたが次に出会うのは人生最大のスパゲッティ・プログラムです。本来の目的とは違うことのために使われた C++ は、可読性やメンテナンス性という点で信じられないほど悲惨な結果を生みます。

もしあなたが管理者なら、C++ を導入してオブジェクト指向を導入しなければ、開発効率はかえって悪化するのだということを理解すべきでしょう。

それは罠です!

最近よく書店で見かける本の中には、「オブジェクト指向」という言葉を題名に冠していながら、中身は C++ や Java の言語仕様の解説に終始しているというものも少なくありません。罠です。注意しましょう。

(「オブジェクト指向のはなし」は1999年2月から2000年4月にかけて作成されたコンテンツです。)