Содержание:
- Что такое ООП
- Концепции объектно-ориентированного программирования
- Принципы объектно-ориентированного программирования
- Главное об ООП
tech talk — я читаю
Что такое ООП
ООП (объектно-ориентированное программирование) - это методология программирования, которая основывается на представлении программы в виде набора объектов, которые взаимодействуют друг с другом, образуя систему в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования. ООП позволяет создавая программы, которые легко масштабировать, поддерживать и модифицировать.
В Python, ООП основывается на трех основных концепциях
- Классы - это определения объектов, которые содержать методы (функции) и атрибуты (переменные).
- Объекты - это экземпляры классов, созданные во время выполнения программы.
- Наследование - это процесс, при котором класс может наследовать атрибуты и методы другого класса.
Для создания класса в Python используется ключевое слово `class`.
Все примеры кода можно посмотреть на GitHub Gist здесь.
Например, следующий код создает класс `Person`:
В этом примере класс `Person` содержит два атрибута - `name` и `age` - и метод `say_hello`, который выводит на экран приветствие, используя значения атрибутов.
Для создания объекта класса `Person` необходимо вызвать конструктор класса, используя следующий синтаксис: person = Person(“Leo”, 30)
Этот код создает объект `person` класса `Person` с атрибутами `name=”Leo”` и `age=30`.
Чтобы вызвать метод объекта `person`, необходимо использовать следующий синтаксис: person.say_hello()
Этот код вызывает метод `say_hello` объекта `person`, который выведет на экран приветствие.
Четыре основных принципа на которых зиждется ООП:
1. Инкапсуляция - это принцип, который позволяет скрыть атрибуты и методы объекта от прямого доступа и обращаться к ним только через определенные интерфейсы.
В Python инкапсуляция достигается с помощью использования префиксов “__” перед именами атрибутов и методов. Это делает их недоступными для прямого доступа извне объекта, но они все еще могут быть вызваны через публичные методы объекта.
Рассмотрим пример:
В этом примере у нас есть класс "BankAccount", который представляет банковский счет. У нас есть приватное поле "__balance", которое хранит баланс счета. Методы "deposit" и "withdraw" позволяют вносить деньги на счет и снимать их соответственно. Метод "get_balance" возвращает текущий баланс счета.
Обратите внимание на префиксы "__" перед именами полей и методов. Это делает их приватными и недоступными для прямого доступа извне объекта. Однако, мы все еще можем получить доступ к этим полям и методам через публичные методы объекта, например, через метод "get_balance".
Также мы создаем объект "account", вносим на него 500 и снимаем 200, и затем выводим текущий баланс, который равен 1300.
Таким образом, использование инкапсуляции в Python позволяет создавать более безопасные и надежные программы, скрывая данные и методы объектов от прямого доступа.
2. Наследование - это принцип ООП, который позволяет классу наследовать свойства и методы другого класса. Класс, который наследует свойства и методы, называется подклассом или производным классом, а класс, от которого наследуются свойства и методы, называется базовым классом или родительским классом.
В Python наследование достигается путем указания имени базового класса в определении производного класса.
Рассмотрим пример:
В этом примере мы создаем класс "Animal", который имеет атрибуты "name" и "age" и метод "eat". Затем мы создаем класс "Dog", который наследует свойства и методы класса "Animal" и добавляет свой собственный атрибут "breed" и метод "bark".
После мы создаем объект класса "Dog" с именем "Buddy", возрастом 3 года и породой "Golden Retriever". Затем мы выводим на экран имя, возраст и породу собаки, а также используем метод "eat" и "bark".
Таким образом, использование наследования в Python позволяет создавать более эффективный и модульный код, путем повторного использования свойств и методов базового класса в производном классе.
3. Полиморфизм - это принцип ООП, который позволяет объектам разных классов иметь одинаковое имя метода и действовать по-разному в зависимости от класса, к которому они принадлежат.
В Python полиморфизм достигается благодаря динамической типизации, то есть тип переменной определяется автоматически во время выполнения программы.
Рассмотрим пример:
Здесь мы создаем класс "Animal", который имеет атрибут "name" и метод "make_sound". Затем мы создаем классы "Dog", "Cat" и "Cow", которые являются подклассами "Animal" и переопределяют метод "make_sound". В методе "make_sound" каждого подкласса возвращается разная строка, представляющая звук, который издает каждое животное.
Затем мы создаем список "animals", содержащий объекты всех трех классов, и используем цикл "for" для вывода имени каждого животного и звука, который они издают, используя метод "make_sound". Здесь мы можем видеть, что метод "make_sound" имеет одно и то же имя для всех животных, но возвращает разные значения, в зависимости от типа объекта.
Таким образом, в Python полиморфизм позволяет использовать объекты разных классов с одним и тем же именем метода, что делает код более гибким и удобным для использования.
4. Абстракция - это принцип ООП, который позволяет скрыть внутреннюю реализацию объекта и предоставить только необходимые для работы с ним методы и свойства.
В Python абстракция достигается с помощью абстрактных классов и методов.
Абстрактный класс - это класс, который не может быть создан напрямую, а только унаследован другими классами. Он может содержать абстрактные методы, которые не имеют реализации, но должны быть определены в каждом классе-наследнике.
Рассмотрим пример:
Здесь мы создаем абстрактный класс "Shape", который содержит абстрактный метод "area". Этот метод не имеет реализации и должен быть определен в каждом классе-наследнике.
Затем мы создаем классы "Rectangle" и "Circle", которые наследуют класс "Shape" и реализуют метод "area". В классе "Rectangle" метод "area" вычисляет площадь прямоугольника, а в классе "Circle" - площадь круга.
Затем мы создаем список "shapes", содержащий объекты классов "Rectangle" и "Circle", и используем цикл "for" для вывода площади каждой фигуры, используя метод "area". Здесь мы можем видеть, что мы можем использовать метод "area" для объектов разных классов, так как он определен в абстрактном классе "Shape".
Таким образом, абстракция позволяет скрыть внутреннюю реализацию объекта и предоставить только необходимые для работы с ним методы и свойства, что делает код более удобным и понятным.
Главное об ООП
Исходя из вышеизложенного, мы узнали, что ООП - это методология программирования, которая основывается на представлении программы в виде набора объектов, которые взаимодействуют друг с другом, образуя систему. ООП в Python основывается на классах, объектах и наследовании. Для создания класса используется ключевое слово class, а для создания объекта класса - конструктор класса. Основные принципы ООП включают инкапсуляцию, наследование, полиморфизм и абстракцию. Чтобы создавать эффективные программы с помощью ООП, важно следовать этим принципам и проектировать классы и объекты таким образом, чтобы они были легко понятны и модифицируемы.
Если у вас есть что-либо добавить к статье, пишите это в комментарии.
Ставьте лайк и подписывайтесь. Давайте позновать новое вместе 🙌