Re[4]: Математика и ООП: аналогии
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 03.11.03 14:00
Оценка:
Здравствуйте, Кирилл Осенков, Вы писали:

DG>>Все операции для эллипса доступны и для круга.

КО>Ну не знаю. А операция "сжать в n раз к большей оси? А как насчет провести прямую через фокусы?

Считаем, что для круга ось, например, всегда вертикальна
class Ellipse
{
  virtual Vector BigAxis {get {return (Focus1 - Focus2).Normalize();}}
}

class Circle:
  Ellipse
{
  override Vector BigAxis {get {return new Vector(0, 1);}}
}

тогда все эти операции продолжают работать.


DG>>Также у круга есть дополнительные операции.

КО>Круг — подтип эллипса — навязывает задание фокусами и эксцентрисситетом (или полуосями, или еще сотней способов — но не центром и радиусом). Если мы хотим эффективно обращаться с окружностями, их просто необходимо задавать центром и радиусом, иначе это будет очень неестественно.

DG>>Я бы даже сказал, что круг поддерживает интерфейс эллипса, а не наследуется от эллипса, т.к. хранить те же два фокуса уже не надо.

КО>Во. Это да.

Но ведь часть реализации тоже можно наследовать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.