Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

TMiYaP

.pdf
Скачиваний:
6
Добавлен:
01.06.2015
Размер:
508.85 Кб
Скачать

ТМиЯП.

Технология событийного программирования.

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

 

Прикладная

 

 

Оборудование,

 

программа

 

 

память

 

 

 

 

 

Вызов ф-ии

Результат

API

выполнения ф-ии

Операционная система

*API (applicationprogramminginterface)- набор готовых классов, процедур, функций,

структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах. Используется программистами для написания всевозможных приложений.

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

Прикладная программа никогда не имеет прямого доступа к оборудованию!

Прикладная

программа

Вызов

Рез.

Вызов

 

 

ф-ииAPI

Выполн.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Операционная

 

 

 

Оборудование,

 

система

 

 

 

память

 

 

 

 

 

 

SPY++ – утилита.

*Утилита — вспомогательная компьютерная программа в составе общего программного обеспечения для выполнения специализированных типовых задач, связанных с работой оборудования и операционной системы.

**Spy++ (SPYXX.EXE) — это служебная программа на основе Win32, предоставляющее графическое представление системных процессов, потоков, окон и сообщений окон.

Пример оконной функции.

LONGWINAPIWndProc(

HWNDhwnd,

UINT Message, WPARAMwparam, LPARAMlparam)

{

Switch (Message)

{

Case WN_DESTROY: PostQuitMessage(0); break;

default:

returnDefWindowProc(hwnd, Message, wparam, lparam);

}

return 0;

}

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

Разработка программы в многозадачной системе базируется на событийном программировании. Его суть в написании программы как обработчика некоторого события. В диалоговом интерфейсе Windowsобработчик естественным образом связывается с нажатием кнопок, выбором элементов из списка сворачиванием, разворачиванием окон и т.д.

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

Разработка приложений для Windowsвключает в себя 2 этапа: 1)Визуальный дизайн программы, его содержание в том, что на форме

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

2)Создание обработчиков, отладка и тестирование программного кода.

Технология объектно-ориентированного программирования.

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

Основа объектного подхода в программировании:

абстрагирование

наследование

полиморфизм

инкапсуляция

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

Абстрагирование в объектном подходе играет решающую роль. От того, как определены сущности в прикладной программе, зависит еѐ качество. Неудачное абстрагирование приводит к так называемым хрупким классам. Это означает, что малейшая попытка модифицировать программу потребует изменения большого числа классов. Удачное абстрогирование должно приводить только к добавлению программного кода в существующие классы.

MVC (Model View Controller)

Программирование на некоторых языках изначально предполагает наличие абстракций самого программного приложения. Примером абстракций является модель MVC. Предполагается, что любое приложение строится как минимум из 3-х классов. Каждый из классов абстрагирует поведение программы. Класс Modelабстрагирует поведение, связанное с вводом и вводом данных из вне в программу. Его задача – это преобразование внешних структур данных во внутренние и наоборот. Примером внутренних структур являются массивы, списки, хэш-таблицы, очереди, стэки и т.д. Внешние структуры это консоль, файлы, базы данных и т.д. Свойства и методы класса Modelдолжны обеспечивать хранение данных, ввод и вывод.

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

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

Наследование.

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

 

 

 

 

 

Окно

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Наследование

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Кнопка

 

Ввод

 

Рисунок

 

 

 

 

 

 

 

 

 

 

 

 

Кнопка, ввод и рисунок наследуют свойства окна.

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

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

;fun( )

А

 

 

 

 

В

fun( );

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Draw ( )

А

virtualM ( )

 

 

 

 

 

Наследование может строиться в несколько уровней иерархии. В некоторых случаях это помогает снизить избыточность наследования в свойстве методов, однако усложняет структуру модели программы и затрудняет еѐ отладку, поэтому на практике не рекомендуется использовать более 3-х уровней наследования.

В любом классе можно на многих языках вводить виртуальные методы. Метод называется виртуальным, если он объявлен в интерфейсе, но не реализован. (virtualM ( ) )

Цель создания виртуальных методов это сделать класс более «лѐгким», избежать переноса ненужной реализации производных классов. Класс, в котором хотя бы один метод виртуальный, называют абстрактным. Сконструировать экземпляр абстрактного класса невозможно.

Drow ( ) – метод адресовки.

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

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

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

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

Моделирование объектных приложений.

UML – универсальный язык моделирования.

Для описания объектных моделей используют языки UML.Это язык графической нотации систем, имеющих объектную архитектуру.

Язык UMLпредполагает, что всякая система описывается диаграммами нескольких видов.

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

Язык не определяет обязательные диаграммы. Набор диаграмм определяет разработчик.

Диаграммы прецедентов.

прецедент

Актор (участники процесса)

Диаграмма прецедентов описывает то, как система работает, не детализируя, как она это делает.

 

Регистр.

Преподаватели

админ

 

Вход

Студенты

руководитель

Главн

меню

Профиль

Расписание

……

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

также служит для разработки тестов конечного продукта. Набор тестов может создаваться параллельно с разработкой программного кода.

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

Диаграмма классов.

Диаграмма классов описывает состав элементов, из которых состоит система и связей между ними.

Графическая нотация диаграмм классов отображает все виды отношений, которые существуют в объектных моделях.

класс

свойства

методы

Наследование

прямоугольник

-высота -ширина -цвет фона -цвет текста -рамка

+Уст ширину ( ) +Уст Высоту ( ) +Уст Цвет ( )

+Уст Рамку ( )

Список

-строки списка -число строк

+Очистить ( ) +Добавить стр ( ) +Ужалить стр ( ) +Текущ ( )

Выпад список

-список строк -высота выпад

+Очистить ( ) +Добавить стр ( ) +Ужалить стр ( ) +Текущ ( )

флажок

-состояние -вид отметки

+Переключить ( )

кнопка

-иконка -состояние

+Нажать ( )

- наследование

- агрегирование

- композиция - ассоциация

На диаграммах классов явно отображаются те абстракции, которые введены конкретным разработчиком. В зависимости от опыта, условий задачи каждый разработчик строит абстракции по-разному.

Диаграмма классов представляет их независимо от языковой реализации. classMyClass: A, И

{

private …

}

StructMyStruct

{

}

В структуре всѐ открыто.

Агрегирование

Диалоговое окно

 

-Заголовок

 

-Системная панель

1

-Строка состояния

 

+Свернуть ( )

 

+Развернуть ( )

 

―signal» - загрузка ( )

1

―signal‖ – фокус ( )

 

button1->Text= ―Ok‖

 

Кнопка

-Иконка

*-Состояние +Нажать ( )

Флажок

*-Состояние -Вид отметки

+Переключить ( )

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

Композиция объектов имеет место в тех случаях, когда логика системы не позволяет раздельное существование каждого из экземпляров.

 

Ассоциативная связь

проводник

 

Файловая система

 

 

 

 

 

 

Ассоциация не накладывает ограничений на существование экземпляров объектов. Вместе с тем при реализации механизм порождения

экземпляра может иметь достаточно сложный вид. Тем не менее такие детали реализации могут выходить за рамки диаграммы классов.

 

Диаграмма состояний

Начальная

конечная точка

точка

 

состояние

Условие перехода ( )

 

Диаграммы состояния отображают поведение системы как поведение автомата с устойчивыми состояниями. Диаграммами состояний чаще всего описываются контроллеры в моделях MVC.

Диаграммы последовательностей.

Этот вид диаграмм предназначен для описания временной последовательности существования объектов.

Экземпляр

 

объекта

-причинноследственные связи

 

 

 

Итератор

activationbar

delection

временная ось

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

Если это так, то должны быть предприняты меры по уменьшению степени параллелизма. Если это сделать невозможно, система нереализуема.

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

Диаграммы действий.UML

(похожи на блок-схемы) ● – start(начальная точка)

Вершины действия

Вершины параллельного ветвления и слияния

- end

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]