Верно ли говорят что бывают прямоугольники которые не являются квадратами да или нет

Разбираем геометрический парадокс: правда ли, что существуют прямоугольники, не ставшие квадратами? Спойлер: да, и мы докажем почему!

Краткий ответ

Да, абсолютно верно․ Большинство прямоугольников не являются квадратами․

Разберёмся по полочкам

Что такое прямоугольник?

Прямоугольник — это четырёхугольник, у которого все углы прямые (90°)․
Достаточно выполнения одного из двух условий:

  • все четыре угла равны 90°, или
  • это параллелограмм с равными диагоналями․

Что такое квадрат?

Квадрат — это частный случай прямоугольника, у которого дополнительно все стороны равны․

  1. 4 прямых угла (как у любого прямоугольника)․
  2. 4 равные стороны (отличие от «обычного» прямоугольника)․

Венн-диаграмма «Прямоугольник ⭢ Квадрат»

На интуитивном рисунке:

  • Большой круг «Прямоугольники»․
  • Внутри него маленький кружок «Квадраты»․

Это означает: каждый квадрат — прямоугольник, но не каждый прямоугольник — квадрат․

Контрпримеры

Возьмём прямоугольник со сторонами 3 см и 5 см:

  • Все углы — 90° ⇒ это прямоугольник․
  • Стороны 3 ≠ 5 ⇒ это не квадрат․

Значит, мы нашли прямоугольник, который не является квадратом․ Следовательно, утверждение «бывают прямоугольники, не являющиеся квадратами» верно․

Как это связано с ООП?

Иногда в учебниках приводят «контравariant» пример:

class Rectangle {

 double a, b;
 double area { return a*b; }
}

class Square extends Rectangle {
 // плохо: наследник ограничивает свободу родителя
}

Это антипаттерн наследования, потому что класс-наследник жёстко фиксирует a == b, ломая подстановочный принцип (LSP)․ Геометрически же квадрат является прямоугольником, но в ООП необходимо разделять «is-a» и «has-a»․

Да, бывают прямоугольники, которые не являются квадратами․ Это основа геометрии пятого класса и прекрасный повод проверять, действительно ли ваши «квадратные» объекты в коде не ломают принципы SOLID․