crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Двоякий класс
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) Круглый и Цветной.

у них у всех четырёх должен быть общий предок. А потомки будут вести себя согласно заданным свойствам.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2024, 17:38