Введение в объектно-ориентированное программирование. Занятие №1

Содержание

Слайд 2

Что такое ООП?

Вы наверняка слышали, что существуют два главных подхода к написанию

Что такое ООП? Вы наверняка слышали, что существуют два главных подхода к
программ:
Процедурное программирование
Объектно-ориентированное программирование (оно же ООП)
Оба подхода объединены общей целью - сделать процесс программирования максимально эффективным. Это значит, что благодаря им разработка программного обеспечения становится более простой для понимания, легко масштабируемой и содержащей минимальное количество ошибок.

Слайд 3

В чем суть процедурного подхода? 
Процедурное программирование – это написание функций и их

В чем суть процедурного подхода? Процедурное программирование – это написание функций и
последовательный вызов в некоторой главной(main) функции.

Слайд 4

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

Объектно-ориентированное программирование (ООП) — методология программирования, основанная на представлении программы в виде
объектов, каждый из которых является экземпляром определённого класса, а классы образуют иерархию наследования.

Слайд 5

Итак, чем же хорош подход ООП?
Программа разбивается на объекты. Каждый объект отвечает

Итак, чем же хорош подход ООП? Программа разбивается на объекты. Каждый объект
за собственные данные и их обработку. Как результат - код становится проще и читабельней.
Уменьшается дупликация кода. Нужен новый объект, содержимое которого на 90% повторяет уже существующий? Давайте создадим новый класс и унаследуем эти 90% функционала от родительского класса!
Упрощается и ускоряется процесс написания программ. Можно сначала создать высокоуровневую структуру классов и базовый функционал, а уже потом перейти к их подробной реализации.

Слайд 6

Класс — в объектно-ориентированном программировании, представляет собой шаблон для создания объектов, обеспечивающий начальные

Класс — в объектно-ориентированном программировании, представляет собой шаблон для создания объектов, обеспечивающий
значения состояний: инициализация полей-переменных и реализация поведения функций или методов.
Объект — некоторая сущность в цифровом пространстве, обладающая определённым состоянием и поведением, имеющая определенные свойства (атрибуты) и операции над ними (методы). Как правило, при рассмотрении объектов выделяется то, что объекты принадлежат одному или нескольким классам, которые определяют поведение (являются моделью) объекта. Термины «экземпляр класса» и «объект» взаимозаменяемы.

Слайд 7

Класс описывает множество объектов, имеющих общую структуру и обладающих одинаковым поведением. Класс

Класс описывает множество объектов, имеющих общую структуру и обладающих одинаковым поведением. Класс
- это шаблон кода, по которому создаются объекты. Т. е. сам по себе класс ничего не делает, но с его помощью можно создать объект и уже его использовать в работе.
Данные внутри класса делятся на свойства и методы. Свойства класса (они же поля или атрибуты) - это характеристики объекта класса.
Методы класса - это функции, с помощью которых можно оперировать данными класса.
Объект - это конкретный представитель класса.
Объект класса и экземпляр класса - это одно и то же.
Класс = Свойства + Методы

Слайд 9

Парадигмы ООП Абстракция

Абстракция - принцип ООП, согласно которому объект характеризуется свойствами, которые отличают его

Парадигмы ООП Абстракция Абстракция - принцип ООП, согласно которому объект характеризуется свойствами,
от всех остальных объектов и при этом четко определяют его концептуальные границы.
Т. е. абстракция позволяет:
Выделить главные и наиболее значимые свойства предмета.
Отбросить второстепенные характеристики.

Слайд 10

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

Инкапсуляция - принцип ООП, согласно которому сложность реализации программного компонента должна быть спрятана

Инкапсуляция Инкапсуляция - принцип ООП, согласно которому сложность реализации программного компонента должна
за его интерфейсом.
Отсутствует доступ к внутреннему устройству программного компонента.
Взаимодействие компонента с внешним миром осуществляется посредством интерфейса, который включает публичные методы и поля.

Слайд 11

Наследование

Наследование - способ создания нового класса на основе уже существующего, при котором класс-потомок

Наследование Наследование - способ создания нового класса на основе уже существующего, при
заимствует свойства и методы родительского класса и также добавляет собственные.
На что обратить внимание?
Класс-потомок = Свойства и методы родителя + Собственные свойства и методы.
Класс-потомок автоматически наследует от родительского класса все поля и методы.
Класс-потомок может дополняться новыми свойствами.
Класс-потомок может дополняться новыми методами, а также заменять(переопределять) унаследованные методы. Переопределить родительский метод - это как? Это значит, внутри класса потомка есть метод, который совпадает по названию с методом родительского класса, но функционал у него новый - соответствующий потребностям класса-потомка.

Слайд 12

Объект Дом:

Объект Частный Дом:

Объект Дом: Объект Частный Дом:

Слайд 14

Полиморфизм

Полиморфизм - это поддержка нескольких реализаций на основе общего интерфейса.
Другими словами, полиморфизм позволяет

Полиморфизм Полиморфизм - это поддержка нескольких реализаций на основе общего интерфейса. Другими
перегружать одноименные методы родительского класса в классах-потомках. Также для понимания работы этого принципа важным является понятие абстрактного метода:
Абстрактный метод (он же виртуальный метод) - это метод класса, реализация для которого отсутствует.
Как итог - за одинаковым названием могут скрываться методы с совершенно разным функционалом, который в каждом конкретном случае соответствует нуждам класса, к которому он относится.

Слайд 16

Классы и объекты в Python

Теперь давайте посмотрим, как реализуется ООП в рамках

Классы и объекты в Python Теперь давайте посмотрим, как реализуется ООП в
языка программирования Python. Синтаксис для создания класса выглядит следующим образом:
Синтаксис
class <название_класса>:
<тело_класса>
А вот так компактно смотрится пример объявления класса с минимально возможным функционалом:

Слайд 17

Чтобы создать объект класса, нужно воспользоваться следующим синтаксисом:
Синтаксис
<имя_объекта> = <имя_класса>()
 И в качестве

Чтобы создать объект класса, нужно воспользоваться следующим синтаксисом: Синтаксис = () И
примера создадим объект класса Car:

Слайд 18

Атрибуты класса в Python

Все атрибуты можно разделить
на 2 группы:
Встроенные(служебные) атрибуты
Пользовательские атрибуты

Атрибуты класса в Python Все атрибуты можно разделить на 2 группы: Встроенные(служебные) атрибуты Пользовательские атрибуты

Слайд 19

Встроенные атрибуты

Встроенные атрибуты

Слайд 20

Это важно
В теории ООП конструктор класса - это специальный блок инструкций, который вызывается при

Это важно В теории ООП конструктор класса - это специальный блок инструкций,
создании объекта. При работе с питоном может возникнуть мнение, что метод __init__(self) - это и есть конструктор, но это не совсем так. На самом деле, при создании объекта в Python вызывается метод __new__(cls, *args, **kwargs) и именно он является конструктором класса. Также обратите внимание, что __new__() - это метод класса, поэтому его первый параметр cls - ссылка на текущий класс. В свою очередь, метод __init__() является так называемым инициализатором класса. Именно этот метод первый принимает созданный конструктором объект. Как вы уже, наверное, не раз замечали, метод __init__() часто переопределяется внутри класса самим программистом. Это позволяет со всем удобством задавать параметры будущего объекта при его создании.

Слайд 21

Список атрибутов класса / объекта можно получить с помощью команды dir()

Как видим, в

Список атрибутов класса / объекта можно получить с помощью команды dir() Как
нем есть только встроенные атрибуты, которые наш класс по-умолчанию унаследовал от базового класса object. А теперь добавим ему функционала:

Слайд 22

Поля (свойства) класса
Поля(они же свойства или переменные) можно (так же условно)

Поля (свойства) класса Поля(они же свойства или переменные) можно (так же условно)
разделить на две группы:
Статические поля
Динамические поля

Слайд 23

Статические поля

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

Статические поля Это переменные, которые объявляются внутри тела класса и создаются тогда,
создается класс. Создали класса - создалась переменная:

Слайд 24

Динамические поля

Это переменные, которые создаются на уровне экземпляра класса. Нет экземпляра -

Динамические поля Это переменные, которые создаются на уровне экземпляра класса. Нет экземпляра
нет его переменных. Для создания динамического свойства необходимо обратиться к self внутри метода

Слайд 25

Что такое self в Python?
Служебное слово self - это ссылка на текущий экземпляр класса.

Что такое self в Python? Служебное слово self - это ссылка на
Как правило, эта ссылка передается в качестве первого параметра метода Python:
class Apple: ____# Создаем объект с общим количеством яблок 12 ____def __init__(self): ________self.whole_amount = 12 ____# Съедаем часть яблок для текущего объекта ____def eat(self, number): ________self.whole_amount -= number Стоит обратить внимание, что на самом деле слово self не является зарезервированным. Просто существует некоторое соглашение, по которому первый параметр метода именуется self и передает ссылку на текущий объект, для которого этот метода был вызван. Хотите назвать первый параметр метода по-другому - пожалуйста.

Слайд 26

Задание №1 Создайте класс Example. В нём пропишите 3 (метода) функции. Две переменные

Задание №1 Создайте класс Example. В нём пропишите 3 (метода) функции. Две
задайте статически, две динамически. Первая функция: создайте переменную и выведите её Вторая функция: верните сумму 2-ух глобальных переменных Третья функция: верните результат возведения первой динамической переменной во вторую динамическую переменную Создайте объект класса. Напечатайте обе функции Напечатайте переменную a

Слайд 27

Решение:

Решение:

Слайд 28

Задание №2

Калькулятор.
Создайте класс, где реализованы функции(методы) математических операций. А также функция, для

Задание №2 Калькулятор. Создайте класс, где реализованы функции(методы) математических операций. А также функция, для ввод данных.
ввод данных.

Слайд 29

Решение

Решение
Имя файла: Введение-в-объектно-ориентированное-программирование.-Занятие-№1.pptx
Количество просмотров: 32
Количество скачиваний: 0