ちゃんとOOPを学習していないのですし、該当する書籍を読み込んでいないのでなんともいえませんが、軽症という事象にはいくつかの要因があるのではないかと推察します。
- インターフェイス
- 実装
- データ構造
この3要素があると思う。
よく考えずにこれらをごっちゃにして継承をさせていくとどこかで使いにくさが出てくるように思われる。さらにいうとデータ構造の部分が特に危険だと感じています。
インターフェイスの継承は一般的なOOPでの利用に関して合致しそうです。多態性の文脈に合致します。
実装の部分は、特化したインターフェイスを生かし続ける形で実装しないといけないのでとてもナイーブな感じがします。
データ構造に関しては実に困難さを覚えるのですが、多態のためにサブクラス分化するとあまりにクラスが分割されすぎる気もしますし、それぞれの振る舞いがデータ構造に依存しているときにはやりようがないのですが、うまくまとめないと理解しにくくなりすぎる感があります。
どうすりゃいいんだ。OOPはあまりに強い困難さを覚えます。設計ということに向いていないのかもしれない、、、データ構造と実装があまりに緊密になっている感が。。。でもデータ構造が抽象された実装はアルゴリズムとなっているなぁ。。。
インターフェイスはある意味ではさらにもう一層上のレベルでの継承関係をあらわすのかもしれない。
そう仮定すると、COMやインターフェイス志向の記述は、実装を含めたデータ構造を抽象化したものであり、これは一層抽象度が高いので変更可能性強度が増すと思う。
0 件のコメント:
コメントを投稿