C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Масштабируемость приложения. Help!, тонУ в разнообразном количестве версий..
** Harold
Отправлено: 21.11.2005, 22:41


Не зарегистрирован







Имеем — переменный набор "железок" контролируемых прогой (задания, показания, состояния и решения, принимаемые на вышеперечисленной основе) с выводом всей этой "пурги" на "красивую" и понятную user'у Форму(ы) и анализируемые с помощью этой же Формы лог'и.

"Железки" "разбиты" на соответствующие классы (ну, уже, практически, уже компоненты)

Больное место — меняется количество (иногда и "качество" — новый класс) "железок" и алгоритм принятия решений на основе "задания, показания, состояния" "железок".

Как-то меня "пугает" разнообразное количество версий базовой проги — пока успеваю отследить — но это не "жизнь"! (Проблема гибкого назначения "входов-выходов и преобразования данных" уже не проблема...).

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

Отправьте куда-нибудь почитать или совет дельный дайте, пожалуйста... Кризис, блин! Затраты времени на "масштабирование" проги не лезут в удобоваримые рамки... ;(! Жить-то когда!!!

Спасибо за внимание...

Rius
Отправлено: 22.11.2005, 06:48


Мастер участка

Группа: Участник
Сообщений: 321



плагины wink.gif (plugins) на основе dll и одинаковых функций в них, либо даже классов в dll
все что зависит от конкретной железки — вынести в библиотеку
** Harold
Отправлено: 22.11.2005, 18:14


Не зарегистрирован







Тогда и "думатель" и обработчик поведения формы тоже надо выносить в отдельные классы, а оставлить только "пустышку"-форму, от которой можно только получить сообшение, что нажали "кнопку" или послать ей сообщение о смене "надписи"... Т.е. в форме не должно быть ни одной собственной сколько-нибудь серьезной функции... Так?
А можно ли разные формы подключать/отключать от проекта в таком случае?
Rius
Отправлено: 23.11.2005, 06:49


Мастер участка

Группа: Участник
Сообщений: 321



форму можно брать из dll
только в свете
QUOTE
Тогда и "думатель" и обработчик поведения формы тоже надо выносить в отдельные классы, а оставлить только "пустышку"-форму, от которой можно только получить сообшение
непонятно, насколько эти программы должны быть похожи
Asher
Отправлено: 23.11.2005, 09:18


Мастер участка

Группа: Модератор
Сообщений: 550



Привет.
Я тут подумал, но стесняюсь спросить wink.gif
Вы изучали книги вроде
Э.Гамма, Р.Хелм, Р.Джонсон, Дж.Влиссидес.
Приемы объектно-ориентированного проектирования.
Паттерны проектирования (это базовая)
и
Алан Шаллоуей, Джеймс Р. Тротт
Шаблоны проектирования.
Новый подход к объектно-ориентированному анализу и проектированию (это хм... разъяснение)
Во второй подробно расписано, как опираясь на паттерны из первой эффективно решать задачи подобные Вашей.

P.S. Стесняюсь уже потому, что задашь простой уточняющий вопрос  — а народ обижается, типа "...за кого ты меня держишь???"
** Harold
Отправлено: 23.11.2005, 09:26


Не зарегистрирован







Программы похожи — управление с помощью мелких "железок" одной большой "мегажелезкой". Просто требования иногда отличаются — кнопок управления может быть больше/меньше, "лампочек" (дискр. индикатор) больше/меньше, показаний от приборов (аналог. сигнал)больше/меньше/разных, задание (в аналог. виде) и т.д.
Т.е. можно как в детском (и не только wink.gif) конструкторе из этих элементов чего-нибудь соорудить — соответственно формы (иногда слегка, а иногда и нет) разные, "думатели" тоже могут отличаться... да еще про "аварийные" ситуации на "мегажелезке" оно "голосом" приспособлено рассказывать — что случилось и где чинить...
"Железки " в dll, "думатель" в dll, звук в dll...
Осталась "голая" Форма? Так получается? wink.gif
** Harold
Отправлено: 23.11.2005, 09:38


Не зарегистрирован







"на обиженых воду возят" — говорила моя бабушка...
Нет не читал — только недавно понял, что можно ,конечно, через if-else можно написать (и написал), но через пол-года "это" превращается в монолит — где копать-то не сразу вспомнишь, если что... Переписываю на ООП — нравится, только знаний и мозгов "маловато будет..."
Страуструпа уже купил wink.gif
poland
Отправлено: 23.11.2005, 14:27


Ученик-кочегар

Группа: Участник
Сообщений: 16



QUOTE (** Harold @ 23/11/2005, 09:26)
требования иногда отличаются — кнопок управления может быть больше/меньше, "лампочек" (дискр. индикатор) больше/меньше, показаний от приборов (аналог. сигнал)больше/меньше/разных, задание (в аналог. виде) и т.д.

ИМХО ваша прога из АСУшной шелобушки разрастается до ГИСа. Писать самому ГИС гиблое дело — их уже немеряно и это работа не для одного (но есть демо-версии). Как устроены ГИСы можно понять из их описания.
Обычно это сборка из
1)БД (SQL) , где лежат описания всех элементов системы, их связей, способов отрисовки, команд им соотв. и т.п.;
2)Viewera, обычно с интерактивностью;
3)целой охапки софт-УСО (плагины или интерфейсы под каждую железку, м.б. с наследованием, агрегированием и т.п.);
4)средств конфигурирования (Настройка) всего хлама;
5) м.б. чего забыл
ГИС задает жесткий каркас — новая железка обычно требует вмешательства во все элементы, но структура софта не изменяется.
Очередная Программа — это прописывание какой-то пользовательской конфигурации в БД и иных конфигур. файлах.
Asher
Отправлено: 23.11.2005, 19:06


Мастер участка

Группа: Модератор
Сообщений: 550



Привет.
Первую можно скачать здесь Anatolix
Вторую в электроноом виде пока не встречал.
ИМХО лучше купить обе. ~300-350 рублей в сумме будет.
** Harold
Отправлено: 23.11.2005, 22:09


Не зарегистрирован







Спасибо всем за участие. Почитаю книжек умных, может, полегчает wink.gif.
Наверное, ГИС — хорошо и правильно, но что уже есть, то есть...
Пока у меня более навязчивой идеи, что на каждый новый логический элемент системы нужно создавать свой класс и под новую конфигурацию свой класс "думателя" нет...
Ашер, спасибо за ссылку — пойду знакомиться с инструкцией для "изобретателей велосипедов" wink.gif

Вернуться в Вопросы программирования в C++Builder