Re: オブジェクト指向とオブジェクト管理


関連:id:sumim:20040525:p1


また、村山さんにオブジェクトの広場 ML で参照していただいているようです。いつもありがとうございます。


継承は大事ですよね。ストラウストラップもかの whatis 論文(「C++ の設計と進化」風に言えば、「…とは何か?」論文。PDF)の最後に、オブジェクト指向プログラミングは「継承を用いたプログラミング」だと言い切っていますし。

Object-oriented programming is programming using inheritance. Data abstraction is programming using user-defined types. With few exceptions, object-oriented programming can and ought to be a super-set of data abstraction. These techniques need proper support to be effective.

ただ、(村山さんも最後の一文にて意識しておられるところかと思いますが)継承には型安全性を脅かす可能性があることをクックの指摘PDF)により知っておく必要もありますね。もっと言えば、継承、あるいはそれを用いるためのクラスという言語機能は、もともと、オブジェクト指向のために作られたものではなく、(クラス指向に限っていえば←コレ重要!)ユーザー型定義のためにオブジェクト指向において転用され、便利がゆえに長らく使われているうちに定着したものにすぎないことを併せて知っておくと Javaインターフェイスとかへの理解も深まってよいと思います。