Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Оно.doc
Скачиваний:
8
Добавлен:
31.07.2019
Размер:
336.9 Кб
Скачать
  1. Сущность, назначение и принципы объектно-ориентированного программирования.

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

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

Основа ООП - понятие объекта (object) формальное определение типа, содержащего данные и действия над ними.

Назначение ООП - это повышение производительности труда разработчиков программного обеспечения при создании больших программ, используя:

    • улучшение структуры программы за счет локализации свойств и поведения объектов в одном месте (при описании объектов), что упрощает отладку программы, сокращает затраты времени на поиск ошибок и др.,

    • возможности создания библиотеки программных объектов,

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

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

К базовым принципам объектно-ориентированного стиля программирования относятся:

  1. пакетирование или инкапсуляция ;

  2. наследование ;

  3. полиморфизм ;

  4. передача сообщений.

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

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

Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

  1. Правила определения программных объектов: обобщенная структура определения объекта, constructor, destructor, методы объекта, структура программы, динамические объекты, варианты определения и использования объектов в программе.

В языке Object Pascal для определения объектов используются ключевые (зарезервированные) слова Object, Constructor, Destructor, Private, Public, Virtual.

Type                               {раздел типов}

 <имя типа объекта> = object

 <имя поля>{,<имя поля>} : <тип поля>; {поля одного типа для хранения данных  об объекте}

     . . . . . . . . . .   {поля других типов}

 Procedure <имя процедуры>[(<список параметров>)]; {заголовки процедур }

     . . . . . . . . . . . . . . . . . . . . .

 Function <имя функции>[(<список параметров>)]:<тип функции>;    {заголовки функций}

     . . . . . . . . . . . . . . . . . . .

end;

  • Constructor предназначен для создания конкретного экземпляра объекта по заданному типу (шаблону) в памяти ЭВМ.

  • Зарезервированное слово constructor предназначено для определения специального метода, инициализирующего объект, содержащий виртуальные методы:

Constructor Init (Param_1, Param_2, … : type);

  • Ключевое слово constructor в данном контексте является синонимом слова procedure; оно предписывает компилятору создать особый код пролога (часть загрузочного exe-файла), с помощью которого настраивается так называемая таблица виртуальных методов.

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

  • Конструктор может использоваться для инициализации полей данных объекта.

Destructor и Procedure – синонимы.

Destructor - процедура, удаляющая из оперативной памяти экземпляр объекта

(освобождение выделенной для объекта динамической памяти).

Каждому динамическому методу присваивается уникальное число-идентификатор, после чего строится таблица динамических методов (Dynamic Method Table), в которую заносится данное число, а также адрес метода. Еще одно отличие динамических методов от виртуальных заключается в том, что таблицы динамических методов содержат методы только одного компонента или класса (не включая его предков). Поэтому существенно экономится память, но замедляется время работы/

Для создания и инициализации динамических объектов можно использовать процедуру New с двумя параметрами: именем ссылочной переменной и именем процедуры-конструктора, например,New(P1, Init);

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

Методы: Статические методы после загрузки программы находятся в оперативной памяти в течение всего периода работы программы.

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

Директива Public отменяет действие директивы Private; все элементы объекта, следующие за Public, доступны любой программной единице.

  1. Виртуальные методы: назначение, модель, абстрактные объекты, таблицы виртуальных методов.

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

Виртуальные

реализующий код присоединяется к вызову (оператору вызова) не в процессе компиляции, а в процессе выполнения - позднее связывание

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

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

Абстрактные классы реализуют на практике один из принципов ООП - полиморфизм. Абстрактный класс может содержать (и не содержать[1]) абстрактные методы и свойства. Абстрактные классы представляют собой наиболее общие абстракции, то есть имеющие наибольший объем и наименьшее содержание.