Slide 1

Slide 1 text

15 марта 2022 [email protected] Анастасия Олеговна Хлобыстова Ассистент кафедры информатики Введение в ООП

Slide 2

Slide 2 text

2/26 2/26 План занятия 1. Общая парадигма ООП 2. Понятия классов и объектов в С++ 3. Сеттеры и геттеры, указатель this 4. Конструкторы и деструкторы классов, конструктор по умолчанию, их перегрузка 5. Конструктор копирования

Slide 3

Slide 3 text

3/26 3/26 Общая парадигма ООП Структурное программирование Объектно-ориентированное программирование — парадигма программирования, в основе которой лежит представление программы в виде иерархической структуры блоков — парадигма программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определённого класса, а классы образуют иерархию наследования

Slide 4

Slide 4 text

4/26 4/26 Объект и класс 1/2 Класс Объект class <имя класса> { [данные и методы] };

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

7/26 7/26 Пробуем?! обращение к полю класса

Slide 8

Slide 8 text

8/26 8/26 Добавим метод setMood() Инкапсуляция — это принцип ООП, заключающийся в контроле доступа к полям и методам объекта. → Инкапсуляция помогает защитить данные и саму программу от постороннего вмешательства. → Пользователь будет работать в программе через интерфейс, не обращая внимает на то, как программа работает.

Slide 9

Slide 9 text

9/26 9/26 Заголовочный файл и файл реализации Файл Cat.cpp Файл Cat.h

Slide 10

Slide 10 text

10/26 10/26 Cat.h и Cat.cpp

Slide 11

Slide 11 text

11/26 11/26 Геттеры и сеттеры 1/2 Геттеры и сеттеры — это методы доступа, которые помогают управлять доступом к различным переменным в коде. • get() — применяется для чтения переменной • set() — применяется для записи переменной Настроение Барсика оценивается в: -858993460

Slide 12

Slide 12 text

12/26 12/26 Геттеры и сеттеры 1/2

Slide 13

Slide 13 text

13/26 13/26 Указатель this 1/2 Файл cat.h Файл cat.cpp Указатель this хранит адрес определённого объекта класса и неявно указывает методам класса с данными какого объекта надо работать.

Slide 14

Slide 14 text

14/26 14/26 Указатель this 2/2 • this представляет собой неявно определенный указатель на сам объект • c помощью this метод класса определяет, с данными какого объекта ему предстоит работать • при вызове метода ему передается неявный аргумент, содержащий адрес объекта, для которого эта функция вызывается Использование this необходимо в функциях, которые непосредственно работают с указателем на объект: • this — указатель на объект (адрес объекта) • *this — разыменованый указатель (сам объект) … Некий класс Объект 1 this Объект 2 this Объект N this

Slide 15

Slide 15 text

15/26 15/26 Передача объекта класса в качестве аргумента 1/2 Файл cat.h Файл cat.cpp Barsik myCat

Slide 16

Slide 16 text

16/26 16/26 Передача объекта класса в качестве аргумента 2/2 Файл cat.h Файл cat.cpp & Barsik myCat

Slide 17

Slide 17 text

17/26 17/26 Объект класса в качестве значения функции Файл cat.h Файл cat.cpp

Slide 18

Slide 18 text

18/26 18/26 Конструктор и деструктор 1/2 Конструктор — это особый метод класса, который выполняется автоматически в момент создания объекта класса. Деструктор — это особый метод класса, который срабатывает во время уничтожения объектов класса (используется для освобождения динамической памяти, которую выделял конструктор для объекта).

Slide 19

Slide 19 text

19/26 19/26 Конструктор и деструктор 2/2

Slide 20

Slide 20 text

20/26 20/26 Базовые замечания • Конструктор и деструктор, мы всегда объявляем в разделе public. • При объявлении конструктора, тип данных возвращаемого значения не указывается, в том числе — void. • У деструктора также нет типа данных для возвращаемого значения, к тому же деструктору нельзя передавать никаких параметров. • Имя класса и конструктора должно быть идентично. • Имя деструктора идентично имени конструктора, но с приставкой ~ . • В классе допустимо создавать несколько конструкторов, если это необходимо. Их имена будут одинаковыми. Компилятор будет их различать по передаваемым параметрам (как при перегрузке функций). Если мы не передаем в конструктор параметры, он считается конструктором по умолчанию. • В классе может быть объявлен только один деструктор.

Slide 21

Slide 21 text

21/26 21/26 Делегирующий конструктор

Slide 22

Slide 22 text

22/26 22/26 Инициализация отдельных переменных <конструктор>([аргументы]) : переменная_1(значение), переменная_2(значение),…, переменная_n(значение){ //тело конструктора }

Slide 23

Slide 23 text

23/26 23/26 Конструктор копирования 1/2

Slide 24

Slide 24 text

24/26 24/26 Конструктор копирования 2/2

Slide 25

Slide 25 text

25/26 25/26 Реализация Cat mood - field hungry - field energy - field meow() - method Feed hungry -- mood ++ meow! Sleep hungry -- energy ++ Play energy -- mood ++ meow!

Slide 26

Slide 26 text

15 марта 2022 [email protected] Анастасия Олеговна Хлобыстова Ассистент кафедры информатики Введение в ООП