Помощник, ведущий диалог
Всякий раз, когда разработчик создает очередное решение, одна из серьезных проблем, стоящих перед ним, состоит в организации интерфейса своей системы. Хороший интерфейс, - привлекательный и понятный пользователю, во многом определяет успех предлагаемого решения. Диалог с пользователем - важная часть интерфейса. Во многих случаях для организации диалога достаточно обычных диалоговых окон, открываемых в нужный момент с выдачей подходящего сообщения. Зачастую для организации диалога предпочтительнее более выразительные средства и тут незаменим Помощник (объект Assistant), хорошо знакомый пользователям Office 2000, поскольку именно он обеспечивает диалог со справочной системой, может организовать подсказки и выдачу советов. Давайте познакомимся с объектом Assistant поближе и научимся использовать его в своих решениях. Объект Assistant, задающий Помощника, появился в предыдущей версии Office 97. В новой версии он сохранил свои основные свойства и поведение.
Вначале несколько слов о Помощнике. Идея Помощников (Мастеров, Агентов) в программировании не нова. Сегодня эта технология приобрела широкую популярность. В любом достаточно сложном приложении, в котором пользователю отводится активная роль, полезно создать некоторую совокупность Помощников пользователя. Пользователь будет выбирать, какую задачу он хочет решить в тот или иной момент, а соответствующий Помощник поможет ему на этом пути, проводя пользователя через все этапы решения задачи, снабжая необходимой информацией, информируя о возникших ошибках, позволяя сделать откат и вернуться к предыдущему этапу. В программных продуктах Microsoft, например, подобные Помощники или Мастера (Assistants, Wizards) сопровождают нас на каждом шагу, начиная с этапа инсталляции приложения. Кроме того, что Помощники предназначены для обеспечения помощи в решении некоторой конкретной задачи и могут вести диалог с пользователем, они могут обладать еще двумя важными качествами:
- Иметь видимый образ, возможно допускающий анимацию. Помощник с анимацией, делает приложение одушевленнее. Замечу, что из всех образов, в которых может предстать Помощник, заданный объектом Assistant, я предпочитаю Rocky и позволяю себе в минуты отдыха играться с ним, заставляя его выполнять различные движения. Жаль только, что его анимация не подчиняется голосовым командам, например, "Принеси палку".
- Обладать определенной интеллектуальностью. Интеллектуальный" Помощник должен уметь собирать факты в процессе работы пользователя, иметь базу знаний, содержащую факты и правила, и иметь встроенную машину вывода. Такой Помощник может делать собственные выводы, брать на себя часть творческой работы, например, по заданию части параметров, или приходить на помощь в нужный, по его мнению, момент.
В последнем предложении я не поставил запятые в обороте "по его мнению". Интеллектуальный Помощник, каковым, несомненно, является встроенная в Word система проверки правописания, тут же выдала мне соответствующую подсказку.
Помощник, встроенный в справочную систему Office 2000, и построенный на основе объекта Assistant, обладает всеми тремя качествами, - выдает справки, имеет видимый образ, и не один, и обладает интеллектуальностью. Следует отметить, что его интеллектуальные способности оставляют желать лучшего, но, несомненно, улучшились в сравнении с предыдущей версией. Он теперь, по крайней мере, понимает запросы, сделанные не только на английском языке, но и на русском.
Программист, использующий объект Assistant для собственных целей, получает Помощника с анимацией, но, конечно, не обладающего никакой интеллектуальностью. Добавить интеллектуальность дело довольно не простое, хотя и возможное.
Начнем рассмотрение объекта Assistant и связанных с ним объектов, с формального изучения его свойств. Структура объекта Assistant довольно проста:
Рис. 7.1. Структура объекта Assistant
В объект Assistant вложен объект Balloon. В свою очередь в объект Balloon вложены две коллекции - CheckBoxes (кнопки выбора) и Labels (метки) с элементами классов CheckBox и Label соответственно. Обратите внимание, коллекции называются именно так и не имеют приставки Balloon, как показано на рисунке, взятом из документации, и не изменившимся в новой версии.
Объект Balloon - это диалоговое окно специального вида. При его проектировании в нем можно создать до пяти элементов каждой коллекции. Метки задают текстовые сообщения, адресованные пользователю. Обычно они имеют вид нумерованного списка или списка-бюллетеня и определяют порядок действий пользователя или возможные причины ошибки. Вторая коллекция с кнопками выбора позволяет пользователю сделать тот или иной выбор. Анализируя полученную информацию, программа может выполнять действия, предписанные выбором пользователя.