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

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

Войти
Регистрация
Восстановить пароль
 
dscoma
0 / 0 / 0
Регистрация: 04.01.2012
Сообщений: 9
#1

Проектирование интерфейса: передача результата по цепочке - C++

06.01.2012, 14:38. Просмотров 401. Ответов 3
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
// Main.h
class Main () {
      public : 
           Main() {}
           ~Main() {}
 
           vector<int> set(vector<int> &vec);
 
           vector<int> get() {
                 //
           }
};
Следущие классы находятся в разных файлах и содержат набор методов,
которые обрабатывают Main.get() и возвращают его модифицированную версию

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// A.h
class A () {
    // результат этого класса: добавить в Main.get() несколько элементов
};
 
// B.h
class B () {
    // результат этого класса: удалить из Main.get() несколько элементов
};
 
//... и т.д. 
 
int main () {
    Main *init;
 
    vector<int> set;
 
    init->set(set);
 
    // результатом будет последняя модификация вектора в классе B 
    vector<int> get = init->get();
 
}
Таких классов, которые работают с Main.get() много, и все они должны возвращать его модифицированную версию.
Разбиение на классы, не случайно, т.к. все они содержат очень большой набор специфичеких методов.


Не знаю насколько хорошо объяснил, но суть вопроса в том как спроектировать интерфейс, в котором все классы возвращают модифицированную версию одного и того же объекта (что-то типа кортежей), т.е. результат работы предыдущего класса должен передаваться по цепочке.

Добавлено через 12 минут
Точее не картежей, а декораторов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2012, 14:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проектирование интерфейса: передача результата по цепочке (C++):

Передача интерфейса - C++
Добрый день. Есть DLL с парой экспортируемых функций. В функциях используются вычисления, основанные на стороннем API. Хотелось бы...

Передача результата выполнения функции - C++
int search() // эта функция ищет индекс { for (int i = 0; i &lt; 4; i++) { ... } } int add(int a) // сюда он...

Количество одинаковых чисел в цепочке - C++
буду оочень благодарна, если поможете Напишите программу , которая получает три числа и выводит количество одинаковых чисел в цепочке. ...

Передача всех аргументов функции дальше по цепочке - PHP
Здравствуйте! Есть базовый класс с таким методом: public function query() { return...

Передача интерфейса в конструктор - C#
Допустим есть класс А, реализующий некий интерфейс public interface IAinterface { } public class A :...

Реализация интерфейса PCI. Пакетная передача - Программируемая логика
Здравствуйте. Программирую ПЛИС, где необходимо реализовать интерфейс PCI. Нужно передавать большое количество информации, а все передается...

3
silent_1991
Эксперт С++
4987 / 3044 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
06.01.2012, 14:53 #2
Ну, если я правильно понял, тут как раз декораторы и подходят. Так что читайте про иерархию наследования в паттерне декоратор и реализуйте её.
0
dscoma
0 / 0 / 0
Регистрация: 04.01.2012
Сообщений: 9
06.01.2012, 15:26  [ТС] #3
Цитата Сообщение от silent_1991 Посмотреть сообщение
Ну, если я правильно понял, тут как раз декораторы и подходят. Так что читайте про иерархию наследования в паттерне декоратор и реализуйте её.
Мне просто глаз режит такая инициализация:

C++
1
A obj(new B(new Main()));
Просто объектов много, поэтому и возник вопрос, можно ли как-то более изящно сделать)
0
silent_1991
Эксперт С++
4987 / 3044 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
06.01.2012, 15:34 #4
dscoma, имхо, паттерн на то и паттерн, что изящнее уже некуда. Да и в том же шарпе или джаве только такая инициализация и возможна.
0
06.01.2012, 15:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.01.2012, 15:34
Привет! Вот еще темы с ответами:

передача результата в onActivityResult - Программирование Android
Скажи пожалуйста. У меня есть 3 активити. Из первой активити я вызываю активность номер2 с помощью старт АктивитиФоРезалт. В свою...

Передача результата хранимой процедуры в представление - C# MVC
Приветствую всех! Прошу дать совет в таком вопросе. Есть хранимая процедура которая сама строит таблицу такую какой она должна выглядеть....

Передача результата запроса LINQ в представление - C# MVC
Добрый день! В контроллере есть такой код ViewBag.OperationCodes = operations.Select(p =&gt; new {textcode = p.textcode,...

Передача параметров в поток и возврат результата - C#
Нужно распараллелить одну задачу и для этого передавать параметры в поток, а затем возвращать результат в виде double. Ошибка вот здесь: ...


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

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

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