--/--/--(--)


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
コメント(-) | トラックバック(-) | --:--:--

2013/04/11(木)


ポリモーフィズムは一般的にオブジェクト指向の代名詞のように扱われることが多いですが、ポリモーフィズムを再利用性の観点から説明する場合には慎重に行わなければならないと私は考えます。なぜならポリモーフィズムの根源的な意味とは、オブジェクト同士の結合を弱める疎結合化の仕組みにあるからです。再利用の役割を担っているのは(そうなるように作った)設計の側にあり、オブジェクトそのものの方にあると言えると思います。ポリモーフィズムはオブジェクトを再利用可能なまでに汎化させるための手段の一つに過ぎません。どちらかと言えば抽象化し実装への依存度を下げることで将来的な拡張に備えることに力点が置かれた仕組みであり、説明の際は「拡張性」あるいは「拡張における再利用性」と厳密に言うべきかもしれません。どちらにしてもその土台には「抽象化」という設計思想が存在し、ただただポリモーフィズムの仕組みを使っていれば良いプログラムなんだというわけではありません。

 では設計における「抽象化」というのはどういうことでしょうか。

ここにも私は注意を払うべき点があると感じています。なぜなら基底となるクラスが抽象化されるのは設計の結果そうなるのであって、抽象化することそのものが設計の目的ではないからです。もし抽象化が何に置いても是であるとするのならば、すべてのインタフェースはvirtualに抽象化されなければなりません。しかしあまりにも汎化の進んだモジュールは可読性やアクセシビリティを恐ろしく低下させます。抽象化は将来拡張の可能性のある箇所にのみ行うべきであり、拡張部分を局所化し効率良く機能させるためにも、疎結合化、論理階層化、モジュール化などの観点からの設計をまず行わなければなりません。

オブジェクトは現実にあるものを写実する必要すらありません。オブジェクトを説明する際によく使われる「データやその集合を現実世界のモノになぞらえうんぬんかんぬん……」という文章は、間違ったメッセージを与える可能性があるという点で問題があると思います。


スポンサーサイト
コメント(0) | トラックバック(0) | 12:53:01

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。