Ввиду того, что
предыдущая темаАвтор: Serginio1
Дата: 26.03.13
(равно как и
более ранняяАвтор:
Дата: 02.07.11
) утонула в неизвестно чём, решил высказать свои соображения в новой теме.
Напомню вопрос: "Интересно а как ты квадрат то наследовать будешь? Это вырожденный прямоугольник у которого все стороны равны". Сам вопрос, к слову, есть ни что иное, как "
проблема круга и эллипса", и даже есть какие-то потуги разрешения:
— через введение обобщения (Square -> Figure <- Rect);
— через требование неизменности объектов;
— через информационную составляющую (как Rect <- Square так и Square <- Rect (!)_)
— через слияние понятий "Square / Rect";
— и т.д.
Но, что самое интересное, от слова "топология"
никто (в смысле: "я не нашёл"
) особо не отталкивается при попытках выдать-объяснить решение. Что, если взглянуть на проблему под "топологическим" углом? Быстро выясняется, что любой простой многоугольник (и даже более того — любая замкнутая кривая без самопересечений) топологически эквивалентен окружности. Интересная наклёвывается иерархия, не находите? Вместо специализации поведения — специализация состояния. На вершине иерархии, в базовом классе — интегральные, вычисляемые, качества фигур (площадь, периметр и т.п.), в потомках — лишь специфичные характеристики (радиус, фокусы, углы и т.п.).