|
1 / 1 / 0
Регистрация: 07.08.2014
Сообщений: 72
|
|||||||||||||||||||||
Как правильно реализовать множественное наследование?15.09.2016, 22:59. Показов 5902. Ответов 32
Метки нет (Все метки)
Всем привет. Нужна помощь. Вот смотрите. Имеется простой класс. От него порождаются два класса-наследника. А от этих двух классов порождается один класс. Так скажем, наследник третьего поколения. В каждом классе имеется метод Show() для отображения данных класса. Я сейчас их вам представлю.
Метод Show() базового класса:
Метод Show() второго класса 2-го поколения:
0
|
|||||||||||||||||||||
| 15.09.2016, 22:59 | |
|
Ответы с готовыми решениями:
32
Множественное наследование(правильно ли...образец) Множественное наследование
|
| 16.09.2016, 00:38 | ||
|
Не по теме:
и потом, это не принципиально. принципиально, что до тех пор, пока наследник реализует связь "я являюсь" - все будет нормально. безотносительно к множественности наследования. и наоборот - если логическая связь будет нарушена, получим УГ, так же вне зависимости от множественности наследования.
0
|
||
| 16.09.2016, 00:43 | |
|
0
|
|
| 16.09.2016, 00:50 | |||
|
Не по теме:
глобальные переменные могут вступать в коллизию с данными-членами, это тоже не аргумент? http://ideone.com/2E6IZ Не по теме:
listner_mouse, и listner_keyboard не являются интерфейсами. а являются обычными не абстрактными классами. вы считаете, что код стал УГ? какие то проблемы в дизайне наблюдаете? с чего вообще у вас возникло такое мнение, что если наследоваться от не интерфейса, то обязательно будет УГ? и вообще, какая вам разница от чего наследоваться: интерфейса, или полноценного класса?
0
|
|||
|
1 / 1 / 0
Регистрация: 07.08.2014
Сообщений: 72
|
|||||||||||||||||
| 16.09.2016, 09:00 [ТС] | |||||||||||||||||
|
Добавлено через 6 минут Предоставляю весь код. Классы:
Вообще, все работает как надо. Но я лишь спрашиваю, как можно лучше написать метод Show() последнего класса, чтобы повторно использовать код, а не переписывать все по новой и отдельно, как сделал я.
0
|
|||||||||||||||||
|
"C with Classes"
|
|||||||||||||||||||||||
| 16.09.2016, 09:15 | |||||||||||||||||||||||
|
Класс может иметь более одного непосредственного базового класса, то есть два и более классов могут указываться после двоеточия в объявлении класса. Рассмотрим задачу моделирования, в которой параллельно выполняющиеся задания представлены классом Task, а сбор данных и визуализация представлены классом Displayed. Далее мы можем определить класс моделируемых сущностей, например класс Satellite (спутник):
называть множественным наследованием (multiple inheritance). В противоположность этому наличие единственного непосредственного базового класса называют одиночным наследованием (single inheritance). Кроме операций, определенных специально для Satellite, мы можем использовать объединение операций классов Task и Displayed. Например:
ими Task или Displayed. Например:
которые обеспечивают видимость разных частей Satellite в функциях, ожидающих Task или Displayed, соответственно. Виртуальные функции работают как обычно. Например:
вызваны для Satellite, проинтерпретированного как Displayed и Task, соответственно. В случае одиночного наследования у программиста будет более ограниченный выбор для реализации классов Displayed, Task и Satellite. Satellite в таком случае может быть либо Task, либо Displayed, но не обоими сразу (если только Task не был реализован как производный класс от Displayed, или наоборот). Выбор любой из этих альтернатив означает потерю гибкости. А кому вообще может потребоваться такой вот класс Satellite? На самом деле, это вполне реальный пример (даже если кому-то он показался абсолютно искусственным). Существовала (а может и сейчас еще существует) программа, построенная по схеме, примененной здесь для иллюстрации множественного наследования. Она использовалась для исследования построения коммуникационных систем, включающих спутники (satellites), наземные станции и т.д. В рамках этой модели можно отвечать на вопросы об интенсивности трафика, находить правильную реакцию на ситуацию выведения из строя наземной станции (например, из-за торнадо), отыскивать оптимальное соотношение между нагрузкой на спутниковую связь и связь по Земле и т.д. Такое интенсивное моделирование предполагает множество операций вывода информации и множество отладочных операций. Также, нам нужно хранить состояние объектов Satellite и их подкомпонентов для анализа, отладки и восстановления после ошибок. The C++ Programming Language Special Edition Bjarne Stroustrup AT&T Labs Murray Hill, New Jersey Добавлено через 7 минут
1
|
|||||||||||||||||||||||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|||
| 16.09.2016, 09:27 | |||
|
0
|
|||
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|||||||
| 16.09.2016, 11:09 | |||||||
|
Не по теме: hoggy, так я выспался и готов к раунду номер 2!!! Да и где вы видели глобальные переменные с _NAME ? Вы просто хотите видеть их таких, чтобы оспорить _name. А как вы тогда пишите? m_name? А вы знаете, что это бомба замедленного действия. Вот пример: http://ideone.com/wUHKME Получается переменные класса лучше вообще не использовать? Это как услышать с ваших уст : "статические переменные лучше не использовать.". А что тогда использовать? "Ничего!". мало. Что нам мешает сделать качественную связь - зачем нам гибрид этот? И опять же:
я позитивно отношусь к _name потому, что подсознательно обладаю манерой коддинга, где переменные всегда с малой буквы? наследование, в другом реализация интерфейсов. Даже вот ваш пример через слушатели - они больше, я уверен, будут похожи на классы-хелперы: маленькие, 1-2 переменных, 1-4 метода. Да таких даже тяжело назвать проблемой ... Но если они разрастутся и у нас класс будет иметь 2 родителя гиганта - это я считаю не правильно. Чтобы вы в третий раз мне не задали один и тот же вопрос: вы понимаете мою философию про унаследовать класс и реализовать интерфейс?? Добавлено через 3 минуты
0
|
|||||||
|
"C with Classes"
|
||
| 16.09.2016, 11:13 | ||
|
0
|
||
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
| 16.09.2016, 11:15 | |
|
_stanislav, это связано напрямую с тем, что нету понятия интерфейс в стандарте/языке С++ в 2016 году.
0
|
|
|
1 / 1 / 0
Регистрация: 07.08.2014
Сообщений: 72
|
|||
| 17.09.2016, 16:40 [ТС] | |||
|
Добавлено через 47 секунд
0
|
|||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|||
| 17.09.2016, 17:23 | |||
|
0
|
|||
|
"C with Classes"
|
|
| 17.09.2016, 19:49 | |
|
Саша Перков, кстати вот хорошая статья, советую прочитать.
0
|
|
|
"C with Classes"
|
|
| 17.09.2016, 20:57 | |
|
и еще хорошая статья.
0
|
|
| 17.09.2016, 20:57 | |
|
Множественное наследование Множественное наследование Множественное наследование
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|