タグ

developmentとabstractに関するkiyo_hikoのブックマーク (2)

  • 開放・閉鎖原則

    今回は、開放・閉鎖原則のお話です。 これも、リスコフの置換原則と同じかそれ以上に、ソフトウェア開発者の方には有名な原則ですね。 これも、開発の現場では、みんな知ってるにもかかわらずないがしろにされがちな原則です。 英語でopen・closed principleですので、OCPと略されたりもします。 ソフトウェア開発者でない方には、この原則の概念を理解していただきたいと思います。 この原則によって、あなたの生活からストレスが軽減される…かもしれません。 ソフトウェア開発者の方には、この原則の重要性を再認識していただきたいと思います。 コンテンツ計画は、細かければ細かいほど失敗しやすい例: 旅行計画オープンでクローズドオススメ計画は、細かければ細かいほど失敗しやすい 何か重要なやるべきことがあるとします。 すごく楽しみにしてた観光だとか、失敗できない仕事だとかそういうことです。 そんなとき、

    開放・閉鎖原則
    kiyo_hiko
    kiyo_hiko 2010/11/24
    これは座右の銘レベル「計画は、細かければ細かいほど失敗しやすい」
  • リスコフの置換原則(LSP) - Strategic Choice

    リスコフの置換原則(LSP:the Liskov Substitution Principle)派生型はその基型と置換可能でなければならない。どういうこと?使う側から言うと、基型を引数にとる関数に、どんな派生型のインスタンスをもらっても気にしないで使えないとダメ。実装側から言うと、派生クラスがその基クラスで使われるところにおいても、正常に動作することを保証しなければならない。なんで?使う側に意識させるということは、OCPに違反することになるから。つまり、LSPに違反すると、必然的にOCPにも違反してしまう。たとえば?ではまず、簡単な例。Shapeクラス、そしてその派生クラスCircle/Squareがある。Shapeにabstract関数を使わない。Circle/Squareにそれぞれ独自のDraw関数がある。ここでShapeを受け取ってDrawする関数を作ろうとすると、、、、 v

    kiyo_hiko
    kiyo_hiko 2010/11/24
    RectからSquareを継承すべきではない理由がこの法則・・・だったと思う。
  • 1