Формальные и фактические параметры



Лекция 9

 

Объектно-ориентированное программирование

Понятие объекта

В середине 80-х годов в программировании возникло новое направление, основанное на понятии объекта. Реальные объекты окружающего мира обладают тремя базовыми характеристиками: они имеют набор свойств, способны разными методами изменять эти свойства и реагировать на события, возникающие как в окружающем мире, так и внутри самого объекта. Именно в таком виде в языках программирования и реализовано понятие объекта, как совокупности свойств (структур данных, характерных для этого объекта), методов их обработки (подпрограмм изменения свойств) и событий, на которые данный объект может реагировать и которые приводят, как правило, к изменению свойств объекта.

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

Класс

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

Описание нового класса

В Паскале для описания класса используется ключевое слово class.

class TMyClass // Начало описания состава класса

Iteml: integer;// Переменная №1 в составе класса

Item2: string; // Переменная №2 в составе класса

function GetSum(n: integer): integer; // Функция

procedure Initialize; // Процедура

end; // Обязательное окончание класса

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

procedure TMyClass.Initialize;

begin

Iteml := 1;

Item2 := "";

end;

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

var Cl, C2: TMyClass; // Описание конкретных объектов

//(экземпляров) класса

Доступ к свойствам объектов и к их методам осуществляется так же, как к полям записей, через точку:

Cl.Iteml := 5; // Доступ к переменной класса

С2.Initialize; // Запуск процедуры – члена класса

х := Cl.GetSum(21); // Запуск функции– члена класса

Объединение данных с методами в одном типе (классе) называется инкапсуляцией.

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

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

Полиморфизм

В большинстве случаев методы базового класса у классов-наследников приходится переопределять — объект класса «кошка» выполняет метод «идти» совсем не так, как объект класса «амеба». Все переопределяемые методы по написанию (названию) будут совпадать с методами базового объекта, однако компилятор по типу объекта (его классу) распознает, какой конкретно метод надо использовать, и не вызовет для объекта класса «кошка» метод «идти» класса «животное». Такое свойство объектов переопределять методы наследуемого класса называется полиморфизмом.

Визуальное программирование

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

Этапы разработки программ

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

Период разработки ПО

Рассмотрим классический период разработки ПО.

1. Формируются и анализируются требования к проекту. Этот этап самый важный, так как неправильное формулирование требований приводит к выполнению ненужной работы, а недооценка сложности вызывает перерасход средств и времени. Сегодня около 60 % крупных проектов завершаются неудачей именно из-за ошибок на стадии подготовки требований.

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

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

Примерный объем работ второго этапа до 10 % от общего.

3.  На основе формальной модели составляется подробное техническое задание для программистов, спецификации отдельных модулей, таблицы баз данных, другая сопроводительная документация. Готовится подробный календарный план работ, где указываются все сроки, конкретные исполнители и выполняемые объемы работ (понедельно, помесячно).

Примерный объем работ третьего этапа до 10 % от общего.

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

В процессе разработки необходимо:

• непрерывно поддерживать обратную связь с заказчиком, чтобы следить за правильностью реализации требований;

• непрерывно контролировать ход работ в соответствии с планом и при отклонениях от него принимать экстренные меры.

Примерный объем этих работ до 10 % от общего объема проекта.

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

Примерный объем этих работ до 10 % от общего объема проекта.

6. После того как заказчик удовлетворен качеством продукта, начинается его внедрение — подготовка к окончательному запуску в эксплуатацию. Этот этап самый трудоемкий и «нудный» и занимает порой до 90 % времени всего проекта. Для систем автоматизации больших предприятий он растягивается на годы.

7. После того как новая система готова к работе, сотрудников организации заказчика нужно обучить работе с этой системой. Примерный объем трудозатрат на обучение — 5 % от общего объема проекта.

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

Реально объем непосредственного программирования и отладки (тестирования) в цикле разработки обычно составляет 10-20 % от общего объема работ.


Дата добавления: 2019-02-22; просмотров: 228; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!