DG>Эллипс — базовый класс, круг наследуется от эллипса.
Лично я не стал бы связывать эллипс и окружность отношением "подтип". Они оба реализуют интерфейс "эллипс" — это да. Объект типа эллипс может в очень частном случае оказаться окружностью, более того, у него может быть конструктор, инициализируемый объектом типа "окружность". Но способ задания разный.
DG>Все операции для эллипса доступны и для круга.
Ну не знаю. А операция "сжать в n раз к большей оси? А как насчет провести прямую через фокусы?
DG>Также у круга есть дополнительные операции.
Круг — подтип эллипса — навязывает задание фокусами и эксцентрисситетом (или полуосями, или еще сотней способов — но не центром и радиусом). Если мы хотим эффективно обращаться с окружностями, их просто необходимо задавать центром и радиусом, иначе это будет очень неестественно.
DG>Я бы даже сказал, что круг поддерживает интерфейс эллипса, а не наследуется от эллипса, т.к. хранить те же два фокуса уже не надо.
Во. Это да.