Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как корректно организовать структуру проекта? 
:(
    Опции темы
valeriyzf
Дата 12.2.2010, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В своем проекте я пользуюсь глобальным массивом данных и глобальными классами данных. Соответственно напоролся на критику ярых противников глобальных переменных. Но как по другому организовать структуру (принцип) работы проекта?, если:

Моя программа:

1) Открывает файл с данными и заливает их в глобальный массив. 
2) Другая процедура обрабатывает эти данные (ведутся пересчеты через множество матриц преоброзований и поворотов в пространстве)
3) Третья - заполняет глобальные классы полученными (после обработки) данными.
4) В 4-й процедуре из этих классов берутся данные и по ним рисуется 3D картинка, которую юзер может двигать, вращать, масштабировать и т.д.

Весь мой проект разбит на разные процедуры, которые, в свою очередь, распределены по нескольким модулям. Если одна процедура пересчитывает данные, то картинку рисует совершенно другая процедура. Вместе они могут работать только с глобальным массивом данных или внешними таблицами. 

Если не пользоваться глобальными массивами, то мне при каждом повороте картинки (по команде пользователя) придется начинать все с начала: открывать файл, пересчитывать данные и только потом рисовать. В этом случае картинка будет тормозить непомерно.
С глобальными же классами, все уже готовенькие данные лежат в них, соответственно шаги 1 - 3 пропускаются, и все работает быстро.

Другой вариант - создавать временные таблицы и потом работать с ними в SQL. Но это более универсальные метод подходит для огромного числа данных (десятки и сотни тысяч записей). В моем же случае это не более 2000 строк. Хотелось найти более простое решение.

Спасибо!
PM MAIL   Вверх
maxim1000
Дата 13.2.2010, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

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



Всегда есть возможность передать функции указатели (или ссылки) на данные, с которыми ей нужно работать

Таким образом для каждой функции будет чётко описано, какие данные она может потенциально изменить, а какие - нет. При отладке и при внесении изменений в программу помогает.

сами данные можно хранить, где угодно: в куче, в стеке какой-нибудь функции

можно даже хранить их на протяжении работы всей программы, т.е. так же, как и глобальные переменные, главное, чтобы доступ не был "ко всему отовсюду" - именно это основная проблема глобальных переменных


--------------------
qqq
PM WWW   Вверх
valeriyzf
Дата 14.2.2010, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



С  архитектурой проекта я уже разобрался. 
Создал класс для решения всей задачи в целом. В этот класс вошли все мои дополнительные под-классы, массивы и процедуры. 
Все получилось довольно аккуратно и логично.

Но вот напоролся на следующую проблему (собственно эта проблема описана в другой теме
http://forum.vingrad.ru/forum/topic-291000.html):

Как управлять компонентами формы из другого модуля.

У меня на главной форме следующие компоненты:
1) DataGridView (таблица данных)
2) ListBox
3) TrackBar (управление 3D картинкой)
4) <Graphic> (собственно, сама картинка на форме)

Если все процедуры и функции обработки этих компонент описать в заголовочном файле "Form1.h", то файл превратится в книгу "Архипелаг Гулаг" в txt формате. 

Получить же доступ к управлению формы из других модулей не получается.
Проблема была частично решена для графики и некоторых простых компонентов ("button1", "label1").
Но управлять желаемыми компонентами (DataGridView, ListBox) из других модулей так и не получается.



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


 




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


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

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