Help us understand the problem. What is going on with this article?

プログラムを書くときの注意点:その3

プログラムを書くときの注意点:その3

1.結論
2.リスコフの置換原則とは何か
3.なぜリスコフの置換原則が必要か
4.リスコフの置換原則はどう使うのか
5.ここから学んだこと

1.結論

リスコフの置換原則にも従う!

2.リスコフの置換原則とは何か

●リスコフの置換原則とは、

簡単にいいますと、親クラスは子クラスと
同じ動きにしないといけない

逆を言うと、子クラスが親クラスのメソッドの
挙動を変えてはいけないということです。

3.なぜリスコフの置換原則が必要か

結論としては、プログラミングを書く際の要は以下の
3つに集約されると思っています。

Ⅰ)保守性:修正(エラー発見のしやすさ)・管理のしやすさ
Ⅱ)拡張性:追加機能実装のしやすさ
Ⅲ)可読性:記述のわかりやすさ
が必要だと考えております。

上記3つのことは自分が他の4つの原則を説明する際に
同じことを言うので、5つの原則のうちどれかを読んでいただくと
結論はすべてこの3つに収まります。

つまり、上の3つを叶えるには
リスコフの置換原則に”も(他の4つの原則もあるので)”従う!!

4.リスコフの置換原則はどう使うのか

こちらも例を用いて説明いたします!

リスコフの置換原則
class A
 def initialize(aaa)
 end

 def a
 end
end

class B < A
 def initialize(aaa)
  @bbb = aaa
 end

 def b
 end
end

================

class C < A 
 def initialize(aaa)
 @bbb = aaa
 @ccc = aaa
 end

 def a
 end

 def c
 end

リスコフの置換原則ではない
class A
 def initialize(aaa)
 end

 def a
 end
end

class B < A
 def initialize(aaa)
  @bbb = aaa
 end

 def b
 end
end

class B < A 
 def initialize(aaa)
 @ccc = aaa
 end

================

class B < A
 def initialize(aaa)
  @bbb = aaa
  @ccc = aaa
 end

def a
 if ccc
 else
    ccc_a
 end

 def c
 end
end

”リスコフの置換原則ではない”の方に、
================の下に
classBにしていますが、
”リスコフの置換原則”の方に、
================の下に
classCに変換しています。

classBに一緒にするより、
classCに分けて原則に則っています。


5.ここから学んだこと

i)リスコフの原則自体、まったく知らなかったので
 調べること自体にすごく価値がありました!

ii)親クラスと子クラスを連動はさせるものの、
子クラスから親クラスに影響を受けないようにすることがポイントでした!


taka_no_okapi
『笑謝を、自分らしく、続け、』 #100DaysOfCode #HTML #CSS #Javascript #Ruby 勉強中! プログラムまったくの未経験、0の状態から学習中! みなさんが同じところでつまずいた際に 少しでも共有できればと思い、作りました!
https://twitter.com/taka_no_okapi
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした