Введение в ООП
Парадигмы программирования
Существует несколько парадигм программирования, вот основные:
Императивное программирование — программа это последовательность инструкций, которые выполняются по порядку
Функциональное программирование — программа это набор функций, которые работают с данными используя входные и выходные параметры
Объектно-ориентированное программирование — программа представляется в виде объектов, которые содержат данные и методы для их обработки. Основная идея — объекты являются сущностями, которые существуют самостоятельно и могут взаимодействовать друг с другом
Иногда рассматривают ещё методы программирования. И выделяют два основных метода: процедурный и объектно-ориентированный.
Процедурное программирование — метод написания программного обеспечения, в центре внимания которой находятся процедуры или действия, происходящие в программе.
Основой объектно-ориентированного программирования служат объекты, объединяющие данные и функции.
Понятие ООП
Объект — это программная сущность, которая содержит данные и процедуры. Находящиеся внутри объекта данные называются атрибутами данных. Выполняемые объектом процедуры называются методами. Методы объекта — это функции, которые выполняют операции с атрибутами данных.
То есть, объект можно представлять как автономную единицу, которая состоит из атрибутов данных и методов, которые оперируют атрибутами данных. Методы могут напрямую не взаимодействовать с атрибутами, но всегда совершают какое-либо действие своего объекта.
Например, у объекта "автомобиль" есть атрибуты: марка, модель, год выпуска и методы : припарковать, посигналить, открыть дверь.
Интерактив:
Приведите примеры объктов из реальной жизни с атрибутами и методами. Как с ними можно взаимодействовать? Как можно изменить атрибуты объекта?
Принцип инкапсуляции — объединение данных и программного кода в одном объекте. Включает в себя сокрытие данных — атрибуты объекта можно изменять только при помощи методов, которые мы определили и за их пределами доступа к атрибутам нет.
Когда меняются данные объекта, программист меняет реализацию методов этого объекта. При этом снаружи взаимодействие с объектом остается прежним. Например, есть объект "велосипед" и у него метод "затормозить". Мы можем поменять внутреннее устройство тормоза, но внешний интерфейс — нажатие ручки тормоза, лучше оставить прежним.
Пример объекта из повседневной жизни
Пусть будильник — программный объект. У него есть атрибуты:
Мы видим, что атрибуты — это всего лишь значения они определяют состояние, в котором будильник находится в настоящее время. Мы, как пользователи, не можем напрямую манипулировать этими атрибутами данных, необходимо применить один из методов объекта
Некоторые методы объекта "будильник"
При помощи этих методов мы, пользователи, можем манипулировать атрибутами объекта "будильник". То есть эти методы "выставлены наружу" и являются публичными
Есть также приватные методы — закрытые от внешних сущностей (нас) и являющиеся частью приватного, внутреннего устройства объекта.
Интерактив:
Что такое объект?
Что такое инкапсуляция?
Почему внутренние данные объекта обычно скрыты от внешнего программного кода?
Что такое публичные методы? Что такое приватные методы?
Классы
Класс — это шаблон, определяющий характеристики для объектов
Экземпляры — объекты определенного класса
Параметр self означает, что он применяется для конкретного экземпляра. То есть мы создали класс, в нем определили метод с параметром self и вызывая этот метод для экземпляра класса и применяя self.x мы используем x для этого конкретного экземпляра. Это и значит self.
Посмотреть атрибуты и методы любого объекта — dir(объект)
Жизненный цикл объектов
Конструктор — то, что надо сделать при создании экземпляра класса. Деструктор — то, что надо сделать при удалении экземпляра класса
Наследование
Вместо создания класса с нуля, можно сделать это уже от существующего класса — так создаются подклассы
Класс FootballFan
наследует всё от родительского класса и плюс в его пространстве имён есть внутренние объекты
Last updated