Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания по курсовой АЯИП (2 курс,....doc
Скачиваний:
8
Добавлен:
20.04.2019
Размер:
402.43 Кб
Скачать

1.2. Методология объектно-ориентированного анализа

и проектирования

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

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

Появление методологии объектно-ориентированного анализа и проектирования (ООАП) потребовало, с одной стороны, разработки различных средств концептуализации предметной области, а с другой – соответствующих специалистов-аналитиков, которые владели бы этой методологией.

Методология ООАП тесно связана с концепцией автоматизированной разработки программного обеспечения (Computer Aided Software Engineering, CASE), которая реализуется, в частности, с использованием унифицированного языка моделирования UML (Unifided Modeling Language). Средства UML позволяют выполнить анализ предметной области, сформулировать требования к программе, визуализировать процесс разработки концептуальной схемы предметной области и спроектировать структуру программы. Решение перечисленных задач достигается, в частности, в процессе разработки UML-диаграмм, таких как диаграммы вариантов использования, классов, состояний, последовательности, деятельности, кооперации, компонентов, развертывания. Перечисленные UML-диаграммы являются моделью будущей программной системы и разрабатываются на начальных этапах проектирования.

2. Особенности программирования в среде Windows

2.1 Разработка объектно-ориентированных программ

с использованием программного интерфейса приложений

ОС Windows предоставляет пользователям (программистам) следующие возможности, устраняющие недостатки DOS:

  • Общий интерфейс пользователя.

  • Общесистемный ввод-вывод, использующий очередь, и система передачи сообщений.

  • Независимая от внешних устройств архитектура ввода-вывода.

  • Многозадачность на уровне приложений и взаимодействие между процессами.

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

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

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

  • События аппаратного ввода генерируются клавиатурой, мышью или таймером. Эти события называются событиями, поставленными в очередь (enqueued events), поскольку они проходят через очередь аппаратного ввода.

  • События диспетчера окон генерируются Windows непосредственно в ответ на действия пользователя, выполняющего операции типа изменения размера окна либо выбора пункта меню. Наиболее часто возникающее сообщение подобного типа – WM_PAINT, которое посылается для обновления содержимого области окна.

  • Индивидуальные окна могут посылать сообщения другим окнам. Например, для указания текстовому полю об удалении текста посылается сообщений WM_SETTEXT. Текстовое поле также использует этот механизм для сообщения об изменении текста путем посылки программисту сообщения EN_CHANGE.

Сообщения, непосредственно сгенерированные Windows, обычно начинаются с набора символов “WM” (Windows_Message). Сообщения, сгенерированные специфическими видами средств управления Windows, используют различные префиксы.

Программа Windows является большей частью коллекцией окон. Существуют три основных стиля окна:

  • WS_OVERLAPPEDWINDOW – используется для «основного окна», окна верхнего уровня приложения. Такие окна могут перемещаться и изменять размер, появляясь при этом в любом месте экрана. Для таких окон нет включающих их родительских (parent) окон, которые могут ограничивать движение по экрану.

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

  • WS_CHILDWINDOWиспользуется для оконных элементов управления. Командная кнопка (типа кнопки OK в типичном диалоговом окне) – дочернее окно, подобно текстовому полю или полосе прокрутки. Дочернее окно получает возможную область перемещения от родительского – невозможно выполнять его перемещение вне области перемещения родительского окна.

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

  • Инициализация.

  • Реализация.

  • Вызов цикла сообщений.

  • Ответ на сообщения.

Первые три задачи всегда выполняются функцией WinMain(). Эта функция является точкой входа для каждой программы Windows, точно так же как функция main() является точкой входа для каждой традиционной программы, написанной на языке C. Четвертая задача выполняется функцией, традиционно именуемой WndProc() (хотя ее можно называть как угодно). Естественно, что программа пользователя может содержать и другие функции, если это необходимо.

Первая задача функции WinMain() заключается в определении специфичного для приложения оконного класса для основного окна программы.

С целью создания оконного класса необходимо сначала создать экземпляр типа Windows WNDCLASS. Тип WNDCLASS - это структура, содержащая различные поля, которые нужно заполнить, например:

static char MyClassName[]=”MyWindowClass”;

WNDCLASS wc;

wc.lpfnWndProc=WndProc;

wc.lpszClassName=MyClassName;

// и т.д.

Регистрация определенного оконного класса реализуется с помощью функции Windows API:

RegisterClass(&wc);

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

HWND hwnd=CreateWindow(MyClassName, //Имя

“WindowName”, //Заголовок

WS_OVERLAPPEDWINDOW, //Стиль

CW_USERDEFAULT, //Лев.верх.угол

CW_USERDEFAULT, //Лев.верх.угол

CW_USERDEFAULT, //Ширина

CW_USERDEFAULT, //Высота

NULL, //Родитель

NULL, //Меню

hInsnance, //Десктрипт. прилож.

NULL); //Доп. данные

Для того, чтобы созданное окно сделать видимым, вызывается метод

ShowWindow(hwnd, nCmdShow).

Окно отрисовывается после вызова функции

UpdateWindow(hwnd).

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

Эти задачи выполняются процедурой Windows API, именуемой GetMessage(). Когда вызывается GetMessage(), ей передается адрес структуры MSG. Если существует сообщение, ожидающее во входной очереди программы, Windows заполняет все поля структуры MSG и возвращает значение TRUE функции WinMain(). Однако, если в очереди ожидает сообщение WM_QUIT, функция GetMessage() возвращает значение FALSE, и программа завершается.

Внутри функции GetMessage() находятся две строки

TranslateMessage(&msg);

DispatchMessage(&msg);.

Первая строка анализирует, не является ли сообщение результатом нажатия клавиши, и, если это так, происходит формирование кода ASCII нажатой клавиши. Функция DispatchMessage(&msg) возвращает сообщение обратно в Windows вместе с указаниями о передаче его оконной процедуре пользователя. Собственно анализ сообщений с обращением к функциям их обработки происходит в функции WndProc(), вызываемой самой Windows.