Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2305 / 1021 / 232
Регистрация: 30.11.2013
Сообщений: 3,393
#1

Посоветуйте модульные подходы создания класса - C++

02.08.2015, 00:09. Просмотров 534. Ответов 3
Метки нет (Все метки)

Добрый вечер,

пишу Tower Defence - хочу уйти от длинных классов и попробывать в этот раз какуе-то модульную систему сбора логики. Собираюсь использовать PIML и интерфейсы и friend class фабрику, собирать класс как-то так:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class IEnemyTargetSelect
    {
        // потомки описывают поведения выбора врага: ближайщих, максимальное количество повреждения, добивания
    };
    
    class IAnimationControler
    {
        // классу дают наборы анимаций, который умеет делать переходы между типами анимации и имеет указатель на внутренюю логику, которую callback'ом отсылает о готовности к выстрелу или еще что
    };
 
    class IEventManager
    {
        // отвечает за реакцию на клики юзверга
    };
    class ITower
    {
        IEnemyTargetSelect*;
        IAnimationControler*;
        IEventManager*;
    };

Хочу собирать классы побыстрее, в случаи расширения не затрагивать уже написанные классы, гибкие классы. Что посоветуете почитать?

P.S. Ранее была проблема, что в случаи расширения логики требовалось ити к интерфейсу заставлять его иметь еще какой-то метод, и следовательно бежать по всем уже написаным класс и менять, и так снова и снова.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2015, 00:09     Посоветуйте модульные подходы создания класса
Посмотрите здесь:

Ошибка создания экземпляра класса C++
Реализация динамического создания экземпляров класса. C++
Модульные программы C++
C++ Способ создания экземпляра класса
C++ Не понимаю как писать модульные программы
Нужен пример неизменяемого класса и класса от которого нельзя наследоваться C++
Пример создания массива экземпляров другого класса C++
Составьте программу, выводящую на экран сообщения об отличниках класса, о средней успеваемости учащихся класса C++
Обработка метода класса в зависимости от типа данного класса C++
C++ Написать модульные тесты к программе
C++ Практическое применение классов без создания объектов этого класса
Объявление объекта класса fstream в качестве статической компоненты другого класса C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ct0r
Игогошка!
 Аватар для ct0r
1681 / 607 / 41
Регистрация: 19.08.2012
Сообщений: 1,224
Завершенные тесты: 1
02.08.2015, 00:18     Посоветуйте модульные подходы создания класса #2
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Хочу собирать классы побыстрее, в случаи расширения не затрагивать уже написанные классы, гибкие классы.
Можешь например почитать про SOLID и книгу API Design for C++.
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2305 / 1021 / 232
Регистрация: 30.11.2013
Сообщений: 3,393
02.08.2015, 00:37  [ТС]     Посоветуйте модульные подходы создания класса #3
Так SOLID это 5 правил для всего программирония (не только для С++). Как информация про "меньше связей" и "больше внутрених связей" мне поможет в этом? При это о том, что если мне при расширении логиги надо менять или дописывать методы интерфейса, то связи много и их надо лишать? Но как? От интерфейса в какой-то момент потребуется больше чем он даёт.
ct0r
Игогошка!
 Аватар для ct0r
1681 / 607 / 41
Регистрация: 19.08.2012
Сообщений: 1,224
Завершенные тесты: 1
02.08.2015, 01:44     Посоветуйте модульные подходы создания класса #4
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Так SOLID это 5 правил для всего программирония (не только для С++). Как информация про "меньше связей" и "больше внутрених связей" мне поможет в этом? При это о том, что если мне при расширении логиги надо менять или дописывать методы интерфейса, то связи много и их надо лишать? Но как? От интерфейса в какой-то момент потребуется больше чем он даёт.
Например, Open/closed принцип и Dependency Inversion принцип позволяют расширять или менять существующий функционал классов, не меняя их код. inline namespaces позволяют легко оперировать несколькими версиями функционала, не ломая клиентский код. Можно приводить много таких примеров, но ты так описал проблему, что я понял лишь очень приблизительно то, что ты хочешь
Yandex
Объявления
02.08.2015, 01:44     Посоветуйте модульные подходы создания класса
Ответ Создать тему
Опции темы

Текущее время: 16:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru