Тема №12 . Методы проектирования программ. Объектно-ориентированное програмированние (ООП): понятие класса: инкапсуляция, наследование, полуморфизм, поля и методы класса, обращение к полям, вызов методов класса. Массивы классов.


Классификация методов программирования

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

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

  • степень автоматизации проектных работ;

  • принятая методология процесса разработки.

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

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

2.Методы автоматизированного проектирования (CASE - технология и ее элементы). Эти методы возникли с необходимостью уменьшить затраты на проектные работы, сократить сроки их выполнения, создать типовые "заготовки" алгоритмов и программ, многократно тиражируемых для различных разработок.

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

- структурное проектирование прикладных программ (ПП);

- информационное моделирование предметной области и связанных с ней приложений;

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

Рассмотрим эти подходы подробнее.

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

Типичными методами структурного проектирования являются:

  • нисходящее проектирование, кодирование и тестирование программ;

  • модульное программирование;

  • структурное программирование и др.

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

В основе информационного моделирования предметной области находится положение об определяющей роли данных при проектировании алгоритмов и программ. Подход появился в условиях развития программных средств организации хранения и обработки данных - СУБД.

Один из основоположников информационной инженерии - Дж.Мартин - выделяет следующие составляющие данного подхода:

- информационный анализ предметной области (бизнес-области);

- информационное моделирование - построение комплекса взаимосвязанных моделей данных;

-системное проектирование функций обработки данных;

-детальное конструирование процедур обработки данных.

Объектно-ориентированный подход основан на:

-выделении классов объектов;

-установлении характерных свойств объектов и методов их обработки;

-создании иерархии классов, наследовании свойств объектов и методов их обработки.

Каждый объект объединяет как данные, так и программы обработки этих данных и относится к определенному классу. Объектный подход при разработке алгоритма и программы предполагает:

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

-объектно-ориентированное проектирование.

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

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



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

Класс является моделью реального объекта (как и запись). Основные свойства классов:

  1. Инкапсуляция (объединение данных и методов с ними работающих). Инкапсуляция обеспечивает скрытие информации (принцип скрытия информации). В общем случае доступ к полям закрыт.

  2. Наследование (любой класс может быть порождён отт другого класса путём добавления своих полей и методов). Порождённый класс — потомок при этом наследует все поля и методы предка. Есть возможность использования готовых разработанных классов для решения задачи, используя потомка со своими новыми полями и методами. Принцип наследования обестечивает итерационный процесс разработки классов. Все классы Delphi наследуются от баз класса Tobject, в котором определены конструктор и деструктор. Методы класса для создания и разрушения объекта Tobject.

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

  4. Абстрагирование (Public, Private).

Описание типа класс.

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

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

Принципиальным отличием объекта от статической переменной является наличие поля с именем Self, в котором хранится адрес самого себя (4б). Это нужно для того, чтобы методы знали, где записаны значения полей конкретного объекта. Объектов много, а метод один.

Метод класса благодаря параметру Self напрямую работает с полями (глобальны для них). Аналогично записи обращение осуществляется через точечную натацию.

Type <имя класса>=class [<имя класса родителя>]

<поля>;

<методы>;

end;

<описание методов>::=procedure <имя класса>.<имя проц.> [<список форм. пар-ров>]

<тело процедуры>;

function <имя класса>.<имя функции> [<список форм. Пар-ров>]:<тип>;

<тело функции>;

Var <имя экземпляра класса>:<тип класса>;

<создание экземпляра класса>::=<имя пер.>:=<имя класса>.Create; {Метод класса Tobject}

<доступ к полям>::=<имя пер>.<имя поля>;

<доступ к методам>::=<имя пер>.<имя метода>[(список форм.пар.)];



Память под экземпляр переменной выделяется по следующему шаблону

адрес адрес

Таблица методов

Экз.пер.

Self

поля

Адрес

Адреса точек ввода

методов




параметр адрес

Экз.пер.

Self

поля

Адрес



В отличие от процедур и функций методу при вызове передаётся адрес экз. объекта его вызывавшго(Self);


Массив записей можно рассматривать как таблицу, у которой поля записей есть название полей столбцов, а тип полей записи — это тип столбцов.


Случайные файлы

Файл
65736.doc
referat_proktit.doc
29005-1.rtf
79298.rtf
26010-1.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.