Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
rikimaru2013
C++ Game Dev
2439 / 1133 / 240
Регистрация: 30.11.2013
Сообщений: 3,690
#1

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

02.08.2015, 00:09. Просмотров 583. Ответов 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. Ранее была проблема, что в случаи расширения логики требовалось ити к интерфейсу заставлять его иметь еще какой-то метод, и следовательно бежать по всем уже написаным класс и менять, и так снова и снова.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2015, 00:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Посоветуйте модульные подходы создания класса (C++):

Проверка создания объекта класса BBB из класса AAA и работа с ним - C++
#define @param2; // объявили для выяснения случая: нужен новый или использовать существующий. Class AAA { private: void...

Вызов метода класса без создания экземпляра класса. - C++
В общем мне для функционирования одной программы нужно постоянно вызывать метод одного из классов. Я это делаю с помощью new - delete. Мне...

Способ создания экземпляра класса - C++
Ниже в скрипте отметила два варианта. В чужих скриптах встречаю оба время от времени. Интересно, в чем принципиальное различие и как...

Ошибка создания экземпляра класса - C++
Собственно ошибка в мейне error C2227: left of '->AddLast' must point to class/struct/union/generic type Содержимое StringList.h: ...

Реализация динамического создания экземпляров класса. - C++
Добрый вечер. Есть программа: //HEADER.h #include <iostream> #include <conio.h> #include <string> using namespace...

Модульные программы - C++
Я хочу написать программу в которой есть возможность добавлять модули. Вот допустим в списке меню есть настройки. В настройке параметр -...

3
ct0r
Игогошка!
1776 / 678 / 42
Регистрация: 19.08.2012
Сообщений: 1,294
Завершенные тесты: 1
02.08.2015, 00:18 #2
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Хочу собирать классы побыстрее, в случаи расширения не затрагивать уже написанные классы, гибкие классы.
Можешь например почитать про SOLID и книгу API Design for C++.
1
rikimaru2013
C++ Game Dev
2439 / 1133 / 240
Регистрация: 30.11.2013
Сообщений: 3,690
02.08.2015, 00:37  [ТС] #3
Так SOLID это 5 правил для всего программирония (не только для С++). Как информация про "меньше связей" и "больше внутрених связей" мне поможет в этом? При это о том, что если мне при расширении логиги надо менять или дописывать методы интерфейса, то связи много и их надо лишать? Но как? От интерфейса в какой-то момент потребуется больше чем он даёт.
0
ct0r
Игогошка!
1776 / 678 / 42
Регистрация: 19.08.2012
Сообщений: 1,294
Завершенные тесты: 1
02.08.2015, 01:44 #4
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Так SOLID это 5 правил для всего программирония (не только для С++). Как информация про "меньше связей" и "больше внутрених связей" мне поможет в этом? При это о том, что если мне при расширении логиги надо менять или дописывать методы интерфейса, то связи много и их надо лишать? Но как? От интерфейса в какой-то момент потребуется больше чем он даёт.
Например, Open/closed принцип и Dependency Inversion принцип позволяют расширять или менять существующий функционал классов, не меняя их код. inline namespaces позволяют легко оперировать несколькими версиями функционала, не ломая клиентский код. Можно приводить много таких примеров, но ты так описал проблему, что я понял лишь очень приблизительно то, что ты хочешь
1
02.08.2015, 01:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2015, 01:44
Привет! Вот еще темы с ответами:

Доступ к методам класса без создания объекта - C++
Почему доступны методы foo() и bar() класса А, если нет ни одного объекта это класса? #include <iostream> class A { int...

Пример создания массива экземпляров другого класса - C++
Покажите как это делать, пожалуйста. И этот массив тоже должен быть в классе.

Чтение стандарта C++: альтернативные подходы к изучению - C++
Хотел прочитать стандарт, но возникло 2 проблемы: 1. Стандарт на английском который я знаю не так уж и хорошо что бы осилить весь текст ...

Модульные, системные и регрессионные тесты - C++
Читаю Программирование. Принципы и практика с использованием С++. Второе издание. Бьярне Страуструп главу 26, про тестирование. ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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