Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

2/31 2/31 Повторение: вопрос 1 1. Дать определение ООП в целом. Чем оно отличается от структурного. 2. Дать определение «структура». 3. Что такое классы, объекты? 4. Что такое представитель и экземпляр классов? 5. Что такое свойства и поведение?

Slide 3

Slide 3 text

3/31 3/31 Повторение: класс и объект Класс Объект — это описание того, какими свойствами и поведением будет обладать объект — это экземпляр с собственным состоянием этих свойств

Slide 4

Slide 4 text

4/31 4/31 Повторение: представитель и экземпляр class Cat { int mood, hungry, energy; void Meow(); }; Cat Barsik; Cat* Murzik = new Cat; представитель класса экземпляр класса private — закрытые (по умолчанию) public — открытые

Slide 5

Slide 5 text

5/31 5/31 Повторение: вопрос 2 1. Дать определения понятиям: полимофизм, наследование и инкапсуляция. 2. Что такое геттеры, сеттеры? 3. Сколько может быть конструкторов и деструкторов? 4. Что будет если описать класс без них? 5. Могут ли они быть приватными? Где это может использоваться? 6. Что такое делегирующий конструктор?

Slide 6

Slide 6 text

6/31 6/31 Повторение: три кита ООП Инкапсуляция — это процесс скрытого хранения деталей реализации объекта. Пользователи обращаются к объекту через открытый интерфейс (геттеры, сеттеры). Наследование – образование новых классов на основе ранее созданных. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта за счет чего достигается (возможность) использование методов базового класса и дочерных. Функции доступа обычно бывают двух типов: • геттеры — это функции, которые возвращают значения закрытых переменных-членов класса; • сеттеры — это функции, которые позволяют присваивать значения закрытым переменным-членам класса. Правило: Геттеры должны использовать тип возврата по значению или по константной ссылке. Не используйте для геттеров тип возврата по неконстантной ссылке.

Slide 7

Slide 7 text

7/31 7/31 Конструктор копирования по умолчанию 1/2 Что выведет?

Slide 8

Slide 8 text

8/31 8/31 Конструктор копирования по умолчанию 2/2 Что выведет? А вот что!

Slide 9

Slide 9 text

9/31 9/31 Копирование конструктором И по итогу получим:

Slide 10

Slide 10 text

10/31 10/31 Конструктор копирования 1/2 Barsik myCat

Slide 11

Slide 11 text

11/31 11/31 Конструктор копирования по умолчанию 2/2 Barsik myCat

Slide 12

Slide 12 text

12/31 12/31 Статические переменные 1/5

Slide 13

Slide 13 text

13/31 13/31 Статические переменные 2/5 Статические переменные должны быть инициализированы!

Slide 14

Slide 14 text

14/31 14/31 Статические переменные 3/5 А что если…

Slide 15

Slide 15 text

15/31 15/31 Статические переменные 4/5 …если так…

Slide 16

Slide 16 text

16/31 16/31 Статические переменные 5/5 …если еще так…

Slide 17

Slide 17 text

17/31 17/31 Статические функции 1/4 Вывод:

Slide 18

Slide 18 text

18/31 18/31 Статические функции 2/4

Slide 19

Slide 19 text

19/31 19/31 Статические функции 3/4

Slide 20

Slide 20 text

20/31 20/31 Статические функции 4/4 Использование методов без создания объекта

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 Модификаторы доступа

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

25/31 25/31 Наследование 2/6

Slide 26

Slide 26 text

26/31 26/31 Наследование 3/6

Slide 27

Slide 27 text

27/31 27/31 Наследование 4/6 class “дочерний класс” : _модификатор_доступа_ “базовый класс”

Slide 28

Slide 28 text

28/31 28/31 Наследование 5/6

Slide 29

Slide 29 text

29/31 29/31 Наследование 6/6

Slide 30

Slide 30 text

30/31 30/31 Модификаторы доступа при наследовании Исходный модификатор доступа public private protected public- наследование public Недоступен protected private- наследование private Недоступен private protected- наследование protected Недоступен protected

Slide 31

Slide 31 text

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