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

Архитектура программы. Правильно ли сделал? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проекты и солюшин http://www.cyberforum.ru/cpp-beginners/thread932406.html
У меня такая проблема: как в солюшине связать два и больше проектов чтоб можно било использовать функцыонал одного проекта в другом. З. Ы. Если просто добавить проекты в солюшын то вызвать функцыи нельзя так как кидает ошыбку линковки
C++ Получение командой строки для процесса Компилирую из под x86 всё здорово... запускаю на x64 - не может прочитать строку командную для процесса... Для 64 бит компилировать мне не нужно... нужно как то сделать, чтобы работала, скомпилированная из под 32... Что-то с readprocessmemory Последний пост http://forum.sysinternals.com/readprocessmemory-from-32bit-to-32bit-on-x64-fails_topic24543.html Хелп ) #include <windows.h> #include... http://www.cyberforum.ru/cpp-beginners/thread932380.html
вложенный класс C++
Какие проблемы могут возникнуть в следующем объявлении вложенного класса? class Ribs { private: class Sauce { int soy; int sugar; public : Sauce (int s1, int s2) : soy ( s1 ), sugar ( s2 ) ( )
C++ Произвести действия со строкой матрицы
Добрый день. Обращаюсь за помощью, т. к не знаю как правильно сделать в следующем случае: int a= {9,7,3,6,8,0,5,4,1, 2,4,8,3,0,1,6,0,7, 0,0,1,4,9,7,0,0,0, 1,8,0,2,6,3,0,0,0, 4,9,2,0,0,0,3,6,5,
C++ Сортировка std::list http://www.cyberforum.ru/cpp-beginners/thread932352.html
Есть такой фрагмент програми. Создаю функцию для сортировки list. Вроде все правильно. В класе перегружены оператори < i =. Не знаю что делать. List просто не сортируеться а ввыводиться в изначальном виде. Может есть еще какие то методи отсортировать??? void sortL(L &v){ int k=v.size(); Student temp,a,b; L::iterator z = v.begin(); for (int i = 0; i < k; i++) for (int j = i + 1; j...
C++ работа с битами доброй ночи, форумчане, необходима ваша помощь) как и всем тут... вот изучаю с++ и добрался до работы с битами, учу решением задач. на форуме, правда не на этом, нашёл несколько задач: 1. Посчитать сколько нулей в числе с третьего по 13 бит, включая эти биты. 2. Инвертировать все биты с 2 по 14 включая эти биты. 3. Определить на сколько в числе А больше значущих битов, что равны единице, чем... подробнее

Показать сообщение отдельно
0x10
2456 / 1628 / 238
Регистрация: 24.11.2012
Сообщений: 4,003
02.08.2013, 18:15     Архитектура программы. Правильно ли сделал?
В большей степени критики, пожалуй, заслуживает не реализация, а постановка задачи.
Цитата Сообщение от loou Посмотреть сообщение
- Считывать данные геометрических объектов из файла.
- Вычислить некоторое число для двух геометрических объектов.
Вопрос звучит как "мне нужно считать данные и произвести вычисления, давайте обсудим архитектуру". Т.е. информации практически ноль, и при этом какие-то разговоры об архитектуре.

Последняя фраза мне вообще не ясна. "Вычислить для двух объектов" - это выбрать из всего массива два объекта и для каждого из них посчитать по отдельности, либо речь о функции с двумя аргументами f(x, y)?

Цитата Сообщение от loou Посмотреть сообщение
C++
1
2
3
4
5
6
7
class сGeomObj {
public:
* * ...
* * double GetVal();
protected:
* * ...
};

Не по теме:

И от кого народ нахватался писать префиксы 'c', явно показывая, что это класс?


Само название GetVal - ни о чем не говорит. Т.е. вопрос такой: а это должно быть методом класса? Или может будет лучше сделать внешней функцией? Забегая вперед, скорее всего метод объявлен в классе справедливо, но задумываться о таких вещах стоит.

Цитата Сообщение от loou Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
class iGeomObjFromFile {
public:
* * ...
* * int * * *ReadFromFile(char* f_name);
* * double CalcGoalValue(int i, int j);
protected:
* * list < cGeomObj > gList;
* * static cReaderFromFile * * * *Reader;
* * static cGoalValueCalculator *Calculator;
* * ...
}
Сразу же вопрос: а нужен ли этот класс? Он выглядит как свалка всего, что просто не знал где разместить.
Первая же архитектурная проблема: класс предполагает определенный порядок вызова методов. Т.е. вызывать метод вычисления имеет смысл только после того, как выполнено чтение из файла.
Вообще чтение из файла я бы сделал отдельной функцией:
C++
1
std::vector<cGeomObj> ReadFromFile(const std::string& filename);
Не вижу повода использовать std::list. Вектор вполне подойдет.

Далее - почему reader статический? Он один общий на все файлы? Каковы его функции? Он stateless? А если нет, если в нем реализована какая-нибудь своя буферизация и при начале обработки следующего файла в нем остается некоторое состояние от предыдущего чтения?
Короче, на один файл - один reader.
Опять же, при такой постановке не вижу необходимости в cGoalValueCalculator как классе. Предполагаю, что вместо него вполне могут быть обычные функции.

Добавлено через 1 минуту
Цитата Сообщение от loou Посмотреть сообщение
Скажите как, если не трудно. Ну либо ключевое слово для поиска.
Type traits http://en.cppreference.com/w/cpp/types
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru