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%

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

Show answer

Auto Play

Slide 1 / 43

SLIDE