タグ

programmingとOOPに関するdonayamaのブックマーク (2)

  • 継承を禁忌すること - Radium Software

    IS-A IS-A HAS-A - Raganwald IS-STRICTLY-EQUIVALENT-TO-A - Raganwald OOP に関する書籍を読むと,たいてい「継承は軽々しく使うべきではない」というようなことが載っている。「継承は IS-A の関係にのみ使うべき」とか,「実装の共有に継承を使ってはならない」とか,「継承よりも合成・包含を優先すべき」とか……。 それが Raganwald に言わせれば,「IS-A の関係は HAS-A の関係と同じこと」とか,「継承は便利機能に過ぎない」とか,「リスコフの置換原則さえ生ぬるい」というような厳しい意見にまでなる(こんな風に言い切ってはいないけれど……まあ,そのようなことを丁寧に説いている)。 このような,制限の無い継承を禁忌する意見は,一般に納得することのできる内容ではある。ただ,それを現場で適用するのは,非常に難しいことのよう

    継承を禁忌すること - Radium Software
  • いまさらながらだけど、オブジェクトとクラスの関係を究めてみようよ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    オブジェクトとクラスの関係について、次のような説明を見かけました(文言の引用ではなくて、檜山による要約)。 オブジェクトとクラスは全体としてツリー構造をしていて、ツリーの末端をオブジェクト、末端以外のノードをクラスという。末端であるオブジェクトは、その親ノードであるクラスのインスタンスと呼び、クラスどおしの親子関係を継承関係と呼ぶ。 うーむ、この説明、ある意味「簡潔でわかりやすい」とも言えるのだけど、ちょっと単純化し過ぎでしょ。 オブジェクトやクラスの概念て、そんなに美しくもなきゃ、整合的でもありません。実用性やら実装上の都合やらでゴチャゴチャですがね。しかし、そのゴチャゴチャが悪いともいえません。ゴチャゴチャを無理に単純化することなく、必然性を持った(幾分は偶発的だけど(苦笑))複雑さとして理解すべきかと思います。 というわけで、メタクラスやレイフィケーション(reification)な

    いまさらながらだけど、オブジェクトとクラスの関係を究めてみようよ - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 1