Е. К. Пугачев Объектно-ориентированное программирование Под общей редакцией Ивановой Г. С. Рекомендовано Министерством общего и профессионального образования Российской Федерации в качестве учебник

Вид материалаУчебник

Содержание


4.Создание приложений Windows 4.1.Семейство операционных систем Windows с точки зрения программиста
Системная поддержка виртуального пространства памяти до 4 Гбайт для каждого приложения Win32.
Возможность одновременной работы с несколькими приложениями и/или несколькими функциями приложений (многозадачность).
Стандартный графический интерфейс с пользователем
Независимость программ от аппаратуры (в том числе - универсальная графика).
Возможность обмена данными между приложениями.
Совместимость с ранее разработанным программным обеспечением
DLL (Dynamic Link Library
Подобный материал:
1   ...   21   22   23   24   25   26   27   28   ...   39
^

4.Создание приложений Windows

4.1.Семейство операционных систем Windows с точки зрения программиста


Операционная система MS DOS предоставляла программисту минимальный набор средств. Она включала файловую систему, систему управления памятью, систему управления процессами и незначительный набор сервисных функций, облегчающих, например, выполнение операций ввода-вывода в простейших случаях. Вместе с этим, будучи однопрограммной и, соответственно, предоставляя программе все ресурсы системы в монопольном режиме, MS DOS позволяла программисту «напрямую», минуя операционную систему, управлять техническими средствами (рис. 4.1). Причем, при прямом управлении во многих случаях можно было получить существенно большее быстродействие при меньших затратах памяти. В результате достаточно часто программы MS DOS используют прямое управление устройствами. Например, большинство графических программ MS DOS напрямую работают с видеопамятью, причем часть из них также самостоятельно поддерживают клавиатуру и мышь.



Рис. 4.52. Взаимодействие программы с MS DOS и программно-аппаратным обеспечением IBM PC

Программирование на уровне аппаратных средств помимо достоинств имеет и существенные недостатки. Программа, непосредственно управляющая устройствами:
  1. монопольно использует устройства и потому не может выполняться в мультипрограммной среде;
  2. ограниченно переносима (или просто настроена на единственный тип устройства, например, работает только с VGA монитором);
  3. требует значительного времени и трудовых ресурсов на разработку, так как программирование на столь низком уровне очень трудоемкий процесс.

Операционные системы типа Windows существенно отличаются от предшествующей операционной системы MS DOS, не только с точки зрения пользователя, но и с точки зрения разработчика приложений. При их разработке были максимально учтены недостатки предшествующей системы.

В настоящее время в основном распространены операционные системы Windows, получившие обобщенное название Win32: Windows'95, Windows'98, Windows NT.

От прочих Windows эти системы отличаются тем, что все они, правда, в различной степени, используют 32-битную адресацию, что является шагом вперед по сравнению с 16-битной адресацией, используемой предыдущими версиями Windows.

Между собой системы Win32 различаются следующим образом: Windows'95 и Windows'98 являются последовательными версиями операционной системы, предназначенной для широкого круга пользователей. В отличие от Windows NT, предназначенной для пользователей-профессионалов и изначально создававшейся как полноценная операционная система, Windows'95 и Windows'98 не предъявляют жестких требований ни к оборудованию, ни к программному обеспечению, но и не гарантируют той степени надежности, которую обеспечивает Windows NT.

В Windows'98 по сравнению с Windows'95 исправлены обнаруженные ошибки, несколько изменен внешний вид интерфейса, который теперь рассчитан на широкое использование InterNet, и добавлены некоторые функции.

Основными достоинствами операционных систем серии Win32 являются:
  1. ^ Системная поддержка виртуального пространства памяти до 4 Гбайт для каждого приложения Win32.

Использование 32-битных адресов позволяет адресовать до 4 Гбайт памяти. В Win32 предполагается, что каждое приложение Win32 выполняется в своем виртуальном пространстве памяти размером 4 Гбайта, в котором младшие 2 Гбайта зарезервированы за операционной системой, а старшие 2 Гбайта - отведены программе. Виртуальное пространство памяти организуется за счет использования специально выделенной области жесткого диска, которая проецируется на реальную оперативную память постранично по мере надобности. При современном быстродействии технических средств это относительно несильно тормозит выполнение операций, одновременно позволяя программисту не беспокоиться о наличии свободной оперативной памяти.
  1. ^ Возможность одновременной работы с несколькими приложениями и/или несколькими функциями приложений (многозадачность).

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

Помимо разделения времени на уровне приложений, когда каждое приложение считается отдельным процессом, системы Win32 поддерживают мультизадачность на уровне фрагментов приложений. В этом случае приложение может организовывать несколько потоков, разделение времени между которыми будет выполняться наравне с процессами приложений.
  1. ^ Стандартный графический интерфейс с пользователем.

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

Программисту же наличие стандарта и соответствующих библиотек интерфейсных компонент существенно упрощают разработку программных продуктов.
  1. ^ Независимость программ от аппаратуры (в том числе - универсальная графика).

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

5) ^ Возможность обмена данными между приложениями.

Обмен реализуется специальным OLE (Object Linking end Embedding – «связывание и внедрение объектов») - механизмом, который позволяет включать документы одного приложения в другое (в результате получается документ, который получил название составного). Составной документ может содержать два типа объектов:

- связанные - основной документ содержит ссылку на документ другого приложения, соответственно, при изменении объекта его приложением изменится и составной документ;

- внедренные, в этом случае копия объекта становится частью составного документа, и никакое изменение оригинала объекта не переносится в составной документ.

Использование OLE-механизма позволяет, например, вставлять в документ Word рисунки, выполненные в Paint, или таблицы Excel.
  1. ^ Совместимость с ранее разработанным программным обеспечением.

Далеко не последним достоинством Windows является то, что она может выполнять подавляющее большинство программ MS DOS на виртуальной машине MS DOS, что позволяет не отказываться от привычных программных продуктов, разработанных до появления Windows.

Итак, согласно основной концепции, в операционной системе типа Windows программа взаимодействуют только с операционной системой, не имея возможности напрямую обращаться к аппаратуре (рис. 4.2). Управление техническими средствами осуществляется через специальный интерфейс API (Application Program Interface – «программный интерфейс приложения») - набор из нескольких сотен функций, выполняющих все системно-зависимые действия, такие как выделение памяти, вывод на экран и т.д. Эти функции также отвечают за разделение ресурсов системы между различными приложениями при их одновременном запуске, автоматически обеспечивая возможность работы приложения в мультипрограммной среде.



Рис. 4.53. Взаимодействие приложения Windows с операционной системой

Функции API организованы в динамически загружаемые и разделяемые всеми работающими программами библиотеки ^ DLL (Dynamic Link Library – «библиотеки динамического связывания»). Особенность этих библиотек заключается в том, что коды используемых приложениями функций не включаются в исполняемый модуль. Вместо них в модуль включаются ссылки на соответствующие функции. В процессе выполнения приложение просто передает управление нужной функции уже загруженной в память библиотеки, определяя ее адрес по соответствующей таблице. Если запускаемое приложение собирается использовать функции из отсутствующей в оперативной памяти библиотеки, то эта библиотека загружается в память. Неиспользуемые библиотеки из памяти выгружаются.

Применение DLL позволяет существенно уменьшить объем приложений и увеличить эффективность использования оперативной памяти.

В основу Windows положен принцип событийного управления. Чтобы разобраться, что это такое, вспомним, как организован вычислительный процесс в MS DOS.

При выполнении в MS DOS программа, получив управление, далее полностью контролирует вычислительный процесс: по мере необходимости запрашивает данные, выполняет расчеты и выводит результаты в соответствии с реализуемой ею последовательностью обработки (рис. 4.3). При этом пользователь большую часть времени ожидает результатов выполнения программ.



Рис. 4.54. Процесс выполнения программы в MS DOS

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

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

Помимо внешних по отношению к приложению событий, перечисленных выше, могут фиксироваться и внутренние события, когда приложение должно обработать изменение собственного состояния, например, получение одним окном приложения данных от другого.

О наступлении того или иного события, на которое необходимо «отреагировать», приложение информируется посылкой соответствующих сообщений.

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

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

Приложение Windows, создав окно и запустив цикл обработки сообщений, возвращает управление операционной системе и в дальнейшем получает управление только по приходе сообщений, предназначенных данному приложению.

Более того, пользователь может, вызвать одно приложение, затем второе, не завершая первого, и работать с этими приложениями попеременно (рис. 4.4) .



Рис. 4.55. Работа пользователя с приложениями в Windows

Для того чтобы подчеркнуть указанные выше отличия, программы, предназначенные для выполнения под управлением операционной системы типа Windows, принято называть приложениями Windows.