Re[5]: квадратики
От: Alexey_ch Швейцария  
Дата: 08.09.05 14:26
Оценка:
Здравствуйте, fomiha, Вы писали:
F>то что прямоугольник порожден от квадрата следует из того, что квадрат можно описать одним свойством
F>длина его стороны(a), а у прямоугольника появляется новое свойство — длина другой стороны (в). Итого прямоугольник наследуется от квадрата с появлением дополнительного своего свойства.
ООП должен облегчать жизнь программисту, не так ли?

Допустим, нам нужно нарисовать квадрат и прямоугольник на экране. Для этого создадим метод Draw().
Т.к. фигуры двухмерные, то нам прийдется использовать длину и ширину в обоих случаях, но для квадрата это будет одно и то же значение. Теперь вопрос: что должно быть базовым классом, если мы не хотим писать код Draw() дважды (вынос кода Draw() в функтор будем считать наглым читерством, т.к. для общего случая на входе будет длина и ширина раздельно)?

P.S. Квадрат нельзя описать одним свойством, т.к. без знания, что с этим свойством делать, квадрат не нарисуется И это знание как раз заключено в методе Draw().

However, let’s assume that we are not very concerned with memory efficiency. Are
there other problems? Indeed! Square will inherit the SetWidth and SetHeight functions. These functions are utterly inappropriate for a Square , since the width and height of a square are identical.”.

Какой ужас Наверное инициализировать объект в конструкторе и оставить только методы GetWidth() и GetHeight() не позволяет религия
... << RSDN@Home 1.1.4 beta 7 rev. 0>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.