88.76K
Categories: programmingprogramming informaticsinformatics

Introduction to Computer Science. Занятие 22. Принципы ООП. Класс, его методы и атрибуты. Инициализация объекта. Инкапсуляция

1.

Introduction to
Computer Science
ЗАНЯТИЕ 22

2.

Темы занятия
Принципы ООП
Класс, его методы и атрибуты
Инициализация объекта
Инкапсуляция
Наследование
Полиморфизм

3.

ООП
В объектно-ориентированном программировании
программа представляет собой процесс
взаимодействия некоторых вполне самостоятельных
единиц, по аналогии с реальным миром называемых
объектами.
Создание программы = описание соответствующих
объектов + реализация взаимодействия между ними.

4.

Принципы ООП
1. Абстракция
2. Инкапсуляция
3. Наследование
4. Полиморфизм

5.

Абстракция
Абстракция в ООП – это набор наиболее значимых (с
точки зрения программы) характеристик объекта.
Способ выделения подобных характеристик называется
абстрагированием.
Пример: у человека для целей программы выделили
две характеристики – Имя и Возраст.

6.

Инкапсуляция
Инкапсуляция – это логическое объединение в одном
программном типе, называемом класс, как данных, так
и подпрограмм для их обработки.
Данные класса хранятся в полях(атрибутах) класса,
подпрограммы для работы с полями называются
методами класса.

7.

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

8.

Наследование классов
Суть наследования: новый класс можно строить на
основе одного или нескольких существующих классов.
Терминология:
▪ Существующий класс: предок (parent), базовый класс,
суперкласс (super class).
▪ Новый класс: производный класс, класс-потомок (derived
class), подкласс (subclass).
Подкласс имеет все элементы своих предков и может
определять собственные атрибуты и методы.

9.

Полиморфизм
Полиморфизм - разное поведение одного и того же
метода(функции) при выполнении действий над
разными типами(в разных классах).
Пример: можно сложить два числа,
можно сложить две строки. Оператор один – типы
разные.

10.

Объявление класса – инструкция
class
Синтаксис:
class имя_класса([список_предков]):
тело_класса
Пример – класс Point, который (пока) ничего не делает:
class Point:
pass
*) круглые скобки после имени класса не обязательны,
если список предков отсутствует.

11.

Создание объекта
Объявив некий класс, можно создать объекты этого
класса с помощью следующего синтаксиса:
p = Point() # один объект класса Point
s = Point() # ещё один объект класса Point

12.

Методы в объявлении класса
Внутри класса методы объявляются как функции.
Обычно метод вызывается у объекта с использованием
точечной нотации: obj.method(). При таком вызове
объект obj будет первым аргументом метода. По
традиции соответствующий параметр метода называют
self (в Python он явно объявляется).

13.

Методы в объявлении класса
class Point:
def reset(self):
self.x = 0
self.y = 0
p = Point()
p.reset()
print(p.x, p.y)
# 0 0

14.

Эксперименты с методами
class Point:
def reset(s):
s.x = 0
s.y = 0
def dump():
print('dump')
p = Point()
Point.reset(p) # аналог p.reset()
Point.dump()
# напечатает 'dump'
# TypeError: dump() takes 0 positional arguments but 1 was given
p.dump()

15.

Класс Point с методами
class Point:
def move(self, x, y):
self.x = x
self.y = y
def reset(self):
self.move(0, 0)
def distance(self, p):
return ((self.x-p.x)**2+(self.y-p.y)**2)**0.5

16.

Использование класса Point
p1 = Point()
p1.move(3, 4)
p2 = Point()
p2.reset()
print(p1.distance(p2))
# 5.0
English     Русский Rules