![]() |
Модераторы: Се ля ви |
![]() ![]() ![]() |
|
Alenka_ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 18.6.2007 Репутация: нет Всего: нет |
Здравствуйте! Подскажите, пожалуйста, методы формирования динамического интерфейса? Нужно, чтобы при определенных действиях пользователя интерфейс изменялся бы каким-либо образом и выводились определенные данные. Как это обычно осуществляется и какие существуют технологии?
|
|||
|
||||
Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 6 Всего: 127 |
Не очень понятно, что вы имеете в виду - конкретизируйте вопрос.
Во-первых, какой у вас интерфейс - GUI или Web? Во-вторых, на каких языках написана ваша система? В-третьих, попытайтесь хотя бы приблизительно описать, каковы функции этого интерфейса? Дело в том, что большинство интерфейсов итак меняются в зависимости от определённых действий пользователя - нажали вы, например, кнопку выпадающего списка - список, как нетрудно догадаться, выпал, теперь вы выбираете пункт из него, чего не могли сделать до того, как нажали эту кнопку - т.е. интерфейс изменился. То же можно отнести и к закладкам и ко многому другому... -------------------- |
|||
|
||||
Alenka_ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 18.6.2007 Репутация: нет Всего: нет |
Интерфейс называется динамическим, потому что на момент компиляции он точно не известен. Он формируется на этапе выполнения приложения. Т.е. поля для отображения информации жестко не задаются во время программирования. Логика приложения может быть изменена в ходе его выполнения, и интерфейс должен динамически адаптироваться к изменениям.
Примером могут служить системы для опросов пользователя. Есть группы вопросов, например, для мужчин и женщин, и в зависимости от пола пользователя, необходимо вывести эти вопросы. Таких групп выбора может быть множество, поэтому простым перебором if или switch это не сделать. Интересно и для web и GUI. Это сообщение отредактировал(а) Alenka_ - 23.11.2007, 04:00 |
|||
|
||||
SaDFromSpb |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 5.4.2006 Где: Санкт-Петербург Репутация: нет Всего: 3 |
Да никакие специальные технологии для этого не нужны. Изучай как следует API своей GUI библиотеки и делай. ![]() Никакой принципиальной разницы не должно быть, создаешь ли ты окно и оформляешь его содержимое вначале программы, или позже... -------------------- "За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001) |
|||
|
||||
Alenka_ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 18.6.2007 Репутация: нет Всего: нет |
API своей GUI - это конечно.
![]() Но меня больше интересует организация программы, ее части и их взаимодействие... здесь важна общая идея, как организовывать данные, и инструменты для их извлечения. |
|||
|
||||
Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 6 Всего: 127 |
Alenka_, насчёт того, как такое реализовать в GUI - это нужно конкретные платформы смотреть, мне кажется.
Что же касается Web-интерфейсов - есть методы DOM - Document Object Model. Они позволяют менять страницу до неузнаваемости ![]() -------------------- |
|||
|
||||
SaDFromSpb |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 5.4.2006 Где: Санкт-Петербург Репутация: нет Всего: 3 |
Очень абстрактно, ты вопрос задаешь все-таки. Хм... Идеи, подходы, инструменты.... Здесь я тебе только общие подходы проектирования могу посоветовать. Например, можно применить известные паттерны проектирования. Нужно рассмотреть свою конкретную задачу, и увидеть в ней (если получиться) типичную проблему, которую решает какой-то паттерн проектирования. Например, конкретно для GUI, для реализации различных отображений состояния какого-то объекта существует паттрен MVC, и т.д. По поводу инструментов для осуществления изменений в графических элементах, есть концепция сообщений (WinAPI), событий (Java (awt, swing) ), или сигналов (QT)... Если тебе при такой формулировке вопроса кто-то даст более конкретный ответ, то... я его тоже с интересом почитаю ![]() Это сообщение отредактировал(а) SaDFromSpb - 23.11.2007, 22:26 -------------------- "За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001) |
|||
|
||||
Alenka_ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 18.6.2007 Репутация: нет Всего: нет |
Так мне и нужны общие подходы!
![]() Задача в общем- это найти способы изменять интерфейс в зависимости от пользовательского ввода. А конкретно я же написала. Как можно реализовать задачу выбора определенных данных, из базы, например, причем какие конкретно это данные, будет решаться на этапе выполнения программы, так как это зависит от ввода пользователя. Т.е. есть список вопросов, есть несколько последовательностей по которым они должны задаваться. Анализируя ответ пользователя, программа принимает решение какой вопрос следующий. ЗЫ. концепция сигналов-это не про конечные автоматы? И еще. Нашла тут парадигмы проектирования- дизайнерская и моделеориентированная. MVC- это вроде последняя? Но это же парадигмыпроектирования? Как они работают на этапе выполнения?.. Вообщем, у меня легкая растерянность ![]()
то я тоже с интересом его почитаю... ![]() |
|||
|
||||
Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 6 Всего: 127 |
Да, конкретность просто зашкаливает!.. ![]() Ну сделайте что-то типа wizard`а - как при установке программ, Step1 - на нём какие-то компоненты, Step2 - на нём следущие компоненты, Step-3 - и при переходе на каждый экран обрабатывайте пользовательский ввод и в зависимости от него подсовывайте или формируйте новый... -------------------- |
|||
|
||||
Alenka_ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 18.6.2007 Репутация: нет Всего: нет |
Это реализация. А как внутри? Как принимается решение какие именно данные на следующем этапе предоставлять? нельзя же везде написать if пользователь ввел то-то, то выводим такие-то данные, если другое- другие. Опять не конкретно?
![]() ![]() |
|||
|
||||
Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 6 Всего: 127 |
А внутри - как раз реализация ![]() Добавлено через 3 минуты и 59 секунд
Вроде, никто не запрещает... Ну поставьте swich если много вариантов. Поймите, это интерфейс, с ним работают юзеры, которым нужно что бы он был удобным. Так что по любому вам нужно видеть, что будет генериться, поэтому вам всё равно придётся это делать руками, просто что бы видеть и контролировать. Если речь, конечно, не идёт о банальном добавлении удалении однотипных полей по чёткому алгоритму и вы просто заранее не можете сказать - сколько их будет. Добавлено через 4 минуты и 27 секунд В общем, конкретизируйте задачу. Добавлено через 8 минут и 15 секунд Да, опять неконкретно. В чём задача состоит? Какие-то ограничения должны быть полюбому. Вы сами вчитайтесь - что вы написали. Вас можно понять в таком духе, что вы вообще хотите написать "блокирующую программу" - т.е. программу, которая бы приспосабливалась под пользователя и делала всё что ему нужно - и ему не были бы нужны никакие другие программы. Вообще. Виндоус с таким количеством встроенных программ, в которые он оперативно переходит, что бы под любую задачу юзера приспосабливаться и решать. И спрашиваете - каковым должно быть ядерное архитектурное решение?.. -------------------- |
|||
|
||||
HistoryEarth |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 23.8.2007 Репутация: нет Всего: нет |
Непонятна последовательность действий. То есть либо по первому, например, вопросу формируется полный лист (если выбор между мужчиной и женщиной, например). Тогда один if и по его результатам загружаются разные процедуры со своими элементами управления.
Либо каждый предыдущий ответ формирует следующий вопрос. Тут обычное дерево, как-то его обходишь и по событиям проявляются те или иные элементы интерфейса. Ну или третий вариант - индексированные связанные списки с составным ключом. Все в базе, мужик - 1, женщина -2. Пришел мужик - отсекается все, что не 1. Дальше по годам его, или по профессии, или еще что. В конце остается только то, что соответствует выстроенному таким образом ключу. Конкретно нужно, вообще отвечать сложно. |
|||
|
||||
SaDFromSpb |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 5.4.2006 Где: Санкт-Петербург Репутация: нет Всего: 3 |
Так может у тебя основная проблема не в том, как на лету интерфейс создавать, а как организовать выборку из множества его вариантов. Типа, в зависимотси от ответа, решаем, какой именно из всех существующих вопросов (оформленных в виде GUI, например) должен быть следующим. И просто не охота делать через switch? -------------------- "За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001) |
||||
|
|||||
Alenka_ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 18.6.2007 Репутация: нет Всего: нет |
И снова здравствуйте!
![]() Прав HistoryEarth, вариант с деревом и списками рассматривается. Это собственно то, что я знаю. Я хотела узнать, может как нибудь еще можно решить задачу выбора данных, зависящих от предыдущего выбора... Ну, допустим, мы выбрали данные, как дальше их предъявлять? Какие способы? (На этапе построения интерфейса не известно какие данные будут предъявляться). |
|||
|
||||
SaDFromSpb |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 5.4.2006 Где: Санкт-Петербург Репутация: нет Всего: 3 |
Alenka_, В таком случае, смотри в сторону экспертных систем. Есть там такой раздел, называется "продукции".
-------------------- "За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001) |
|||
|
||||
![]() ![]() ![]() |
Правила раздела "Философия программирования": | |
|
Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО: • вопросы перспективного развития методов написания ПО; • изменяющиеся языки и методологии программирования; Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Философия программирования | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |