Объектно-ориентированное программирование. Базовый уровень. Язык С++
Код курса: DEV-025
Продолжительность:
40 дней (5 часов)
Программа курса
ЛЕКЦИЯ 1.
- Концепция объектно-ориентированного программирования.
- Отличия процедурного и ООП. Концепция классов в С++.
- Понятие класса. Объявление класса. Данные-члены класса + функции-члены класса = инкапсуляция. Оператор sizeof и размер класса.
- Спецификаторы доступа. Создание экземпляра класса.
- Реализация методов класса. Доступ к public членам класса посредством объекта, селектор «.».Указатель this.
- Анатомия вызова нестатического метода класса.
- Ключевое слово сonst и методы класса.
- Методы, возвращающие константные значения. Константные методы класса. Ключевое слово mutable Константные аргументы.
- Конструктор класса. Понятие конструктора. Конструктор по умолчанию. Конструктор с параметрами. Перегрузка конструкторов. Конструктор с параметрами по умолчанию. Возможные конфликты при использовании параметров по умолчанию. Специфика записи при вызове конструктора с одним параметром. Конструкторы и модификатор explicit. Конструкторы базовых типов. Динамическое создание объектов и вызов конструктора.
- Деструктор.
- Специфика объявления деструктора как метода класса. Деструктор – метод класса. Конструктор + деструктор = функциональное замыкание.
- Создание и уничтожение объектов с разным способом хранения.
ЛЕКЦИЯ 2.
- Конструктор копирования.
- Создание нового объекта по существующему объекту. Передача объектов в качестве параметров функции. Возвращение объекта по значению. Move конструктор копирования (новый стандарт С++11).
- Проблемы, которые могут возникнуть при использовании конструктора копирования по умолчанию и способы их решения.
- Указатель на класс.
- Указатель на объект класса. Доступ к членам класса посредством указателя. Селектор «->».Указатель this.
- Массивы и классы. Массивы объектов класса. Массивы указателей на объекты класса.
- Поля битов. Специфика использования.
- Взаимоотношения между классами. Наследование.
- Виды наследования. Простое (single) наследование. Объявление производного класса. Спецификатор protected в базовом классе.
- Спецификаторы наследования. Порядок вызова конструкторов и деструкторов. Передача параметров базовому классу при конструировании.
- Специфика передачи параметров конструктору копирования базового класса.
ЛЕКЦИЯ 3.
- Открытое наследование. Правила объектно-ориентированного проектирования. Пример ошибочного построения иерархии классов.
- Полиморфизм. Раннее и позднее связывание. Виртуальные функции. Механизм вызова виртуальной функции. Виртуальные деструкторы. Чисто виртуальные функции и абстрактные классы. Наследование интерфейса и наследование реализации при открытом наследовании.
- FRIEND (привилегированные) функции и классы.
- Внешняя friend-функция. Friend-функция, являющаяся методом другого класса. Friend-класс.
ЛЕКЦИЯ 4.
- Перегрузка операторов. Перегрузка операторов для базовых и пользовательских типов. Правила перегрузки унарных и бинарных операторов. Порядок поиска компилятором функции. Формы перегрузки операторов. Перегрузка оператора с помощью метода класса. Перегрузка с помощью метода класса. Специфика перегрузки оператора присваивания. Move оператор присваивания (новый стандарт С++11). Оператор присваивания и нетривиальные классы. Оператор присваивания и перегрузка. Оператор[] с проверкой выхода за границы массива. Оператор ++ (—).Оператор () и функциональные объекты.
- Перегрузка с помощью глобальной friend-функции. Пример перегрузки оператора << (вывод) в библиотечный ostream.
- Внедряемые объекты.
- Конструирование и уничтожение встроенных объектов. Передача параметров конструктора встроенным объектам. Список инициализации.
- Специфика инициализации константных объектов и ссылок. Порядок инициализации членов класса. Пример «ассоциативного массива». Указатели на объекты в качестве членов данных класса. Предварительное неполное объявление класса (forward reference). Ссылки на указатели.
ЛЕКЦИЯ 5.
- Статические члены класса.
- Ключевое слово static. Статические данные. Статические функции: для доступа извне к private или protected static-данным класса, для «косвенного» создания объекта.
- Структуры и объединения языка C++.
- Ключевые слова struct и union. Отличия структур и классов.
Рекомендации по использованию Тип данных VARIANT. Анонимные объединения. - Множественное наследование.
- Создание объектов производных классов при множественном наследовании. Полиморфизм и множественное наследование. Проблемы, возникающие при множественном наследовании.
ПРАКТИКА 1.
- ООП. Объявление класса. Создание экземпляра класса. Вызов методов класса посредством объекта.
- Конструктор по умолчанию. Перегрузка конструкторов и методов класса.
- Конструктор копирования. Спецификаторы доступа. Инкапсуляция.
- Передача экземпляра класса в качестве параметра функции (по значению, по ссылке). Возвращение объекта класса по значению.
- Указатель на класс. Использование селектора «->».
- «Нетривиальные» классы. Конструктор + деструктор = функциональное замыкание. Конструктор копирования для нетривиальных классов.
- Массив объектов класса. Массив указателей на объекты класса.
- Индивидуальное домашнее задание по пройденному материалу N1
ПРАКТИКА 2.
- Простое наследование. Аргументы конструктора, передаваемые в базовый класс.
- Виртуальные функции.
- Виртуальные деструкторы.
- Оператор разрешения области видимости и наследование.
- Абстрактный базовый класс.
- Перегрузка операторов.
- Перегрузка операторов с помощью глобальных friend-функций.
- Перегрузка операторов с помощью методов класса.
- Индивидуальное домашнее задание по пройденному материалу N2
ПРАКТИКА 3.
- Внедренные объекты класса. Передача параметров при конструировании внедренных объектов.
- Реализация двухсвязного объектно-ориентированного списка.
- Индивидуальное домашнее задание по пройденному материалу N3
ПРАКТИКА 4.
- Статические члены класса. Производящие функции. Защищенный конструктор.
- Реализация контроля за всеми созданными объектами посредством статических данных и статических методов базового класса.
Расписание
Время проведения курса пока не определено, отправьте нам заявку, пожалуйста.
Возможно, мы предложим пройти курс в дистанционном режиме или организуем выездной курс, если у Вас группа.