

Лекция 1. Основы ООП в С++
Presentation
•
Computers
•
University
•
Practice Problem
•
Easy
Ящун Викторовна
Used 8+ times
FREE Resource
30 Slides • 13 Questions
1
ЛЕКЦИЯ 1.
ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ В С++
2
Poll
Вы готовы к активной учебе в весеннем семестре?
Да, конечно
Нет, каникулы пролетели быстро
50/50
3
Poll
Оцените свой уровень знания зыка С++
Легко пишу красивый и профессиональный код
Уверенно составляю программы в рамках учебных заданий
С трудом программирую, использую чат GPT
Не могу написать даже простую программу
4
5
ООП
Объектно-ориентированное программирование (ООП) – парадигма программирования, основанная на концепции «объектов», которые являются экземплярами классов
Объектно-ориентированное программирование (ООП) – новая парадигма программирования, то есть, новый, иной способ мышления при написании программ
ООП позволяет структурировать программу вокруг данных (объектов) и методов (функций), которые могут выполнять операции над этими данными
6
ИМПЕРАТИВНОЕ ПРОГРАММИРОВАНИЕ
«Императив» - приказ, команда
Большинство языков программирования (ЯП) позволяют составлять программы в виде последовательности команд (набора определенных операторов). Это императивное программирование
7
ОБЪЕКТЫ И КЛАССЫ
Часто, решаемую задачу, можно разложить на относительно независимые блоки (подзадачи), которые, взаимодействуя между собой, достигают исходной поставленной цели
Объекты, согласованно взаимодействуя между собой, образуют единое устройство
Объект располагается в независимой области памяти и содержит определенные данные
8
Multiple Choice
Какой подход используется в императивном программировании?
Разложение задач на классы
Формирование объектов на основе классов
Составление программ в виде последовательности команд
Создание методов для взаимодействия объектов
9
Multiple Choice
Что такое объектно-ориентированное программирование (ООП)?
Метод написания программ на языке С++
Набор команд для выполнения
Парадигма программирования, основанная на объектами
Язык программирования
10
ОБЪЕКТЫ И КЛАССЫ
Свойства объектов программист придумывает сам
Может формироваться множество объектов, отличающихся между собой количественными характеристиками, образуя единый класс таких объектов
В парадигме ООП именно класс отвечает за порождение объектов определенного вида
11
КЛАСС
Класс - пользовательский тип, объединяющий в себе разнотипные данные, называемые полями или атрибутами, и функции, обрабатывающие эти данные
Класс в ООП выступает в роли схемы, чертежа, по которому конструируются объекты этого класса
Класс - абстрактный тип данных с открытым интерфейсом и скрытой внутренней реализацией
12
МЕТОДЫ
Метод класса - функция, которая определяет поведение, т.е. способ взаимодействия между экземпляром и другими сущностями, реакции на внешние воздействия экземпляров класса (переменных соответствующего типа)
С каждым объектом, помимо данных, могут быть связаны методы
Через методы происходит взаимодействие с объектами
13
МЕТОДЫ
Класс выступает независимой единицей программного кода, в котором реализован определенный фрагмент
Каждый объект класса имеет свой независимый набор данных и общий набор методов, через которые происходит взаимодействие с этим объектом
14
МЕТОДЫ КЛАССОВ
Классы – это не просто хранилища данных, а полноценные фрагменты программы, работающие независимо друг от друга и остальной части программы
Работа алгоритма класса выполняется на уровне объектов, так как именно объекты содержат конкретные данные, которые можно обрабатывать
15
Multiple Choice
Что такое класс в объектно-ориентированном программировании?
Набор команд
Тип данных, объединяющий данные и методы
Функция для обработки данных
Экземпляр объекта
16
ПРИНЦИПЫ ООП
Программный код, написанный по принципам ООП, представляет собой набор абстрактных сущностей, обладающих состоянием и поведением, а также и способов их взаимодействия
17
ИНКАПСУЛЯЦИЯ
Определяя класс, программист разрешает взаимодействие с ним через публичные разрешенные методы и реже напрямую через данные
18
НАСЛЕДОВАНИЕ
Новые классы можно определять на основе других, ранее сформированных классов
19
НАСЛЕДОВАНИЕ
Всю логику взаимодействия между объектами можно описать на общем уровне – уровне базовых классов, так как в них объявлены все необходимые для этого переменные и методы
Конкретная реализация будет определяться дочерними классами
Методы в базовых классах можно объявлять так, чтобы реализации для них подставлялись из соответствующих дочерних классов
В концепции ООП это называется полиморфизмом
20
ПОЛИМОРФИЗМ
21
ПОЛИМОРФИЗМ
22
Multiple Choice
Какой из перечисленных принципов не относится к ООП?
Абстракция
Инкапсуляция
Компиляция
Полиморфизм
23
ОСНОВА ООП: КЛАССЫ И ОБЪЕКТЫ
24
1-й СПОСОБ: ОБЪЯВЛЕНИЕ СТРУКТУР
Структуры – это исторически первый вариант объявления типов объектов
25
2-й СПОСОБ: ОБЪЯВЛЕНИЕ КЛАССОВ
Имя класса является новым типом данных
Список членов класса включает описание данных и функций
После описания класса можно создавать объекты этого класса
26
ОБЪЕКТЫ - ЭКЗЕМПЛЯРЫ КЛАССОВ
Переменные класса - экземпляры или объекты
В памяти будет отведено место под поля данные, методы не дублируются, они описаны один раз в классе
27
СТУКТУРЫ И КЛАССЫ
Имя класса является новым типом данных
Имя класса является новым типом данных
28
Multiple Choice
Какое отличие между структурами и классами в C++?
Структуры могут содержать методы
Все поля структуры публичные по умолчанию, а поля класса приватные
Классы не могут содержать поля
Структуры используют динамическую память
29
ОСОБЕННОСТИ КЛАССОВ
Имя класса является новым типом данных
Имя класса является новым типом данных
Память под x и y нигде не выделяется, т.к. это поля будущих объектов, а класс – лишь тип данных
Методы set_coords() и get_coords() - функции, заданные в области видимости этого класса
Имя класса является новым типом данных
30
ОСОБЕННОСТИ РАБОТЫ С ОБЪЕКТАМИ
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
У каждого объекта будут свои независимые переменные x и y
А методы у всех объектов общие и располагаются в классе Point2D
Метод set_coords не может быть вызван без привязки к какому-либо объекту класса Point2D, так как компилятор не может определить значение неявного указателя this
31
НЕЯВНЫЙ УКАЗАТЕЛЬ this
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Функции-члену класса передается скрытый указатель this на объект, вызывающий функцию
Указатель this – указатель на объект класса, который в момент вызова метода получает адрес объекта, для которого метод вызывается
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
32
РАБОТА С ДИНАМИЧЕСКОЙ ПАМЯТЬ
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
33
Multiple Choice
Что такое неявный указатель this в методах класса?
Указатель на статическую переменную
Указатель на объект, вызывающий метод
Указатель на метод класса
Указатель на локальную переменную
34
Multiple Choice
Как обращаются к методам класса, если объекты создаются с помощью оператора new?
Через точку (.)
Через стрелку (->)
Нельзя обращаться, метод будет недоступен
Через символ &
35
МОДИФИКАТОРЫ ДОСТУПА
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Инкапсуляция - объединение данных, описывающих одну сущность, и методов для обработки этих данных
Переменные и функции, объявленные в разделе класса по умолчанию или явно как private, имеют область видимости в пределах класса
Члены класса можно сделать видимыми вне класса, если объявить в разделе public:
Переменные объявляются в разделе private, а функции в разделе public
36
СЕКЦИЯ private
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Модификаторы доступа – это ключевые слова, после указания которых данные и методы становятся доступны или закрыты для внешнего, т.е. за пределами класса, использования
37
Multiple Choice
Какой модификатор доступа по умолчанию используется для полей классов в C++?
public
private
protected
static
38
private и public
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Модификатор доступа private запрещает доступ к данным класса за его пределами, public – открывает
Принято поля-данные задавать с модификатором private, иначе происходит нарушение принципа инкапсуляции
Методы задают с модификатором public, иначе будет отсутствовать возможность вызова метода за пределами класса
39
Multiple Choice
Как можно получить доступ к приватным полям класса?
Непосредственно через имя переменной
Через публичные методы класса
Только через глобальные функции
Это невозможно
40
private и public
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
41
private и public
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
Имя класса является новым типом данных
42
Multiple Choice
Почему неправильный доступ к приватным данным класса может вызвать проблемы?
Программа всегда будет работать корректно
Данные могут быть изменены вне контроля класса
Программа будет работать быстрее
Приватные данные не влияют на работу класса
43
Poll
На сколько процентов вы чувствуете, что освоили учебный материал?
90-100%
70-89%
50-69%
Менее 50%
ЛЕКЦИЯ 1.
ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ В С++
Show answer
Auto Play
Slide 1 / 43
SLIDE
Similar Resources on Wayground
38 questions
Поддерживающая встреча ГЛ
Lesson
•
Professional Development
32 questions
Контракт
Lesson
•
KG
41 questions
ТКМ (вкл. сварку) (итоговый)
Lesson
•
University
29 questions
Тема 3: Визуализация данных в ЭТ
Lesson
•
University
39 questions
Метод Ньютона и квази-Ньютоновские методы
Lesson
•
University
39 questions
ПРофориентация
Lesson
•
University
39 questions
ТПО ИТ в здравоохранении
Lesson
•
Professional Development
40 questions
МККЛ3-Взаимодействие.культур
Lesson
•
University - Professi...
Popular Resources on Wayground
8 questions
Spartan Way - Classroom Responsible
Quiz
•
9th - 12th Grade
15 questions
Fractions on a Number Line
Quiz
•
3rd Grade
14 questions
Boundaries & Healthy Relationships
Lesson
•
6th - 8th Grade
20 questions
Equivalent Fractions
Quiz
•
3rd Grade
3 questions
Integrity and Your Health
Lesson
•
6th - 8th Grade
25 questions
Multiplication Facts
Quiz
•
5th Grade
9 questions
FOREST Perception
Lesson
•
KG
20 questions
Main Idea and Details
Quiz
•
5th Grade
Discover more resources for Computers
20 questions
Disney Trivia
Quiz
•
University
7 questions
Fragments, Run-ons, and Complete Sentences
Interactive video
•
4th Grade - University
7 questions
Renewable and Nonrenewable Resources
Interactive video
•
4th Grade - University
10 questions
DNA Structure and Replication: Crash Course Biology
Interactive video
•
11th Grade - University
7 questions
Force and Motion
Interactive video
•
4th Grade - University
20 questions
Implicit vs. Explicit
Quiz
•
6th Grade - University
14 questions
Ch.3_TEACHER-led
Quiz
•
University
7 questions
Comparing Fractions
Interactive video
•
1st Grade - University