Slide 1

Slide 1 text

29 марта 2022 [email protected] Федор Витальевич Бушмелев Введение в ООП (часть 3)

Slide 2

Slide 2 text

2/31 2/31 Модификаторы доступа

Slide 3

Slide 3 text

3/31 3/31 Модификаторы доступа при наследовании

Slide 4

Slide 4 text

4/31 4/31 Наследование Базовый класс Дочерние/производные классы Наследование – это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Животные Кошки Собаки

Slide 5

Slide 5 text

5/31 5/31 С чем будем работать?

Slide 6

Slide 6 text

6/31 6/31 Создаем базовый класс 1/2 private поля дочерних классов становятся protected в базовом классе private protected

Slide 7

Slide 7 text

7/31 7/31 Создаем базовый класс 2/2

Slide 8

Slide 8 text

8/31 8/31 Иерархия наследования 1/2 class Cat class Dog class Animal class Animal

Slide 9

Slide 9 text

9/31 9/31 Иерархия наследования 2/2

Slide 10

Slide 10 text

10/31 10/31 Нужен ли по умолчанию?

Slide 11

Slide 11 text

11/31 11/31 Конструктор базового класса

Slide 12

Slide 12 text

12/31 12/31 Наследование методов

Slide 13

Slide 13 text

13/31 13/31 Цепочка наследования 1/2 ДО ДО ПОСЛЕ ПОСЛЕ

Slide 14

Slide 14 text

14/31 14/31 Цепочка наследования 2/2 class Cat class Dog class Animal class Animal class Life class Life

Slide 15

Slide 15 text

15/31 15/31 Переопределение методов Метод базового класса Переопредление метода в дочернем классе

Slide 16

Slide 16 text

16/31 16/31 Вызов метода базового класса

Slide 17

Slide 17 text

17/31 17/31 Загадка 1 Что выведет программа?

Slide 18

Slide 18 text

18/31 18/31 Виртуальный метод 1/2

Slide 19

Slide 19 text

19/31 19/31 Виртуальный метод 2/2 Перегружая виртуальные методы рекомендуется добавлять ключевое слово override

Slide 20

Slide 20 text

20/31 20/31 Виртуальный метод: резюме Виртуальный метод в языке С++ — это особый тип функции, которая, при её вызове, выполняет «наиболее» дочерний метод, который существует между родительским и дочерними классами. • Если функция отмечена как виртуальная, то все соответствующие переопределения тоже считаются виртуальными. • Сигнатура виртуального метода дочернего класса должна полностью соответствовать сигнатуре виртуального метода родительского класса, иначе это просто другой метод. • Никогда не вызывайте виртуальные функции в теле конструкторов или деструкторов. • Обработка и выполнение вызова виртуального метода занимает больше времени, чем обработка и выполнение вызова обычного метода.

Slide 21

Slide 21 text

21/31 21/31 Абстракция Абстрактный класс - это класс, который содержат или наследуют без переопределения хотя бы одну чистую виртуальную функцию.

Slide 22

Slide 22 text

22/31 22/31 Дружественные классы и функции

Slide 23

Slide 23 text

23/31 23/31 Множественное наследование 1/2

Slide 24

Slide 24 text

24/31 24/31 Множественное наследование 2/2

Slide 25

Slide 25 text

25/31 25/31 Загадка 2 Что выведет следующий код?

Slide 26

Slide 26 text

26/31 26/31 Пример решения

Slide 27

Slide 27 text

27/31 27/31 Ветвление наследования 1/4 class Dog class Animal class Life class Home class Life

Slide 28

Slide 28 text

28/31 28/31 Ветвление наследования 2/4

Slide 29

Slide 29 text

29/31 29/31 Ветвление наследования 3/4 Опять проблемы…

Slide 30

Slide 30 text

30/31 30/31 Ветвление наследования 4/4

Slide 31

Slide 31 text

29 марта 2022 [email protected] Федор Витальевич Бушмелев Введение в ООП (часть 3)