Модераторы: Се ля ви

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамическое формирование интерфейса, Интересуют технологии 
:(
    Опции темы
Alenka_
Дата 22.11.2007, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

PM MAIL   Вверх
Се ля ви
Дата 22.11.2007, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

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



Не очень понятно, что вы имеете в виду - конкретизируйте вопрос.

Во-первых, какой у вас интерфейс - GUI или Web?

Во-вторых, на каких языках написана ваша система?

В-третьих, попытайтесь хотя бы приблизительно описать, каковы функции этого интерфейса?

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


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Alenka_
Дата 23.11.2007, 03:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Интерфейс называется динамическим, потому что на момент компиляции он точно не известен. Он формируется на этапе выполнения приложения. Т.е. поля для отображения информации жестко не задаются во время программирования. Логика приложения может быть изменена в ходе его выполнения, и интерфейс должен динамически адаптироваться к изменениям.
Примером могут служить системы для опросов пользователя. Есть группы вопросов, например, для мужчин и женщин, и в зависимости от пола пользователя, необходимо вывести эти вопросы. Таких групп выбора может быть множество, поэтому простым перебором if или switch это не сделать. Интересно и для web и GUI.


Это сообщение отредактировал(а) Alenka_ - 23.11.2007, 04:00
PM MAIL   Вверх
SaDFromSpb
Дата 23.11.2007, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Alenka_ @  22.11.2007,  19:14 Найти цитируемый пост)
Как это обычно осуществляется и какие существуют технологии? 

Да никакие специальные технологии для этого не нужны. Изучай как следует API своей GUI библиотеки и делай.  smile 
Никакой принципиальной разницы не должно быть, создаешь ли ты окно и оформляешь его содержимое вначале программы, или позже...



--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
Alenka_
Дата 23.11.2007, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



API своей GUI - это конечно. smile 
Но меня больше интересует  организация программы, ее части и их взаимодействие... здесь важна общая идея, как организовывать данные, и инструменты для их извлечения. 
PM MAIL   Вверх
Се ля ви
Дата 23.11.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

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



Alenka_, насчёт того, как такое реализовать в GUI - это нужно конкретные платформы смотреть, мне кажется.

Что же касается Web-интерфейсов - есть методы DOM - Document Object Model. Они позволяют менять страницу до неузнаваемости smile


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
SaDFromSpb
Дата 23.11.2007, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Alenka_ @  23.11.2007,  14:34 Найти цитируемый пост)

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

Очень абстрактно, ты вопрос  задаешь все-таки. 
Хм... Идеи, подходы, инструменты....
Здесь я тебе только общие подходы проектирования могу посоветовать.
Например, можно применить известные паттерны проектирования. Нужно рассмотреть свою конкретную задачу, и увидеть в ней (если получиться) типичную проблему, которую решает какой-то паттерн проектирования. Например, конкретно для GUI, для реализации различных отображений состояния какого-то объекта существует паттрен MVC, и т.д.
По поводу инструментов для осуществления изменений в графических элементах, есть концепция сообщений (WinAPI), событий (Java (awt, swing) ), или сигналов (QT)...
Если тебе при такой формулировке вопроса кто-то даст более конкретный ответ, то... я его тоже с интересом почитаю  smile 



Это сообщение отредактировал(а) SaDFromSpb - 23.11.2007, 22:26


--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
Alenka_
Дата 23.11.2007, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Так мне и нужны общие подходы! smile 
Задача в общем- это найти способы изменять интерфейс в зависимости от пользовательского ввода.
А конкретно я же написала. Как можно реализовать задачу выбора определенных данных, из базы, например, причем какие конкретно это данные, будет решаться на этапе выполнения программы, так как это зависит от ввода пользователя. Т.е. есть список вопросов, есть несколько последовательностей по которым они должны задаваться. Анализируя ответ пользователя, программа принимает решение какой вопрос следующий.
ЗЫ. концепция сигналов-это не про конечные автоматы?
И еще. Нашла тут парадигмы проектирования- дизайнерская и моделеориентированная. MVC- это вроде последняя? Но это же парадигмыпроектирования? Как они работают на этапе выполнения?.. Вообщем, у меня легкая растерянность smile и если мне 
Цитата

кто-то даст более конкретный ответ

 то я тоже с интересом его почитаю... smile 
PM MAIL   Вверх
Се ля ви
Дата 24.11.2007, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

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



Цитата(Alenka_ @  23.11.2007,  23:39 Найти цитируемый пост)
А конкретно я же написала.

Да, конкретность просто зашкаливает!.. smile)))

Ну сделайте что-то типа wizard`а - как при установке программ, Step1 - на нём какие-то компоненты, Step2 - на нём следущие компоненты, Step-3 - и при переходе на каждый экран обрабатывайте пользовательский ввод и в зависимости от него подсовывайте или формируйте новый...


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Alenka_
Дата 24.11.2007, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Это реализация. А как внутри? Как принимается решение какие именно данные на следующем этапе предоставлять?  нельзя же везде написать if пользователь ввел то-то, то выводим такие-то данные, если другое- другие. Опять не конкретно? smile  smile 
PM MAIL   Вверх
Се ля ви
Дата 24.11.2007, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

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



Цитата(Alenka_ @  24.11.2007,  00:25 Найти цитируемый пост)
Это реализация. А как внутри?

А внутри - как раз реализация smile

Добавлено через 3 минуты и 59 секунд
Цитата(Alenka_ @  24.11.2007,  00:25 Найти цитируемый пост)
нельзя же везде написать if пользователь ввел то-то, то выводим такие-то данные, если другое- другие.

Вроде, никто не запрещает...

Ну поставьте swich если много вариантов.

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

Добавлено через 4 минуты и 27 секунд
В общем, конкретизируйте задачу.

Добавлено через 8 минут и 15 секунд
Цитата(Alenka_ @  24.11.2007,  00:25 Найти цитируемый пост)
Опять не конкретно?

Да, опять неконкретно. В чём задача состоит? Какие-то ограничения должны быть полюбому. Вы сами вчитайтесь - что вы написали. Вас можно понять в таком духе, что вы вообще хотите написать "блокирующую программу" - т.е. программу, которая бы приспосабливалась под пользователя и делала всё что ему нужно - и ему не были бы нужны никакие другие программы. Вообще. Виндоус с таким количеством встроенных программ, в которые он оперативно переходит, что бы под любую задачу юзера приспосабливаться и решать. И спрашиваете - каковым должно быть ядерное архитектурное решение?..


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
HistoryEarth
Дата 24.11.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Непонятна последовательность действий. То есть либо по первому, например, вопросу формируется полный лист (если выбор между мужчиной и женщиной, например). Тогда один if и по его результатам загружаются разные процедуры со своими элементами управления.
Либо каждый предыдущий ответ формирует следующий вопрос. Тут обычное дерево, как-то его обходишь и по событиям проявляются те или иные элементы интерфейса.
Ну или третий вариант - индексированные связанные списки с составным ключом. Все в базе, мужик - 1, женщина -2. Пришел мужик - отсекается все, что не 1. Дальше по годам его, или по профессии, или еще что. В конце остается только то, что соответствует выстроенному таким образом ключу.
Конкретно нужно, вообще отвечать сложно.
PM MAIL   Вверх
SaDFromSpb
Дата 24.11.2007, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Alenka_ @  23.11.2007,  23:39 Найти цитируемый пост)
Анализируя ответ пользователя, программа принимает решение какой вопрос следующий.

Цитата(Alenka_ @  23.11.2007,  03:58 Найти цитируемый пост)
Таких групп выбора может быть множество, поэтому простым перебором if или switch это не сделать.

Так может у тебя основная проблема не в том, как на лету интерфейс создавать, а как организовать выборку из множества его вариантов.
Типа, в зависимотси от ответа, решаем, какой именно из всех существующих вопросов (оформленных в виде GUI, например) должен быть следующим. И просто не охота делать через switch?


--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
Alenka_
Дата 25.11.2007, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



И снова здравствуйте! smile 

Прав HistoryEarth, вариант с деревом и списками рассматривается. Это собственно то, что я знаю. Я хотела узнать, может как нибудь еще можно решить задачу выбора данных, зависящих от предыдущего выбора...
Ну, допустим, мы выбрали данные, как дальше их предъявлять? Какие способы? (На этапе построения интерфейса не известно какие данные будут предъявляться).
PM MAIL   Вверх
SaDFromSpb
Дата 26.11.2007, 03:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Alenka_, В таком случае, смотри в сторону экспертных систем. Есть там такой раздел, называется "продукции".



--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила раздела "Философия программирования":
Се ля ви

Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО:

• вопросы перспективного развития методов написания ПО;

• изменяющиеся языки и методологии программирования;


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

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


 




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


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

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