Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Структура программы (4 класса, 1 основной), --> как лучше сделать 
:(
    Опции темы
_Alex
Дата 31.3.2007, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 9.3.2007

Репутация: нет
Всего: нет



Как сделать структуру программы

Есть 4 класса:
CGI - парсит данные запроса (GET или POST) и помещает их в "map<string, string> query;"(query["ключ"]="значение")
Parameters -- парсит конф. файл, и помещает "map<string, int> P;"
GenerateRes -- содержит разнае функции

и основной класс
General -- использует данные из "CGI и Parameters" и вызывает функции из "GenerateRes"

Как сделать (по порядку!):
--> Конструкторы вызвать по очереди "CGI", "Parameters", "GenerateRes" ("General" -- первым или последним),
при этом:
1. Все классы вызываются только 1 раз.
2. В классе "Parameters", получить данные из класса "CGI" (например query["key"])
3. В "GenerateRes" получить данные из "Parameters" и "CGI"
4. В "General" получить данные из всех классов и вызвать функции из "GenerateRes"

Вот не рабочий код, описывающий это:
Код

class CGI
{
public:
    CGI();
    map<string, string> query;
private:
    void get_query_string();
};

void CGI::get_query_string()
{
query["text"] = "hello";
}
//-------------------------------
class Parameters
{
public:
    Parameters();
    map<string, int> P;//parameters
private:
    void get_param();
};

void Parameters::get_param()
{
cout << CGI::query["text"];
P["default"] = 75;
}
//--------------------------------
class GenerateRes
{
public:
    GenerateRes();
private:
    void show();
};

void GenerateRes::show()
{
cout << CGI::query["text"];
cout << Parameters::P["default"].size();
cout << Parameters::P["default"];
}
//----------------------------------

class General:
    public CGI,
    Parameters,
    GenerateRes
{
public:
    General();
private:
    void start();
};

void General::start()
{
GenerateRes::show();
cout << CGI::query["text"];
cout << Parameters::P["default"].size();
cout << Parameters::P["default"];
}


int main()
{
General go;
}



Это сообщение отредактировал(а) _Alex - 1.4.2007, 08:26
PM MAIL   Вверх
threef
Дата 31.3.2007, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: 9
Всего: 10



27 строка - словарь <string,int> а ты используешь как <string,string>
можно инкапсулировать,можно наследовать:
Код

cout<<GeneralObject.QuerySubObject["text"];
cout<<GeneralObject.ParametersSubObject[22];
GeneralObject.GenerateresSubObject.show(QuerySubObject,ParametersSubObject);
//*****************************************************
cout<<GeneralObject["text"];
cout<<GeneralObject[22];
GeneralObject.show(QuerySubObject,ParametersSubObject);


Выбирай синтаксис, взаимозависимость, возможность раздельной обработки. ИМХО не похоже, чтобы эти классы входили в иерархию наследования 
PM MAIL   Вверх
_Alex
Дата 1.4.2007, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 9.3.2007

Репутация: нет
Всего: нет



Цитата(threef @  31.3.2007,  17:59 Найти цитируемый пост)
27 строка - словарь <string,int> а ты используешь как <string,string>

Исправил
Цитата(threef @  31.3.2007,  17:59 Найти цитируемый пост)
можно инкапсулировать,можно наследовать:

Как?
Хотелось бы увидеть пример, удовлетворяющий условию.


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0425 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.