始める無料で始める

正方形と長方形

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

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

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

この演習はコースの一部です

Python によるオブジェクト指向プログラミング

コースを見る

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Define a Rectangle class
____

# Define a Square class
____
コードを編集して実行