Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора 130стр.doc
Скачиваний:
93
Добавлен:
15.06.2014
Размер:
2.49 Mб
Скачать

10.Направления интеллектуализации ппп. Типология задач интеллектуализации.

Интелектуализация процессов - переход от систем, основанных на переработке данных, к системам, работающим со знаниями. Под знаниями понимаются информационные структуры, заполненные накопленными фактами, закономерностями, гипотезами. Разница между обычными и интеллектуальными системами состоит в том, что пер­вые работают со сведениями, относящимися к конкретному предмету, а вторые – со знаниями об абстрактных сущностях (объектах, предметах).

По типу обрабатываемых данных и используемых операций, а также спосо­бам организации вычислительного процесса в ИС можно условно выделить сле­дующие классы задач: I) обработка символьной информации; 2) решение перебор­ных вычислительных и логических задач и построение логического вывода решения с использованием заданной системы правил; 3) работа с БД, содержащими сложные информационные связи; 4) высокоскоростная обработка июбражений и речи.

В рамках приведенной классификации укажем основные направления ин­теллектуализации ППП: 1) синтез программ; 2) общение на естественном языке {анализ входных сообщений, синтез выходных сообщении, ведение диалога); 3) ге­нерация стратегий поиска; 4) генерация навигационных маршрутов; 5) экспертная поддержка, 6) интеллектуализация интерфейса.

Интеллектуализация относится как к процессу создания программного средства , так и к процессу взаимодейст­вия пользователя с ППП.

11) Обработка исключений с помощью библиотеки mfc.

Для обработки исключений MFC используется класс CException или классы поражденные от него.

12)Обработка сообщений в библиотеке mfc

В литературе по языку C++ иногда проскальзывает такая терминология — методы класса называются сообщениями. Благодаря свойству инкапсуляции "общение" с некоторыми компонентами класса осуществляется только посредством определенных методов. Использование библиотеки классов MFC должно было оказать влияние на структуру программ для Windows, скрыв в классах многочисленные операторы switch или "взломщики" сообщений.

Типы сообщений MFC

В отличие от рассмотренной классификации сообщений, в библиотеке MFC принята несколько иная. Все возможные сообщения разделены на три основные категории:

  • сообщения Windows (сообщения, которые начинаются с префикса WM_, за исключением WM_COMMAND. Все сообщения этой категории предназначены для обработки окнами и представлениями (view) и часто содержат параметры, которые определяют алгоритм обработки того или иного сообщения. Сюда входят, например, аппаратные сообщения, сообщения обслуживания окна и т. д. );

  • извещения элементов управления(извещения (notification messages) от элементов управления и других дочерних окон, направляемые своим "родителям". Например, элемент управления LISTVIEW посылает своему родительскому окну сообщение WM_COMMAND, содержащее код извещения LVN_SETDISPINFO, когда требуется обновить информацию об элементах списка. Оконная процедура отвечает на полученное извещение заполнением структуры LV_DISPINFO и передачей ее обратно в элемент управления. Механизм передачи извещений аналогичен другим WМ_-сообщениям, с одним единственным исключением. Извещение BN_CLICKED, посылаемое элементом управления BUTTON, когда пользователь щелкает по нему, трактуется как командное и передается аналогично другим командам. );

Сообщения этих двух категорий предназначены для объектов классов, образованных от базового класса CWnd, т. е. имеющих дескриптор HWND окна Windows. Их обработка осуществляется в соответствующей оконной процедуре.

  • командные сообщения (команды) (все сообщения WM_COMMAND. называемые командами (или командными сообщениями), от объектов интерфейса пользователя, которые включают меню, кнопки панелей инструментов и командные клавиши (accelerator keys). Обработка команд осуществляется способом, отличающимся от обработки других сообщений, и может производиться множеством объектов, включающим документы, шаблоны документов и сам объект "приложение".).

в MFC для обработки каждого отдельного сообщения используется специальная функция-обработчик. Например, можно иметь одну функцию-обработчик для сообщения WM_PAINT, другую — для сообщения WM_KEYUP и третью — для сообщения WM_LBUTTONDOWN. Все функции-обработчики являются функциями какого-либо класса, и для них используются названия: функция-член обработчик сообщения, функция-обработчик сообщения или просто обработчик сообщения. Принципы работы обработчиков сообщений не изменяются от того, к какой категории относится сообщение, однако механизм их вызова различен. Но прежде чем рассматривать механизмы посылки и получения сообщений, необходимо понять, каким образом сопоставляются сообщение и соответствующий ему обработчик.

Сообщения выбираются из очереди при помощи функции PeekMessage, а работу по поддержке клавиатуры, выбору оконной процедуры и передаче в нее сообщений выполняет недокументированная функция PumpMessage из класса CWinThread.

Основное отличие заключается в наличии специального механизма, позволяющего перехватить у системы циклы фоновой обработки путем вызова переопределяемой функции Onldle класса вашего приложения. Такая возможность появляется, когда приложение принимает сообщения с помощью PeekMessage. Если очередь сообщений пуста, то функция возвращает FALSE. Отметим, что цикл обработки сообщений MFC требует специальной обработки сообщения WMQUIT, поскольку PeekMessage не реагирует на это сообщение так, как это делает функция GetMessage. Эту работу выполняет упомянутая функция PumpMessage.

Классификация сообщений:

□ сообщения Windows,

□ извещения элементов управления,

□ командные сообщения (команды).

В первую категорию входят сообщения, имена которых начинаются с префикса WM_, за исключением WMCOMMAND. Все сообщения этой категории предназначены для обработки окнами и представлениями и часто содержат параметры, которые определяют алгоритм обработки того или иного сообщения.

Вторая категория включает извещения (notification messages) от элементов управления и других дочерних окон, направляемые своим родительским окнам. Механизмы передачи извещений и других WM-сообщений аналогичны, с одним единственным исключением. Извещение BNCLICKED, посылаемое элементом управления BUTTON, когда пользователь щелкает по нему, трактуется как командное сообщение и передается аналогично другим командам.

Сообщения этих двух категорий предназначены для объектов классов, образованных от базового класса CWnd, т. е. имеющих дескриптор HWND окна Windows. Их обработка осуществляется в соответствующей оконной процедуре.

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

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

Карта сообщений.

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

Карта сообщений представляет собой механизм пересылки сообщений и команд Windows в окна, документы, представления и другие объекты приложения, реализованного на базе MFC. Такие карты преобразуют сообщения Windows, извещения элементов управления, а также команды меню, кнопок панелей инструментов, акселераторов клавиатуры в функции соответствующих классов, которые их обрабатывают. Каждый класс, который может получить сообщение, должен иметь свою карту сообщений, для того, чтобы иметь возможность соответствующим образом обрабатывать сообщения. При этом следует иметь в виду, что карта сообщений должна определяться вне какой-либо функции или объявления класса. Она также не может размещаться внутри С-блока.

Для определения карты сообщений необходимо использовать три макроса: BEGIN_MESSAGE_MAP, END_MESSAGE_MAP и DECLARE_MESSAGE_MAP.