- •Объектно-ориентированное программирование как идеология программирования и как технология. Достоинства и недостатки.
- •Основные понятия объектно-ориентированного программирования — класс, объект, поле, метод, свойство.
- •Класс. Синтаксис объявления класса. Ссылка на самого себя.
- •Конструкторы и деструкторы. Функциональное назначение. Виды конструкторов.
- •Объекты и их жизненный цикл. Создание и уничтожение объектов.
- •Инкапсуляция. Определение. Функциональное назначение. Реализация. Примеры применения.
- •Инкапсуляция. Свойства. Функциональное назначение. Реализация. Создание индексатора. Примеры применения.
- •Наследование. Функциональное назначение. Реализация. Примеры применения.
- •Наследование. Конструктор по умолчанию. Назначение.
- •Методы. Определение. Функциональное назначение. Способы реализации. Примеры применения.
- •Полиморфизм. Функциональное назначение. Способы реализации. Примеры применения.
Инкапсуляция. Свойства. Функциональное назначение. Реализация. Создание индексатора. Примеры применения.
Свойство — способ доступа к внутреннему состоянию объекта, имитирующий переменную некоторого типа. Обращение к свойству объекта выглядит так же, как и обращение к структурному полю (в структурном программировании), но, в действительности, реализовано через вызов функции. При попытке задать значение данного свойства вызывается один метод, а при попытке получить значение данного свойства — другой.
Инкапсуляция. Скрытие членов класса. Функциональное назначение. Реализация. Примеры применения.
Наследование. Функциональное назначение. Реализация. Примеры применения.
Классы могут наследоваться друг от друга. Класс-наследник (потомок) — класс, включающий поля и методы своих родителей (некоторые или все). Класс-родитель (базовый / суперкласс) — класс, на основе которого создаются другие классы.
Класс-потомок получает все поля и методы класса-родителя, но может дополнять их собственными, либо переопределять уже имеющиеся.
Большинство языков программирования поддерживает только единичное наследование (класс может иметь только один класс-родитель), лишь в некоторых допускается множественное наследование — порождение класса от двух или более классов-родителей.
Множественное наследование создаёт целый ряд проблем, как логических, так и чисто реализационных, поэтому в полном объёме его поддержка не распространена. Вместо этого в 1990-е годы появилось и стало активно вводиться в объектно-ориентированные языки понятие интерфейса.
Интерфейс — это класс без полей и без реализации, включающий только заголовки методов. Если некий класс наследует (или, как говорят, реализует) интерфейс, он должен реализовать все входящие в него методы. Использование интерфейсов предоставляет относительно дешёвую альтернативу множественному наследованию.
Взаимодействие объектов в большинстве случаев обеспечивается вызовом ими методов друг друга.
Если у класса нет родителей, он по умолчанию наследуется классом “obj”. Если у класса без родителей не определен конструктор, он также наследует конструктор класса “obj”.
Наследование. Конструктор по умолчанию. Назначение.
Классы могут наследоваться друг от друга. Класс-наследник (потомок) — класс, включающий члены своих родителей (все поля). Класс-родитель — класс, который имеет один или больше дочерних классов (потомков / наследников).
Класс-потомок получает все поля и методы класса-родителя, но может дополнять их собственными, либо переопределять уже имеющиеся.
Существует конструктор по умолчанию и конструктор с параметрами.
Методы. Определение. Функциональное назначение. Способы реализации. Примеры применения.
Метод — процедура или функция, принадлежащая какому-либо классу (объекту).
Как и процедура в процедурном программировании, метод состоит из некоторого количества операторов для выполнения какого-то действия, имеет набор входных аргументов и возвращаемое значение.
Различают простые и статические методы (методы класса):
простые методы имеют доступ к данным объекта (конкретного экземпляра класса),
статические методы не имеют доступа к данным объекта и для их использования не нужно создавать экземпляры (данного класса).
Методы предоставляют интерфейс, при помощи которого осуществляется доступ к данным объекта некоторого класса, тем самым, обеспечивая инкапсуляцию данных.
В зависимости от того, какой уровень доступа предоставляет тот или иной метод, выделяют:
открытый (public) интерфейс — общий интерфейс для всех пользователей данного класса;
защищённый (protected) интерфейс — внутренний интерфейс для всех наследников данного класса;
закрытый (private) интерфейс — интерфейс, доступный только изнутри данного класса.
Такое разделение интерфейсов позволяет сохранять неизменным открытый интерфейс, но изменять внутреннюю реализацию.