Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП текстовая версия.docx
Скачиваний:
2
Добавлен:
26.08.2019
Размер:
34.56 Кб
Скачать

1. Предпосылки появления и развития объектно-ориентированного подхода в программировании

Возьмем в качестве примера, компилятор Pascal фирмы Borland. В 1984 году появился компилятор версии 3.0, дистрибутив которого занимал 37 Кб вместе со всеми необходимыми библиотеками.

Последняя версия компилятора - Delphi 3.0, дистрибутив которого в простейшем варианте занимает 100 Мб. Т.е. размер программы вырос примерно в 2700 раз за 15 лет.

В этой связи можно обратить внимание на следующие две особенности:

во-первых, размер дистрибутива растет в геометрической прогрессии,

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

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

машинные коды,

ассемблеры,

языки высокого уровня - FORTRAN,

структурное программирование - С,

абстрактные типы, модули и пакеты в ADA,

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

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

2. Основные особенности ооп.

- При объектно-ориентированном подходе программа представляет собой описание объектов, их свойств (или атрибутов), совокупностей (или классов), отношений между ними, способов их взаимодействия и операций над объектами (или методов).

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

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

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

- Локализация кода и данных улучшает наглядность и удобство сопровождения программного обеспечения.

- Инкапсуляция информации защищает наиболее критичные данные от несанкционированного доступа.

3. Ключевые понятия ООП.

Класс – объединяет объекты с общими свойствами и поведением.

Инкапсуляция – это объектно-ориентированная характеристика модульности.

Наследование – это механизм, который даёт возможность создавать новый класс на основе уже существующего.

Полиморфизм – это такое состояние, когда нечто одно имеет много форм.

4. Понятие наследования и его назначение. Присваивание объектов.

Наследование – это механизм, который даёт возможность создавать новый класс на основе уже существующего.

С помощью механизма наследования новый класс наследует все свойства и поведения, а также методы и свойства интерфейса, представленные в ранее существовавшем классе.

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

5. Полиморфизм. Статические и виртуальные методы.

Полиморфизм – это такое состояние, когда нечто одно имеет много форм.

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

Методы для которых должно реализовываться позднее связывание называются виртуальные и описываются словом virtual.

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

Реализация механизма позднего связывания осуществляется с использованием специальной таблицы, таблицы виртуальных методов (ТВМ).

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

6. Конструкторы, и деструкторы. Их назначение и правила использования.

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

Объявление конструктора выглядит так же, как объявление процедуры, но предваряется ключевым словом constructor.

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

Деструктор автоматически запускается каждый раз, когда программа уничтожает объект.

7. Виртуальные и динамические методы. Их назначение и механизмы вызова.

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

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

Динамический метод - это дополнительный метод с поздним связыванием.

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

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