Объектно-ориентированное программирование. Базовый уровень. Язык С++ — SynergyCom

Объектно-ориентированное программирование. Базовый уровень. Язык С++

Код курса: 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.

  • Статические члены класса. Производящие функции. Защищенный конструктор.
  • Реализация контроля за всеми созданными объектами посредством статических данных и статических методов базового класса.

Курс не запланирован.

Вы можете подать заявку на открытие курса:

Каталог услуг

Поиск по сайту