
- •Тема 5. Внутреннее проектирование программного изделия
- •Понятие модуля программы
- •К преимуществам разработки пи с использованием модулей можно отнести следующие:
- •Связность модулей программы
- •Сцепление модулей программы
- •Таким образом, на основании изложенных выше соображений можно сформулировать следующие правила формирования структуры и взаимодействия модулей в пи:
- •Оформление структуры программного изделия
- •Особенности архитектуры Windows-программ
- •Программирование модулей
- •Внешние спецификации модуля должны содержать:
- •Стиль программирования
- •Сборка программы
Особенности архитектуры Windows-программ
Следует иметь в виду, что архитектура ПИ определяется и таким фактором, как способ управления фрагментами программы, который заложен в основе функционирования операционной системы.
Так, например, программы, работающие в среде операционных систем с пакетной обработкой типа DOS, управляется данными (рис. 2.13,а), т.е. здесь каждая процедура (фрагмент программы) обрабатывает определенные данные, и в результате их работы образуются новые данные, на основе которых производится выбор очередной процедуры или фрагмента. При этом в начале и в конце программы определяются действия по инициализации и деинициализации программы.
Коренное отличие Windows-программ состоит в том, что смена их фрагментов или процедур осуществляется с помощью событий (рис. 2.13,б).
a)
|
b)
|
Рис. 2.13
Смысл событийно-управляемого принципа данного типа ОС и всех современных программ, работающих в их среде, заключается в запуске (после выполнения инициализации программы) специальной процедуры «обработчика событий», которая, производя анализ поступившего события, передает управление заданной процедуре программы, а после обработки события управление возвращается системе. После этого обработчик готов к приему следующего события. Информация о наступившем событии передается в виде сообщения, которое раскрыает характер события и содержит информацию, необходимую для обработки. По окончании работы программы производится деинициализация.
Таким образом, для W-программы необходимо создать как минимум такой ряд процедур:
— процедуру инициализации;
— процедуру — обработчик событий;
— диспетчер событий;
— процедуры — обработчики конкретных событий;
— процедуру деинициализации.
Весь вывод информации на экран и прием сообщений W-npoграмма производит через окна, поэтому, кроме работы с сообщениями, необходимо выполнять и работу с этими окнами.
В связи с этим, практически каждая W-программа состоит из следующего ряда обязательных частей:
1. Функции WinMain, являющейся точкой входа в программу.
2. Создания и описания атрибутов класса окна.
3. Создания экземпляра окна данного класса.
4. Цикла обработки сообщений.
5. Оконной функции, обрабатывающей сообщения.
Например: Program ProgName; Uses WinProcs, WinTypes; {описание всех процедур и функций, в том числе и всех оконных функций, которые объявляются экспортируемыми с помощью слова Export} {Точка входа в программу} Procedure WinMain; Var Window: HWnd; {ссылка на окно} Message: TMsg ; {запись — сообщение} WindowClasse: TwndClass ; {описание класса} Begin {определение копии программы} … {создание и регистрация класса окна} … {создание и отображение главного окна} … {цикл получения и обработки сообщений} … {завершение программы} end; Begin WinMain End.
Процедура WinMain — это точка входа в рассматриваемую программу, которая получает управление от ядра Windows. Каждая W-программа должна иметь такую процедуру, инициализирующие действия которой обычно заключаются в создании и регистрации класса окна, последующем создании и отображении окна на экране и активизации цикла работы с сообщениями.
WinProcs — этот модуль представляет собой интерфейс BWP с функциями Windows API.
WinTypes — модуль содержит описание всех типов данных, используемых Windows API. -
Функция WindowProc — это специальная "оконная функция", обрабатывающая сообщения, присылаемые окну. Эта функция называется непосредственно ядром Windows. Функции, вызываемые Windows, называются косвенно-вызываемыми.
Следует иметь в виду, что простое модульное программирование в среде Windows представляет собой достаточно сложную задачу. Это связано с тем, что, во-первых, программа должна иметь архитектуру, управляемую событиями (непривычную для традиционного программирования), а, во-вторых, ядро Windows насчитывает более 600 функций и 200 различных сообщений (о назначение и правилах применения которых программисту желательно знать). Среди программистов бытует мнение о том, что Windows — это рай для пользователя и ад для программистов.
Одним из способов упростить программирование в среде этого типа ОС является использование объектно-ориентированных библиотек. Одной из таких библиотек является, например, ObjectWindows, которая была включена в состав Turbo Pascal for Windows еще в 1991 г.