継承と抽象
2024-05-15 ベン図
| [1] 例えば「正方形は長方形ではない」など。
一般的に、抽象的な物はそれを記述する特徴が少なく、具体的
な物はそれを記述する特徴が多いものです。ところが、特徴を
パラメータと読み替えると、思い通りにならないことがある。
その典型が正方形と長方形。
>プログラミング出羽、正方形または長方形の面積を求める関数
https://x.com/engeikana/status/1792207266923663650
一方、オブジェクト指向言語で面積を求める関数を書くとすると、
パラメータを2つ持つ RectAngle は、パラメータを1つだけ持つ
Square のサブクラスとして定義するのが自然で、Ruby 言語では、
class Square
…
attr_reader :a
def area
a * a
end
end
class RectAngle < Square
…
attr_reader :b
def area
a * b
end
end
のようにするでしょう。
正方形が上位クラスで長方形が下位クラスとなり、継承と抽象で
方向性が逆になる。なかなかアナロジーは難しい。
| [1] 例えば「正方形は長方形ではない」など。
一般的に、抽象的な物はそれを記述する特徴が少なく、具体的
な物はそれを記述する特徴が多いものです。ところが、特徴を
パラメータと読み替えると、思い通りにならないことがある。
その典型が正方形と長方形。
>プログラミング出羽、正方形または長方形の面積を求める関数
https://x.com/engeikana/status/1792207266923663650
一方、オブジェクト指向言語で面積を求める関数を書くとすると、
パラメータを2つ持つ RectAngle は、パラメータを1つだけ持つ
Square のサブクラスとして定義するのが自然で、Ruby 言語では、
class Square
…
attr_reader :a
def area
a * a
end
end
class RectAngle < Square
…
attr_reader :b
def area
a * b
end
end
のようにするでしょう。
正方形が上位クラスで長方形が下位クラスとなり、継承と抽象で
方向性が逆になる。なかなかアナロジーは難しい。
この記事へのコメント