« 2013年5月 | トップページ | 2013年7月 »

2013年6月

2013年6月 6日 (木)

書籍「OMT Insights」~洋書月刊誌「Object-Oriented Programming Journal」の人気コラム書籍化

ここ最近、OMTの書籍を紹介する機会が増えているが、書籍「OMT Insights」もその一つ。

これはアメリカの月刊誌「Object-Oriented Programming Journal」の人気コラムを書籍化したもので、コラムを書いているのはOMTやUMLで有名なJランボー氏だ。

130606_091728

もう古い書籍になるが、内容はOOADやOOPの本質について解説しているので、今読み直しても面白い。

洋書、和書を含め一般的なオブジェクト指向の技術書では取り上げないdeepなモデリングの議論もあるのは、月刊誌のコラムならではの内容だ。

130606_091743

限定子にまつわる議論。

130606_091753_2

関連の意味論。

130606_091809_2

継承と関連の考え方。

130606_091817

内容はクラス図が中心だが、シーケンス図(イベントトレース図)も登場する。

130606_091839

一部プログラムの話題もある。

|

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原則を必ず間もならければコードが意味的に破たんするとも限らない。

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

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

|

« 2013年5月 | トップページ | 2013年7月 »