![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
PashaLost |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 18.1.2008 Репутация: нет Всего: нет |
Возможно эта тема уже тысячу раз обсуждалась, но к сожалению, ответа на неё я не нашёл.
Итак. Нужно построить иерархию точка, круг, цилиндр. Дейтел по этому поводу советует воспользоваться public наследованием и всё. Слышал я, что это не очень красиво, ибо точка это никак не круг, а круг это никак не цилиндр. Так каким наследованием унаследовать точку, круг и ?... Или не использовать наследование вовсе ? Тогда как их лучше связать? |
|||
|
||||
Lateralus |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 5.11.2011 Репутация: нет Всего: нет |
Точка,круг,эллипс-по-моему, лучше так.
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
все верно. это вообще разные объекты, которые имеют разные свойства и поведение. никак опять никак. точка - это одномерный объект, круг - двумерный, а цилиндр - трехмерный. В принципе, круг - это вырожденный случай цилиндра (высота нулевая), а точка - вырожденный случай круга (радиус нулевой). Так что, это по сути один класс, но три разных объекта. |
|||
|
||||
PashaLost |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 18.1.2008 Репутация: нет Всего: нет |
ну хорошо, передо мной стоит конкретная задача, связать эти три объекта в иерархию. Как мне это сделать, если обходиться без наследования ?
Это сообщение отредактировал(а) PashaLost - 6.11.2011, 20:45 |
|||
|
||||
newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 3 Всего: 19 |
-------------------- You're face to face With man who sold the world |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
PashaLost, иерархия подразумевает наследование. Если дано такое некорректное задание, то придется давать на него ответ: точка имеет три атрибута: X,Y,Z; и один виртуальный метод: нарисоваться. Круг добавляет атрибут радиус и углы наклона плоскости (в которой он размещен) относительно осей координат; переопределяет метод "нарисоваться". Цилиндр добавляет к кругу атрибут высота и переопределяет метод "нарисоваться".
|
|||
|
||||
PashaLost |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 18.1.2008 Репутация: нет Всего: нет |
А если я создам класс ФИГУРА, с полями X и Y. Создам также классы ТОЧКА и КРУГЛАЯ ФИГУРА, которые будут открыто наследоваться от класса ФИГУРА. Класс Круглая фигура будет содержать в себе радиус. Создам классы КРУГ и ЦИЛИНДР, которые будут открыто наследоваться от класса КРУГЛАЯ ФИГУРА. Цилиндр будет содержать в себе только высоту. ???
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Цилиндр не круглая фигура..
|
|||
|
||||
PashaLost |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 18.1.2008 Репутация: нет Всего: нет |
Кстати, newbee, а что означает твой статус БРЕВНО ???
Добавлено через 1 минуту и 6 секунд очень даже круглая, в ней ведь ЕСТЬ радиус и его (цилиндр), как и круг, можно спокойно покатить, значит круглая ![]() |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
а, позвольте узнать, зачем их связывать ? если потому, что просто надо, то обычным насдледованием.. если хотите, чтоб правильно было, то на данной стадии никак.. Добавлено @ 21:20
тогда и машина круглая, ведь ее колеса круглые и она еще катится.. Это сообщение отредактировал(а) mes - 6.11.2011, 21:23 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
||||
|
||||
PashaLost |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 18.1.2008 Репутация: нет Всего: нет |
я не знаю, кто приплёл этот эллипс, мне он не нужен.
А вот кстати что у меня получилось, вроде всё работает ... но правильно ли я всё сделал ...
|
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
PashaLost, IMHO в этой иерархии Round лишний.
А задание, действительно, совершенно некорректное -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
de_Nis |
|
|||
![]() Старательный ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 19.10.2006 Где: Молдова Репутация: нет Всего: 6 |
Может быть, имеет смысл почитать в книге Миронченко Андрей Императивное и ООП программирование на Turbo Pascal и Delphi раздел 16.5 Агрегация классов. Привожу выдержку: "... В следующем примере мы построим 3 класса, описывающие геометрические фигуры в трехмерном пространстве: точка, круг и шар, используя агрегацию..." И далее подробно описано, как и почему созданы классы, как они связаны друг с другом. Не думаю, что понимание кода на Паскале будет затруднительно - важна идея. P.S. По поводу названия книги не уверен, автор указан точно. Книга есть в Сети. --------------------
Несчастлив не тот, у кого ничего нет, а тот, кто ничего не хочет… |
|||
|
||||
newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 3 Всего: 19 |
Я приплела, ведь окружность - частный случай эллипса. И вот тут было бы корректно использовать наследование эллипс-окружность.
Кстати, ТС, вон выше пишут о книге, где советуют использовать агрегацию. Выше я приводила код - как раз оно самое ![]() ЗЫ, А бревно.. Ну потому что бревно. -------------------- You're face to face With man who sold the world |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |