Здравствуйте, Gaperton, Вы писали:
G>Попался!
Да, про то, что круг перестает быть кругом не подумал. ступил.
G>Грабли номер 1: в императивных языках с поддержкой ООП есть ограничение на операции. Они должны быть замкнуты, т. е. не выводить экземпляр класса из этого класса. Для функциональных языков это не так, но это случай отдельный и экзотический.
Императивные языки — это какие?
Если имеются ввиду — строго типизированные, то в них такие операции (которые меняют тип объекта) плохо реализуются.
G>Применение stretch ("сжать в n раз к большей оси") в твоем примере выведет экземпляр Circle из класса Circle, и он станет эллипсом (так как ты все-таки согласился ввести ось для круга). Если не согласен, то просто попробуй написать метод stretch.
Маленько освобожусь и отвечу