Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Где логика? MDI? SDI? Или ещё как? 
:(
    Опции темы
AxelWind
Дата 20.3.2008, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Уже не знаю сколько ломаю  голову над следующей проблемой...  smile  Придумать бы откуда начать... Итак... Есть много пользователей, которые разделены на группы. Суть в том, чтобы написать приложение, которое в зависимости от того, к какой группе относится пользователь, запускающий программу, открывало бы окно с соответствующим функционалом. Программу нужно писать с учётом возможности увеличения количества этих групп пользователей. Есть идея реализовать это с помощью плагинов. Т.е. для каждой группы пользователей своя прога, зашитая в дллку, а основная прога только запускает нужную дллку. Например, сделать этой проге mdi-интерфейс, а плагины соответсвенно - child-окна, НО! Каждый пользователь выполняет определённую работу. Его функционал тоже может расширяться, т.е. получается, что это должны быть плагины для плагинов... В идеале было бы, чтобы плагины первого уровня как раз и были бы mdi-окнами, а плагины второго уровня дочерними, но так появляется вопрос, как должно быть реализовано главное окно...   smile  Короче я запутался круто и наверно туплю... Не могу придумать интерфейс и логику! Дожили, блин!  smile  Пните меня в нужное направление! Заранее спасибо!
PM MAIL   Вверх
korian
Дата 21.3.2008, 03:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

PM   Вверх
0lmer
Дата 21.3.2008, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А если вместо плагинов - отдельные программы, которые взаимодействуют друг с другом, а главная их только запускает (+может обеспечивать их взаимодействие).
PM   Вверх
Vyacheslav
Дата 21.3.2008, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

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



1. Создаем практически пустую программу с минимальным общим функционалом, который включает систему регистрации пользователй, систему работы с плагинами, с профилями пользователй и итп.
2. На каждую бизнес-функцию создаем плагин(dll), который при загрузке добавляет соответствующий функционал к основной программе
3. Для каждого пользователя или для  бизнес-роли, к которой  этот пользователь относится создаем профиль в котором указываются все доступные для него бизнес-функции (плагины)
При загрузке программа просит пользователя залогинится, определяет читает его личный  профиль или если его нет, профиль его бизнес-роли и загружает все доступные для него плагины, которые соответствующим образом добавляют требуемый для него функционал и интерфейс

Вообщем-то -это достаточно известное тривиальное решение. Нужно для конкретно пользователя добавить функцию, открываем ему в профиле соответствующий плагин или при необходимости  его разрабатываем. Функционал можно наращивать до бесконечности. У меня был комплекс  примерно с полуторасотней плагинов. Преимущество в том, что в реальности конкретный человек очень часто может совмещать несколько бизнес-ролей. Например, бухгалтера и  кладовщика. Соотвественно можно настроить для него уникальный профиль. Вынужден дополнительно замещать кого на время отпуска - нет проблем, добавим. Надобность отпала - уберем. Причем если профиля хранить в БД, то все это может сделать администратор системы со своего рабочего места
Я обычно при проектировнии основного приложения предпочитал использовать MDI. Основное окно было построено по типу эксплорера с деревом  в левой части, которое использовалось как меню. Вид этого дерева завил от того, что пользователю положено по штату 
Но вообще-то это уже не принципиально и является делом предпочтения. Можно просто иметь простое окно с меню. Наполнение  меню  будет изменяться в зависимости от загруженных плагинов.


 
 



--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Vyacheslav
Дата 21.3.2008, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

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



Цитата(korian @ 21.3.2008,  03:16)
забудьте все что у вас есть. MDI, SDI и тд. у вас нет никаких библиотек. представьте, что у вас супер компьютер, который имеет бесконечное кол-во памяти и любую сложную операцию выполняет в один такт. после этого можно приступать к проектированию системы. а когда она уже более-менее будет готова, будете думать о том, как прикрутить ее к имеющимся средствам.

Круто. Сначала разрабатываем все, потом привязываем и ... Интересно, что из всего этого заработает и сколько времени придется потратить на то чтобы довести до ума систему? И зачем люди только RUP и итерационный  принцип разработки придумали.  
Почитайте. Будет полезно.
http://huze.ru/2008/01/16/iteracionnaya-model-razrabotki/

Автору топика нужно же не простненькую программу разработать, модель которой "в голове у програмиста", а  достаточно серьезный  легко расширяемый и настраиваемый комплекс 
Кстати система: основное приложение -- плагины оптимально подходит под  итерационный  принцип.
1.Первый этап: разработка основного приложения и  системы взаимодействия ее с плагинами.
2 Второй и последующий - разработки плагинов.
Комплекс можно запускать в эксплуатацию, как только будет набран минимальный функционал.
Система будет обладать свойством слабой связанности, то есть как правило внесение изменений не будет распространяться на все приложение а максимум ограничется одним плагином. Важно хорошо продумать систему работы с плагинами и качественно написать функционал, который будет встроен в само приложение. Если в этой области будут допущенны ошибки, они могут привести к внесению изменений по всей ситеме. 
В свое время я для такой системы разработал ряд VCL- компонетов и и визард для создания плагинов. В результате разработка плагина была достаточно сильно формализована , что резко упрощало время разработки и обеспечивало решение проблемы  "отчуждения" кода от конкретного программиста. Последнее - довольно частая беда для средних и мелких компаний со своим IT, когда уход ключевого программиста мог привести к невозможности дальнейшей поддержки и разработки системы.


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
korian
Дата 21.3.2008, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Vyacheslav @  21.3.2008,  11:22 Найти цитируемый пост)
Круто. Сначала разрабатываем все, потом привязываем и

я не говорил про разрабатываем все и привязываем.
то что я хотел сказать - разрабатывая архитиктуру нельзя привязываться к реализации (типа MDI или SDI).
вероятность того, что функционал можно будет просто добавлять, очень сильно падает, если из начально привязываться к чему-то.
под словами "а когда она уже более-менее будет готова" в данном случае можно понимать когда будет спроектирована бизнес-логика первого этапа:
Цитата(Vyacheslav @  21.3.2008,  11:22 Найти цитируемый пост)
1.Первый этап: разработка основного приложения и системы взаимодействия ее с плагинами.

после этого можно начинать думать над интерфейсом пользователя, как реализовать это все, SDI, MDI или может что лучше можно использовать.
из нормальной архитектуры вылезет нормальный интерфейс.

PM   Вверх
AxelWind
Дата 22.3.2008, 01:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

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

К сожалению или к счастью, но это немного не то...  smile  Даже не знаю, как объяснить... Просто необходимо разработать это в рамках одного программного модуля...
Цитата

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

Во-во! smile Так и есть!!!
Цитата

Я обычно при проектировнии основного приложения предпочитал использовать MDI. Основное окно было построено по типу эксплорера с деревом  в левой части, которое использовалось как меню. Вид этого дерева завил от того, что пользователю положено по штату. ... Наполнение  меню  будет изменяться в зависимости от загруженных плагинов.

Нечто подобное я и начал реализовать! Кстати, проблема: у дочерних окон своё меню, но при максимизации дочернего, его меню полностью заменяет меню дочернего и не хочет объединяться... 
Цитата

Автору топика нужно же не простненькую программу разработать, модель которой "в голове у програмиста", а  достаточно серьезный  легко расширяемый и настраиваемый комплекс 

Именно! Причины того, что приложение должно полностью состоять из плагинов, именно те, которые описывает Vyacheslav! А именно: возможность ввода приложения в работу уже при минимальном функционале, возможность быстрого расширения и гибкой настройки, ну, и наследие потомкам  smile , которым ещё предстоит развивать это проект. А мне пока как раз и надо заложить основу и интерфейс взаимодействия с плагинами...
Цитата

после этого можно начинать думать над интерфейсом пользователя, как реализовать это все, SDI, MDI или может что лучше можно использовать.
из нормальной архитектуры вылезет нормальный интерфейс.

На самом деле иногда бывает проще придумать архитектуру, если уже знаешь, как хотя бы визуально, должно выглядеть приложение!  smile
Vyacheslav, korian, 0lmer, спасибо!  smile Отдельное спасибо Vyacheslavу за подробное описание и ссылочку! Попробую оттуда ещё для себя что-то выжать! Было бы сообщений у меня побольше, повысил бы репутацию...



Это сообщение отредактировал(а) AxelWind - 22.3.2008, 01:47
PM MAIL   Вверх
AxelWind
Дата 22.3.2008, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Полазил по форуму... Нарыл вот что... От Vyacheslavа:
Цитата

MDIClient'у думаю никак. А сымитировать с обычным окном очень просто. Создайтес окно и его паренту присвойте 

Код

   TForm2* form = new TForm2(this);
   form->Parent = TabSheet1;
   form->Visible =true;
 

Только думаю, что этот метод Вас врядли устроит. Там куча других проблем возникнет


Ну, и сразу столкнулся с одной проблемой: возможно ли сделать, чтобы меня на форме не пропадало? Какие ещё проблемы могут появиться с таким использованием второй формы?  smile 

Кстати, ToolBar и StatusBar остались...  smile  Честно говоря не ожидал...  smile Но при попытке изменить размер дочернего окна со статусбаром меняется размер главной формы... 

Это сообщение отредактировал(а) AxelWind - 22.3.2008, 03:22
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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