Search Header Logo
Лекция 1. Основы ООП в С++

Лекция 1. Основы ООП в С++

Assessment

Presentation

•

Computers

•

University

•

Practice Problem

•

Easy

Created by

Ящун Викторовна

Used 8+ times

FREE Resource

30 Slides • 13 Questions

1

ЛЕКЦИЯ 1.
ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ В С++

2

Poll

Вы готовы к активной учебе в весеннем семестре?

Да, конечно

Нет, каникулы пролетели быстро

50/50

3

Poll

Оцените свой уровень знания зыка С++

Легко пишу красивый и профессиональный код

Уверенно составляю программы в рамках учебных заданий

С трудом программирую, использую чат GPT

Не могу написать даже простую программу

4

media

5

ООП

Объектно-ориентированное программирование (ООП) – парадигма программирования, основанная на концепции «объектов», которые являются экземплярами классов

Объектно-ориентированное программирование (ООП) – новая парадигма программирования, то есть, новый, иной способ мышления при написании программ

ООП позволяет структурировать программу вокруг данных (объектов) и методов (функций), которые могут выполнять операции над этими данными

6

ИМПЕРАТИВНОЕ ПРОГРАММИРОВАНИЕ

​«Императив» - приказ, команда

media

Большинство языков программирования (ЯП) позволяют составлять программы в виде последовательности команд (набора определенных операторов). Это императивное программирование

7

ОБЪЕКТЫ И КЛАССЫ
media
media

​Часто, решаемую задачу, можно разложить на относительно независимые блоки (подзадачи), которые, взаимодействуя между собой, достигают исходной поставленной цели

​Объекты, согласованно взаимодействуя между собой, образуют единое устройство
Объект располагается в независимой области памяти и содержит определенные данные

8

Multiple Choice

Какой подход используется в императивном программировании?

1

Разложение задач на классы

2

Формирование объектов на основе классов

3

Составление программ в виде последовательности команд

4

Создание методов для взаимодействия объектов

9

Multiple Choice

Что такое объектно-ориентированное программирование (ООП)?

1

Метод написания программ на языке С++

2

Набор команд для выполнения

3

Парадигма программирования, основанная на объектами

4

Язык программирования

10

ОБЪЕКТЫ И КЛАССЫ
media

Свойства объектов программист придумывает сам
Может формироваться множество объектов, отличающихся между собой количественными характеристиками, образуя единый класс таких объектов

​

В парадигме ООП именно класс отвечает за порождение объектов определенного вида

media
media

11

КЛАСС

​Класс - пользовательский тип, объединяющий в себе разнотипные данные, называемые полями или атрибутами, и функции, обрабатывающие эти данные

Класс в ООП выступает в роли схемы, чертежа, по которому конструируются объекты этого класса

​Класс - абстрактный тип данных с открытым интерфейсом и скрытой внутренней реализацией

12

МЕТОДЫ

​Метод класса - функция, которая определяет поведение, т.е. способ взаимодействия между экземпляром и другими сущностями, реакции на внешние воздействия экземпляров класса (переменных соответствующего типа)

​С каждым объектом, помимо данных, могут быть связаны методы
Через методы происходит взаимодействие с объектами

13

МЕТОДЫ
media
media

​Класс выступает независимой единицей программного кода, в котором реализован определенный фрагмент

​Каждый объект класса имеет свой независимый набор данных и общий набор методов, через которые происходит взаимодействие с этим объектом

14

МЕТОДЫ КЛАССОВ
media

​Классы – это не просто хранилища данных, а полноценные фрагменты программы, работающие независимо друг от друга и остальной части программы
Работа алгоритма класса выполняется на уровне объектов, так как именно объекты содержат конкретные данные, которые можно обрабатывать

15

Multiple Choice

Что такое класс в объектно-ориентированном программировании?

1

Набор команд

2

Тип данных, объединяющий данные и методы

3

Функция для обработки данных

4

Экземпляр объекта

16

ПРИНЦИПЫ ООП
media

​Программный код, написанный по принципам ООП, представляет собой набор абстрактных сущностей, обладающих состоянием и поведением, а также и способов их взаимодействия

17

ИНКАПСУЛЯЦИЯ
media

Определяя класс, программист разрешает взаимодействие с ним через публичные разрешенные методы и реже напрямую через данные

18

НАСЛЕДОВАНИЕ
media

​Новые классы можно определять на основе других, ранее сформированных классов

19

НАСЛЕДОВАНИЕ

​Всю логику взаимодействия между объектами можно описать на общем уровне – уровне базовых классов, так как в них объявлены все необходимые для этого переменные и методы
Конкретная реализация будет определяться дочерними классами
Методы в базовых классах можно объявлять так, чтобы реализации для них подставлялись из соответствующих дочерних классов
В концепции ООП это называется полиморфизмом

20

ПОЛИМОРФИЗМ
media

21

ПОЛИМОРФИЗМ
media
media

22

Multiple Choice

Какой из перечисленных принципов не относится к ООП?

1

Абстракция

2

Инкапсуляция

3

Компиляция

4

Полиморфизм

23

ОСНОВА ООП: КЛАССЫ И ОБЪЕКТЫ
media

24

1-й СПОСОБ: ОБЪЯВЛЕНИЕ СТРУКТУР
media
media

​Структуры – это исторически первый вариант объявления типов объектов

25

2-й СПОСОБ: ОБЪЯВЛЕНИЕ КЛАССОВ
media
media
media

​Имя класса является новым типом данных

​Список членов класса включает описание данных и функций
После описания класса можно создавать объекты этого класса

26

ОБЪЕКТЫ - ЭКЗЕМПЛЯРЫ КЛАССОВ

​Переменные класса - экземпляры или объекты

media
media
media

В памяти будет отведено место под поля данные, методы не дублируются, они описаны один раз в классе

27

СТУКТУРЫ И КЛАССЫ

​Имя класса является новым типом данных

media

​Имя класса является новым типом данных

media

28

Multiple Choice

Какое отличие между структурами и классами в C++?

1

Структуры могут содержать методы

2

Все поля структуры публичные по умолчанию, а поля класса приватные

3

Классы не могут содержать поля

4

Структуры используют динамическую память

29

ОСОБЕННОСТИ КЛАССОВ

​Имя класса является новым типом данных

​Имя класса является новым типом данных

media

​Память под x и y нигде не выделяется, т.к. это поля будущих объектов, а класс – лишь тип данных

​Методы set_coords() и get_coords() - функции, заданные в области видимости этого класса

​Имя класса является новым типом данных

media

30

ОСОБЕННОСТИ РАБОТЫ С ОБЪЕКТАМИ

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

media

​Имя класса является новым типом данных

media

​У каждого объекта будут свои независимые переменные x и y

А методы у всех объектов общие и располагаются в классе Point2D

​Метод set_coords не может быть вызван без привязки к какому-либо объекту класса Point2D, так как компилятор не может определить значение неявного указателя this

31

НЕЯВНЫЙ УКАЗАТЕЛЬ this

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Функции-члену класса передается скрытый указатель this на объект, вызывающий функцию
Указатель this –  указатель на объект класса, который в момент вызова метода получает адрес объекта, для которого метод вызывается

​Имя класса является новым типом данных

​Имя класса является новым типом данных

media

​Имя класса является новым типом данных

media

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

media

​Имя класса является новым типом данных

media

32

РАБОТА С ДИНАМИЧЕСКОЙ ПАМЯТЬ

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

media

​Имя класса является новым типом данных

media

​Имя класса является новым типом данных

media

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

media

33

Multiple Choice

Что такое неявный указатель this в методах класса?

1

Указатель на статическую переменную

2

Указатель на объект, вызывающий метод

3

Указатель на метод класса

4

Указатель на локальную переменную

34

Multiple Choice

Как обращаются к методам класса, если объекты создаются с помощью оператора new?

1

Через точку (.)

2

Через стрелку (->)

3

Нельзя обращаться, метод будет недоступен

4

Через символ &

35

МОДИФИКАТОРЫ ДОСТУПА

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Инкапсуляция - объединение данных, описывающих одну сущность, и методов для обработки этих данных

​Переменные и функции, объявленные в разделе класса по умолчанию или явно как private, имеют область видимости в пределах класса

​Члены класса можно сделать видимыми вне класса, если объявить в разделе public:

​Переменные объявляются в разделе private, а функции в разделе public

36

СЕКЦИЯ private

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

media

​Имя класса является новым типом данных

media

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Модификаторы доступа – это ключевые слова, после указания которых данные и методы становятся доступны или закрыты для внешнего, т.е. за пределами класса, использования

37

Multiple Choice

Какой модификатор доступа по умолчанию используется для полей классов в C++?

1

public

2

private

3

protected

4

static

38

private и public

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

media

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

media

​Имя класса является новым типом данных

media

​Имя класса является новым типом данных

media

​Модификатор доступа private запрещает доступ к данным класса за его пределами, public – открывает

​Принято поля-данные задавать с модификатором private, иначе происходит нарушение принципа инкапсуляции
Методы задают с модификатором public, иначе будет отсутствовать возможность вызова метода за пределами класса

39

Multiple Choice

Как можно получить доступ к приватным полям класса?

1

Непосредственно через имя переменной

2

Через публичные методы класса

3

Только через глобальные функции

4

Это невозможно

40

private и public

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

media

​Имя класса является новым типом данных

media

​Имя класса является новым типом данных

media

41

private и public

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

​Имя класса является новым типом данных

media

42

Multiple Choice

Почему неправильный доступ к приватным данным класса может вызвать проблемы?

1

Программа всегда будет работать корректно

2

Данные могут быть изменены вне контроля класса

3

Программа будет работать быстрее

4

Приватные данные не влияют на работу класса

43

Poll

На сколько процентов вы чувствуете, что освоили учебный материал?

90-100%

70-89%

50-69%

Менее 50%

pattern-tertiary
ЛЕКЦИЯ 1.
ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ В С++

Show answer

Auto Play

Slide 1 / 43

SLIDE