Двоякий класс |
Здравствуйте, гость ( Вход | Регистрация )
Двоякий класс |
Litkevich Yuriy |
14.9.2018, 7:50
Сообщение
#1
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Несколько раз, при написании программ, возникала проблема со структурой классов.
Допустим есть 3 класса: Круглый, Цветной, Умный, при этом Круглый и Цветной имеют общий базовый класс, в общем случае может быть как прямой так и через несколько классов (например, QObject) У класса Умный есть методы: Раскрывающийся текст добавитьЦветные(список<Цветной> цветные); установитьКруглый(Круглый круглый); Иногда требуется ещё один класс, который в программе ведёт себя двояко, то как Круглый, то как Цветной. Выходил из положения так (на примере Умного): Раскрывающийся текст добавитьЦветные(список<Цветной> цветные); добавитьЦветные(список<Двоякий> цветные); // перегруженный метод установитьКруглый(Круглый круглый); установитьКруглый(Двоякий круглый); // перегруженный метод Как бы так извернутся, чтобы получить Двоякий класс, который можно было бы применять и вместо Цветного и вместо Круглого, не создавая перегруженных версий функций у класса Умный? |
|
|
Алексей1153 |
15.9.2018, 11:30
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Litkevich Yuriy,
я так понимаю, возможные свойства класса - потомка следующие: 1) Круглый 2) Цветной 3) Умный 4) Круглый и Цветной. у них у всех четырёх должен быть общий предок. А потомки будут вести себя согласно заданным свойствам. |
|
|
Текстовая версия | Сейчас: 22.11.2024, 17:38 |