2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Эллипс и окружность: что от чего наследуется.
Сообщение23.09.2011, 09:25 
Админ форума
Аватара пользователя


19/03/10
8952
 !  Klad33, объявлять Вам четвертое предупреждение за оффтопик смысла не вижу, поэтому -- трехдневный бан.

 Профиль  
                  
 
 Re: Эллипс и окружность: что от чего наследуется.
Сообщение23.09.2011, 09:33 
Аватара пользователя


22/12/10
264
Ну, такие примеры обычно приводят в качестве доводов критики ООП. А если уж действительно надо именно на вопрос в заголовке темы ответить, и именно в рамках ООП, с практической т.з., то эти два класса не должны друг от друга наследоваться. Но не потому, что
Sanyok в сообщении #485451 писал(а):
поскольку человек, не сведующий в математике, воспринимает их как разные фигуры.

а потому, что у этих классов разный набор определяющих свойств. Скажем, если (как у классиков ООП) речь идёт о векторном графическом редакторе, то набор свойств классов мы будем подбирать так, чтобы по значениям свойств можно было объект без проблем нарисовать. Свойства получатся такие (как минимум): у окружности: координаты центра и радиус. У эллипса: координаты центра и две полуоси. Ни одна из полуосей не является радиусом, поэтому получить класс Эллипс из класса Окружность, добавив одно свойство, нельзя. Получить класс Окружность из класса Эллипс нельзя, т.к. у окружности нет полуосей, а в концепции наследования классов говорится только про добавление свойств (методов), но не удаление.

А с ещё более практической т.з. класс Окружность нужно выкинуть совсем, а классу Эллипс добавить метод bool Ellipse::isCircle() { return this.a == this.b; }.

 Профиль  
                  
 
 Re: Эллипс и окружность: что от чего наследуется.
Сообщение23.09.2011, 12:19 
Заслуженный участник


09/09/10
3729
Цитируя Дейта, "По моему мнению, любая модель наследования, в которой тип ОКРУЖНОСТЬ не является подтипом типа ЭЛЛИПС, вряд ли может считаться хорошей моделью действительности". И позже: "However, the fact remains that circles are ellipses in reality; if we choose not to regard them in that way in “our system,” then certainly the things that “our system” calls circles and ellipses differ in some rather important ways from circles and ellipses in the real world. Indeed, they simply aren’t circles and ellipses (by definition), at least as those constructs are conventionally defined and understood. [...] Note too that if “our system” includes “ellipses” that aren’t ellipses or “circles” that aren’t circles, then “our system” is likely to be seriously misunderstood, and possibly misapplied, both by our intended users and by people who might subsequently have to perform maintenance on the system. So if you really want to have a system that supports ellipse-like things that aren’t ellipses or circle-like things that aren’t circles, then I would suggest very strongly that—at the very least—you call those things something other than ellipses and circles."

Вообще говоря, есть модель наследования, в которой окружности являются эллипсами, это очень изящная и удобная вещь, но она совершенно несовместима с существованием указателей/ссылок на объекты.

Да, _hum_, так вы соглашаетесь, что ваш "классический пример" вовсе даже и не классический?

 Профиль  
                  
 
 Re: Логика. Определить родовое и видовое понятие для слова ОВАЛ
Сообщение23.09.2011, 18:39 
Аватара пользователя


31/10/08
1244
_hum_ в сообщении #485386 писал(а):
Joker_vD в сообщении #485385 писал(а):
класс "эллипс" должен наследоваться от класса "окружность"

Это как?
("Всякий эллипс есть окружность"?)

Ну класс эллипсов входи окружность. Поэтому резонно что он унаследован от окружности.
Просто добавятся свойства второй радиус и поворот осей. А методы с одним радиусом перекрывать, по надобности.

Да, всякий эллипс есть окружность с вытянутыми осями и повёрнутый на определенный угол.


А да наследовать окружность от эллипса нельзя, так как в таком случае мы сможем у окружности задать две оси. И что у нас получиться? Эллипс с классом окружности? Вы только путаницу внесёте. Да и это приведёт к вырождению классов. А полностью экранировать методы это равносильно создания нового класса без наследования.

 Профиль  
                  
 
 Re: Эллипс и окружность: что от чего наследуется.
Сообщение23.09.2011, 18:56 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Pavia в сообщении #485601 писал(а):
Ну класс эллипсов входи окружность.


"Казнить нельзя помиловать". Поставьте предлог "в" в правильное место фразы, пожалуйста.

-- Пт сен 23, 2011 19:58:17 --

Нельзя эллипс наследовать от окружности, много чего поломаться может.

 Профиль  
                  
 
 Re: Эллипс и окружность: что от чего наследуется.
Сообщение23.09.2011, 19:24 
Заслуженный участник


09/09/10
3729
PAV
И окружность нельзя от эллипса наследовать. Ах, если бы хоть в одном ООП-языке было specialization by constraints! Оно-то позволяет производить окружность от эллипса. Но увы, SbC, как я уже писал, несовместимо с наличием ссылок/указателей на объекты... поэтому увидеть его можно будет, скорее всего, только в реляционных СУБД.

 Профиль  
                  
 
 Re: Эллипс и окружность: что от чего наследуется.
Сообщение23.09.2011, 19:26 
Заслуженный участник
Аватара пользователя


01/08/06
3055
Уфа
Проблема эллипса и круга здесь уже обсуждалась ажно 2 раза: 3 года назад и год назад.

 Профиль  
                  
 
 Re: Эллипс и окружность: что от чего наследуется.
Сообщение23.09.2011, 19:47 
Заслуженный участник


09/09/10
3729
worm2
Да я и не сомневался, просто пришлось к слову... Что меня огорчает в статьях по ООП, так это расплывчатость, и смешение понятий "переменная" и "значение" в одну кучу. У Дейта в "Date on Database: Writings 2000-2006" есть статья про модель наследования, так там он когда разбирает статью Лисков, все время сокрушается, что "объект" у нее означает и текущее значение переменной, и саму переменную, что так и не указаны отличия между "классом" и "типом" — или не сказано, что это синонимы, и т.п.

 Профиль  
                  
 
 Re: Эллипс и окружность: что от чего наследуется.
Сообщение23.09.2011, 21:39 


23/12/07
1757
bot в сообщении #485442 писал(а):
_hum_ в сообщении #485424 писал(а):
Теперь ТС останется в уверенности, что то, чем она занимается - никому не нужная схоластика.

Что-то я сомневаюсь, что ТС этим занимается - ей в каком-то курсе логики такую задачу предложили. Вот, с тем что это логика ИСН и не согласился. Я с его оценкой полностью согласен.

Во-первых, это логика - так называемая формальная (несимволическая) логика, наука о наиболее общих формах мышления (настолько общих, что изложение большей части этой науки идет на неформальном (человеческом) языке). Поскольку одной из центральных единиц мышления является понятие, то в нее с необходимостью входит изучение оного (определения понятий, иерархические связи между ними и проч.). Схоластичными подобные занятия могут показаться только человеку, никогда не разрабатывающему собственных концепций (в любой области - будь то математика, естественно-научные или гуманитарные дисциплины).
Во-вторых, дав высказаться одним, нужно предоставить возможность высказаться противоположной стороне. А так, получается, ТС теперь с легкой руки ИСН и модератора даже не будет сомневаться в "схоластичности" своих занятий.
Цитата:
Ну а ООП, хотя я в нём и не разбираюсь - это уж точно не логика. Правильно отделили.

В такой же степени, в какой программирование не математика.
Joker_vD в сообщении #485499 писал(а):
Да, _hum_, так вы соглашаетесь, что ваш "классический пример" вовсе даже и не классический?

А что разве нами поднимался вопрос о том, считать ли этот пример классическим? Под "классическим" я понимал, что он часто упоминается в учебниках по ООП. А вообще, я согласен с цитатой Дейтла, и с этим особенно:
Цитата:
So if you really want to have a system that supports ellipse-like things that aren’t ellipses or circle-like things that aren’t circles, then I would suggest very strongly that—at the very least—you call those things something other than ellipses and circles.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group