2. АНАЛИЗ ТЕХНИЧЕСКИХ РЕШЕНИЙ

2.1 Библиотека MFC

Система Microsoft Windows была разработана до того времени, когда идея объектно-ориентированного программирования нашла свое отражение в языке C++. Приложения на языке С реализовывались с применением функций программного интерфейса, называемых иногда функциями API (Application Programming Interface). Однако идеи объектно-ориентированного программирования требуют и наличия средств, позволяющих, с одной стороны, программировать в терминах классов, а с другой – сохранить возможность использования в приложениях функций API. Именно такой объектно-ориентированный интерфейс для Windows обеспечивает библиотека классов MFC (Microsoft Foundation Classes), входящая в состав пакета Visual C++.

Эта библиотека классов позволяет:

а) значительно сократить усилия по написанию программного кода приложений Windows;

б) уменьшить размер программного кода;

в) обрабатывать сообщения непосредственно методами класса без программирования цикла обработки сообщений;

г) выполнять непосредственный вызов любой функции Windows С;

д) легко преобразовывать Си-приложения в приложения на языке C++;

е) использовать все функции Windows API;

ж) легче адаптировать приложения к различным платформам, использовать как статически, так и динамически подключаемые библиотеки MFC;

з) значительно упростить применение таких возможностей, как элементы управления OLE, работа с базами данных, средства печати, управление наборами инструментария;

и) более эффективно использовать объектную ориентированность языка C++.

Рисунок 2.1 – Иерархия классов в библиотеке MFC

Следует отметить, что MFC инкапсулирует функции API в форме C++. Эта библиотека классов позволяет работать в терминах различных элементов Windows, таких, как окна, диалоги, элементы управления, а также в терминах графического интерфейса: контекст устройства, кисть и перо. Библиотека MFC создана как иерархический набор классов, позволяющих реализовывать Windows-приложения различных типов: диалоги, приложения с SDI или MDI интерфейсом, приложения, поддерживающие работу с базами данных, OLE-приложения. Базовым классом большинства классов библиотеки является класс CObject. В этом классе инкапсулированы общие методы работы с объектами: использование дампа объектов класса при отладке приложения, доступ к информации о классе объекта времени выполнения, сохранение и восстановление объектов класса. Большую часть библиотеки составляют классы, наследуемые от CObject и реализующие архитектуру приложения (рисунок 2.1)[1]: CWinThread, CWinApp, CDoc-Template, CDocument, CFrameWnd, CView и др.

2.2 Нечеткая логика ‑ математические основы

Нечеткое множество ‑ это пара (A, m), где A ‑ имя нечеткого множества, например: БОЛЬШОЙ, МОЛОДОЙ, ОТРИЦАТЕЛЬНО МАЛЫЙ, а m ‑ функция m:X-->L, называемая функцией принадлежности и обозначаемая обычно греческой буквой m. Часто полагается L = [0,1], а в качестве X используется некоторое множество вещественных чисел. m(x) интерпретируется как степень принадлежности элемента x из X нечеткому множеству A.

Характеристикой нечеткого множества выступает функция принадлежности (Membership Function)[4]. Обозначим через MFc(x) – степень принадлежности к нечеткому множеству C, представляющей собой обобщение понятия характеристической функции обычного множества. Тогда нечетким множеством С называется множество упорядоченных пар вида C={MFc(x)/x}, MFc(x) [0,1]. Значение MFc(x)=0 означает отсутствие принадлежности к множеству, 1 – полную принадлежность.

Проиллюстрируем это на простом примере. Формализуем неточное определение 'горячий чай'. В качестве x (область рассуждений) будет выступать шкала температуры в градусах Цельсия. Очевидно, что она будет изменяется от 0 до 100 градусов. Нечеткое множество для понятия 'горячий чай' может выглядеть следующим образом:

C={0/0; 0/10; 0/20; 0,15/30; 0,30/40; 0,60/50; 0,80/60; 0,90/70; 1/80; 1/90; 1/100}.

Так, чай с температурой 60 С принадлежит к множеству 'Горячий' со степенью принадлежности 0,80. Для одного человека чай при температуре 60 С может оказаться горячим, для другого – не слишком горячим. Именно в этом и проявляется нечеткость задания соответствующего множества.

Для нечетких множеств, как и для обычных, определены основные логические операции[5]. Самыми основными, необходимыми для расчетов, являются пересечение и объединение.

Пересечение двух нечетких множеств (нечеткое "И"): AÈB: MFAB(x)=min(MFA(x), MFB(x)).

Объединение двух нечетких множеств (нечеткое "ИЛИ"): AÇB: MFAB(x)=max(MFA(x), MFB(x)).

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

Для описания нечетких множеств вводятся понятия нечеткой и лингвистической переменных.[4]

Нечеткая переменная описывается набором (N,X,A), где N – это название переменной, X – универсальное множество (область рассуждений), A – нечеткое множество на X.

Значениями лингвистической переменной могут быть нечеткие переменные, т.е. лингвистическая переменная находится на более высоком уровне, чем нечеткая переменная. Каждая лингвистическая переменная состоит из:

- названия;

- множества своих значений, которое также называется базовым терм-множеством T. Элементы базового терм-множества представляют собой названия нечетких переменных;

- универсального множества X;

- синтаксического правила G, по которому генерируются новые термы с применением слов естественного или формального языка;

- семантического правила P, которое каждому значению лингвистической переменной ставит в соответствие нечеткое подмножество множества X.

Рассмотрим такое нечеткое понятие как 'Цена акции'. Это и есть название лингвистической переменной. Сформируем для нее базовое терм-множество, которое будет состоять из трех нечетких переменных: 'Низкая', 'Умеренная', 'Высокая' и зададим область рассуждений в виде X=[100;200] (единиц). Последнее, что осталось сделать – построить функции принадлежности для каждого лингвистического терма из базового терм-множества T.

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

Треугольная функция (рисунок 2.2) принадлежности определяется тройкой чисел (a,b,c), и ее значение в точке x вычисляется согласно выражению:

 (2.1)

При (b-a)=(c-b) имеем случай симметричной треугольной функции принадлежности, которая может быть однозначно задана двумя параметрами из тройки (a,b,c).


Рисунок 2.2 – Треугольная функция принадлежности

Аналогично для задания трапецеидальной функции (рисунок 2.3) принадлежности необходима четверка чисел (a,b,c,d):

(2.2)

При (b-a)=(d-c) трапецеидальная функция принадлежности принимает симметричный вид.

Рисунок 2.3 – Трапециидальная функция принадлежности

Функция принадлежности гауссова типа(рисунок 2.4) описывается формулой

(2.3)

и оперирует двумя параметрами. Параметр c обозначает центр нечеткого множества, а параметр s отвечает за крутизну функции.

Рисунок 2.4 – Гауссовская функция принадлежности

Расширенная функция принадлежности гауссова типа(рисунок 2.5) описывается формулой

(2.4)

Рисунок 2.5 – Расширенная гауссовская функция принадлежности

Сигмоидальная функция принадлежности (рисунок 2.6) описывается формулой

(2.5)


Рисунок 2.6 – Сигмоидальная функция принадлежности


Информация о работе «Исполняемое Win32 приложение»
Раздел: Информатика, программирование
Количество знаков с пробелами: 47313
Количество таблиц: 0
Количество изображений: 9

Похожие работы

Скачать
175379
2
5

... в Win32 позволила реализовать так называемые многопотоковые приложения (multithread application). При этом выделяют два новых понятия — процесс (proccess) и поток (thread). Процессы в Win32 API примерно эквивалентны приложениям в Windows API. Для каждого процесса выделяются определенные системные ресурсы — адресное пространство, приоритеты и права доступа к разделяемым ресурсам и прочее, но не ...

Скачать
36517
25
0

... DriveType2.cpp. СОВЕТ Если вы хотите, чтобы эта программа полноценно работала в WinNT, следует также перехватить функцию GetDriveTypeW. Ещё одна реализация данного метода описана в статье «Перехват API-функций в Windows NT/2000/XP», автор Тихомиров В. А., публиковалась в RSDN Magazine #1 (будьте осторожны, там та же ошибка, что и у Джеффри Рихтера). ПРИМЕЧАНИЕ У этого метода есть ещё ...

Скачать
71630
0
0

... и PCCard32 (CardBus) PCMCIA. 6.            Включены следующие подсистемы: DCOM, ActiveMovie v2.0 и DirectX v5.0. 7.            Некоторые утилиты Windows 98 улучшены по сравнению с Windows 95. Операционная система MS Windows NT   Windows NT имеет Windows-подобный графический интерфейс пользователя и предоставляет Win32 API — 32-разрядный интерфейс прикладного программирования для разработки ...

Скачать
87374
8
17

... предприятия. Для дальнейшего развития Системы необходимо рассчитать экономическую эффективность проекта. Для этого необходимо выбрать направление распространения Системы. Заказчиком системы выступало закрытое акционерное общество "Белгородский бройлер". Произведем расчет экономической эффективности проекта с точки зрения заказного проекта. Структура экономической части при создании программного ...

0 комментариев


Наверх