継承と抽象

 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

のようにするでしょう。

正方形が上位クラスで長方形が下位クラスとなり、継承と抽象で
方向性が逆になる。なかなかアナロジーは難しい。

この記事へのコメント