1. 学ぶ
  2. /
  3. コース
  4. /
  5. Python によるオブジェクト指向プログラミング

Connected

演習

正方形と長方形

Liskov 置換原則に反する古典的な例として、円と楕円の問題(Square-Rectangle problem と呼ばれることもあります)があります。

一見すると、h(高さ)と w(幅)という属性を持つ Rectangle クラスを定義し、その Rectangle を継承した Square クラスを定義できそうに思えます。結局のところ、正方形は「長方形の一種」ですよね。

しかし残念ながら、この直感はオブジェクト指向設計には当てはまりません。

指示1 / 4

undefined XP
    1
    2
    3
    4
  • 2 つの引数 h と w を受け取り、属性 h と w にそれぞれ設定するコンストラクタを持つクラス Rectangle を作成します。
  • Rectangle を継承したクラス Square を作成します。コンストラクタは引数を 1 つ w のみ受け取り、h と w の両方の属性にその w の値を設定します。