Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Множественное наследование 
V
    Опции темы
Mephisto
Дата 16.11.2006, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



Существует ли в делфях множественное наследование?
 smile 
Пасип.
PM   Вверх
skyboy
Дата 16.11.2006, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 4
Всего: 260



для неабстрактных классов - не сущетсвует. только для интерфейсов.

Добавлено @ 14:03 
можно обойтись включением экземпляра класса в свой класс, как свойства.
можно наследовать интерфейсы.
т.е. решение все равно есть smile
PM MAIL   Вверх
Snowy
Дата 16.11.2006, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Mephisto @  16.11.2006,  13:54 Найти цитируемый пост)
Существует ли в делфях множественное наследование?
Только интерфейсов.
Как правило нет таких ситуаций, где бы оно действительно требовалось.
Даже абстракто трудно придумать ситуацию, где бы без него нельзя было бы обойтись.
Поэтому не имеет смысла вводить его в язык.
PM MAIL   Вверх
skyboy
Дата 16.11.2006, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 4
Всего: 260



Цитата(Snowy @  16.11.2006,  13:11 Найти цитируемый пост)
Даже абстракто трудно придумать ситуацию, где бы без него нельзя было бы обойтись.

нуууу... нельзя придумать ситуацию, в которой нельзя было бы обойтись без классов... записей... массивов...  но ведь кроме граблей, множественное наследование, вполне может предоставить некоторое удобство.. согласен?
PM MAIL   Вверх
Snowy
Дата 16.11.2006, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



ИМХО, если есть необходимость в множественном наследовании, значит плохо продумана иерархия классов.
Возможно в некоторых случаях это более простое, но вряд ли более грамотное решение.
Это не входит в концепт паскаля, т.к. он строгий язык.
Физически реализовать его можно. Даже без внедрения на уровне системы можно искуственно сэмулировать множественное наследование и на текущей версии дельфи.
А уж разработчикам ввести такое понятие вообще особого труда не составит.
Просто это не наш путь smile
PM MAIL   Вверх
skyboy
Дата 16.11.2006, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 4
Всего: 260



Цитата(Snowy @  16.11.2006,  13:34 Найти цитируемый пост)
если есть необходимость в множественном наследовании, значит плохо продумана иерархия классов.

возьму игру. не конкретную, просто - shooter(от первого лица)
две иерархии классов. одна - подвижность(для создание "подвижных" и "неподвижных" объектов). вторая иерархия реализует понятия "уничтожаемости" и "неуничтожаемости"(положим, у них совершенно разная обработка взаимодействия с окружающим миром). теперь мне надобно посоздавать объекты на пересечении иерархий: неподвижные уничтожаемые, подвижные неуничтожаемые и т.д.. 
Как спроектировать правильнее, нежели с использованием множественного наследования?
(опять же - речь не о возможных граблях и недостатках реализации, а о самом подходе)
--
Например, можно было бы создать объект "двигатель" и записывать его в качестве поля. но ведь:
а) у нас "однодвигательные" объекты
б) неподвижные объекты должны будут иметь "фиктивный двигатель"(который не двигает) для унифицированной обработки, при том, что такое нафиг не надо(вроде, как у дерева крылья есть, просто оно ими махать не умеет - оттого не летает)
PM MAIL   Вверх
Mephisto
Дата 16.11.2006, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



Спасибо.

В принципе понятно.
 smile 
PM   Вверх
Snowy
Дата 16.11.2006, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Плохой пример. Не убедительный.
Нет разницы между подвижными и неподвижными объектами smile
Сейчас в играх все разрушаемые объекты можно подвигать smile
Даже если так и делить, то просто наследуем подвижный от не, и добавляем уму логику движения.
А ноги и крылья добавляются уже в движимом объекте. В родителе их нет и не должно быть.
Если нужны движимые по типу (бегающие, летающие, плавающие и т.п.), то просто наследуем от недвижимых, например тип "бегающий" и всех бегающих наследуем от него.
Можешь дальше не продолжать. Всему можно продумать грамотную иерархию.
PM MAIL   Вверх
Mephisto
Дата 16.11.2006, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



Просто нужно стараться чтоб объектная модель как можно больше соотвестсвовала прикладной части.
 smile 
PM   Вверх
skyboy
Дата 16.11.2006, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 4
Всего: 260



да, пример слабоват. к вечеру придумаю посильнее smile
Цитата(Snowy @  16.11.2006,  14:09 Найти цитируемый пост)
Даже если так и делить, то просто наследуем подвижный от не, и добавляем уму логику движения.

а неразрушаемый - от разрушаемого? поставить "бесконечно жизней"? обработка разрушения - создание такого же объекта? а пересечения классов - как? разрушаемому и неразрушаемому классу отдельно прописывать одинаковую логику перемещения? делегирование синтетическим объектам?
PM MAIL   Вверх
Snowy
Дата 16.11.2006, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(skyboy @  16.11.2006,  15:37 Найти цитируемый пост)
а неразрушаемый - от разрушаемого? поставить "бесконечно жизней"?
Просто флаг "сюжетный" или "неразрушаемый".

Цитата(skyboy @  16.11.2006,  15:37 Найти цитируемый пост)
да, пример слабоват. к вечеру придумаю посильнее
Тогда заводи тему в религиозных войнах "Множественное наследование - Есть ли необходимость использовать?"
Ибо данное обсуждение не входит в рамки данного раздела.
PM MAIL   Вверх
skyboy
Дата 16.11.2006, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 4
Всего: 260



Snowy, не, лучше закончить здесь. я ведь не считаю это панацеей. просто, как мне кажется, в нем(множественном наследовании) не только зло, но и добро  smile в смысле - удобство при проектировании.
PM MAIL   Вверх
Snowy
Дата 16.11.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



При проектировании - нет.
При реализации - да, если спроектировано хреново.
Продолжать здесь не стоит, ибо это затянется и вся тема уйдёт в войны smile
Да и не охота время на эту тему тратить.
Поищи в инете подобные обсуждения - всё уже написано на данную тему.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0655 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.