Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
13 / 13 / 7
Регистрация: 21.04.2013
Сообщений: 245
1

Как лучше сделать иерархию классов?

30.11.2014, 15:24. Показов 756. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Мой вопрос заключается в том, что я хочу понять как лучше сделать иерархию классов: шаблонами или простым множественных порождением _многих_ классов.

Значит есть абстрактный один класс, и несколько классов определяющих свойства сущностей. Дело в том, что сущности могут комбинировать все эти свойства.

Пока я вижу один главный АБК и три класса-свойства; вместо того, чтобы делать кучу классов с множ. наследованиес (комбинаторный взрыв же получается, если свойства в ходе разработки добавятся) не лучше ли определить шаблонный класс и проэктировать используя эту технологию?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.11.2014, 15:24
Ответы с готовыми решениями:

Архитектура программы: как лучше реализовать иерархию классов? (игра "Тамагочи")
Здравствуйте! Пишу игру тамагочи на с++ ооп. Есть класса Critter (основная). Походными классами од...

Разработать иерархию классов, демонстрирующее работу с коллекцией объектов разных классов
Задание: Разработать в соответствии с индивидуальным заданием иерархию классов и приложение,...

Как лучше построить иерархию классов
Добрый день, пишу программу на курсовую, тема работы компьютер(строитель компьютера). И сомневаюсь,...

Подскажите как лучше всего реализовать иерархию классов
Есть класс Seller который cдает в аренду квартиры. Квартиры находятся в жилом округе, один Seller...

3
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
30.11.2014, 15:40 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
class IUnit
{
    int health;
    int mana;
    virtual void TakeDamage() = 0;
};
class IJump
{
    virtual void Jump() = 0;
};
class IRun
{
    virtual void Run() = 0;
};
class IFly
{
    virtual void Fly() = 0;
};
 
 
class Zombie    :   public IUnit, 
                    public IRun
{
    virtual void Run() override
    {
    
    }
    virtual void TakeDamage() override
    {
    
    }
 
};
 
class Bird      :   public IUnit,
                    public IFly
{
    virtual void TakeDamage() override
    {
 
    }
    virtual void Fly() override
    {
 
    }
 
};
0
13 / 13 / 7
Регистрация: 21.04.2013
Сообщений: 245
30.11.2014, 16:16  [ТС] 3
rikimaru2013,
это да, просто я как альтернативу подразумевал такой подход:
C++
1
2
3
4
5
6
7
8
9
10
11
12
class IJump {
public:
    static void jump() { /*...*/ }
};
 
template <typename C>
class IUnit {
    //...
};
 
IUnit<IJump> u;
u::jump();
но пока писал - понял, что это разумно, если свойства jump() не меняются от класса к классу...
0
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
30.11.2014, 16:39 4
Цитата Сообщение от andrejap Посмотреть сообщение
есть абстрактный один класс, и несколько классов определяющих свойства сущностей. Дело в том, что сущности могут комбинировать все эти свойства.
Паттерн Декоратор специально для этого и предназначен.
1
30.11.2014, 16:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2014, 16:39
Помогаю со студенческими работами здесь

Как сделать иерархию классов?
А если быть точным. Как сделать иерархию классов так, чтобы к ним можно было обращаться как с...

Как лучше сделать иерархию?
Есть №приказа и его наименование, №пункта приказа и его наименование и есть № подпункта, его...

Как вывести иерархию наследования классов(и объектов)?
По идее в java нет множественного наследования(исключая интерфейсы), значит можно как-то вывести...

Как правильно составить иерархию классов\интерфейсов?
Сразу же просьба к модераторам не ругать за такой заголовок. Просто у меня не получается в двух...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru