2.12M
Категория: ПрограммированиеПрограммирование

Принципы ООП

1.

Принципы ООП

2.

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

3.

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

4.

Инкапсуляция
Инкапсуляция – упаковка значений и действий в
единый компонент (капсулу). Такой капсулой является
класс.
Инкапсуляция != сокрытие.
Часто под инкапсуляцией понимают скрытие от пользователя
алгоритма работы объекта. Видимым остается только интерфейс,
при помощи которого происходит взаимодействие с объектом.

5.

Инкапсуляция
Для языков C++ и Java инкапсуляция без сокрытия
рассматривается, как не полноценная. В Python
инкапсуляция реализована в полной мере, но отсутствует
возможность скрытия в принципе.
Благодаря инкапсуляции взаимодействие с объектами
класса строится через интерфейс класса (набор атрибутов
и методов, доступный для взаимодействия из основной
программы)
В Python соблюдение инкапсуляции зависит только от
программиста. Скрытие данных установлено только на
уровне соглашения (т.е. не обязательно к исполнению), о
том, какие атрибуты и методы являются доступными, а
какие – скрытыми.

6.

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

7.

Инкапсуляция
1) Protected - одиночное подчеркивание перед именем
атрибута или метода – не предназначены для использования
вне методов класса, но доступны по имени.
2) Private - двойное подчеркивание – не доступны по
имени, но доступны под именем _ИмяКласса__имяАтрибута.
class Class:
x=1
_x = 2
__x = 3 # этот атрибут доступен по имени '_Class__x'
object = Class()
print(object.x)
print(object._x)
print(object._Class__x) #обращение object.__x вызовет исключение

8.

Дескрипторы
Дескриптор – объект, доступ к которому через атрибут
переопределен методами.
Метод чтения, геттер (англ. getter) - метод, позволяющий
получить значение атрибута (чаще всего скрытого).
Устанавливающий метод, сеттер (англ. setter) - метод,
используемый для того, чтобы присвоить значение атрибуту,
например, обработав при этом недопустимые присваивания.
Привязка методов к атрибуту осуществляется с помощью
функции property().
Свойство = property(Чтение[, Запись, Удаление, Строка
документирования])
Дескрипторы позволяют получить доступ
атрибуту через открытый. «Режим наладчика».
к
скрытому

9.

Дескрипторы
class C(object):
def getx(self):
return self.__x
def setx(self, value):
self.__x = value
def delx(self):
del self.__x
x = property(getx, setx, delx)
c = C()
c.x = 1 # вызывается setx
print(c.x) # вызывается getx
del c.x # вызывается delx

10.

Абстракция

11.

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

12.

Абстракция
Принцип абстракции говорит о том, что стоит хранить
об объекте только те данные и выполнять только те
действия, которые нужны в конкретной программе.

13.

Абстракция
Декомпозиция – разделение одного сложного объекта
на несколько простых.
English     Русский Правила