« 書籍「ApplyingOMT」~OMTの実例書 | トップページ | 書籍「OMT Insights」~洋書月刊誌「Object-Oriented Programming Journal」の人気コラム書籍化 »

2013年6月 3日 (月)

書籍「Fundamentals of Object-Oriented Design in UML」

C++やEiffelでは多重継承をサポートしているが、多重継承は何かと悪者扱いされる傾向があるようだ。

特にJava言語では多重継承をサポートしていないことも影響しているかも知れない。

プログラム的に見て確かに多重継承を効果的に利用し、同時にコードの保守性も保つのは簡単なことではないが、近年はやや多重継承について短絡的に悪者あるは不要扱いしているように思う。

書籍「Fundamentals of Object-Oriented Design in UML」の著者も、多重継承について否定的である。

130531_105300

130531_105312_3

130531_105345_3

130531_105416_2

私は多重継承については、利用前提と利用する状況を考慮する必要があると考えている。

Javaで単一継承とインタフェースを併用すれば、事実上多重継承と同等の機能を実現できると主張する人もいるが、これは明らかに多重継承を軽視しているか理解不足である。

また、多重継承を利用しなくても「委譲(デリゲーション)」と単一継承同等の機能を実現できるというのも、多重継承を軽視しているか理解不足である。

正確にはインタフェースの利用も委譲(デリゲーションも、多重継承には及ばないが、似たことが実現できるという意味が正確には正しい。

多重継承の考えは、分析作業、設計作業、実装作業の中で意味合いが異なるし、実装際に利用する言語がどのように多重継承機能をサポートするかによっても、実装での利用が根本的に異なってくる。

多重継承の限らず、単一継承機能についても言語によって大きくメカニズムが異なる。

タイプ継承と実装継承に違いを理解していない人も多いし、実装継承がいけないわけでもない。LSP原則を必ず間もならければコードが意味的に破たんするとも限らない。

分析作業、設計作業、実装作業や実装言語のメカニズムを考慮せず、さらには、継承意味論を理解せず、巷の書籍や人々の噂をうのみにするのは危険である。

そういう意味では、多重継承に否定的、好意的の区別なく多くの書籍や情報に触れて、多重継承を各自が研究するのが良いと思う。

|

« 書籍「ApplyingOMT」~OMTの実例書 | トップページ | 書籍「OMT Insights」~洋書月刊誌「Object-Oriented Programming Journal」の人気コラム書籍化 »

「パソコン・インターネット」カテゴリの記事