Какие знаешь принципы ООП
Принципы ООП — это четыре фундаментальные концепции объектно-ориентированного программирования: абстракция, наследование, инкапсуляция и полиморфизм. Они определяют, как проектировать и организовывать код, делая его гибким, переиспользуемым и понятным.
Наследование
Наследование позволяет создать новый класс на основе существующего. Новый класс (дочерний) получает все атрибуты и методы родительского класса, а также может добавлять собственные или переопределять унаследованные. Это уменьшает дублирование кода и упрощает поддержку.
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
pass
class Dog(Animal):
def speak(self):
return f"{self.name} says Woof!"Инкапсуляция
Инкапсуляция — это ограничение доступа к внутренним данным объекта. В Python принято использовать одинарное подчёркивание _ для «защищённых» атрибутов и двойное __ для «приватных». Приватные атрибуты нельзя напрямую изменить извне, что защищает данные от случайной порчи.
class BankAccount:
def __init__(self, balance):
self.__balance = balance # приватный атрибут
def deposit(self, amount):
self.__balance += amount
def get_balance(self):
return self.__balanceПолиморфизм
Полиморфизм позволяет использовать один интерфейс для разных типов данных. Это значит, что один и тот же метод может вести себя по-разному в зависимости от объекта, который его вызывает. В Python полиморфизм реализуется через переопределение методов в дочерних классах или через утиную типизацию.
animals = [Dog("Rex"), Cat("Tom")]
for animal in animals:
print(animal.speak()) # каждый вызывает свой метод speakАбстракция
Абстракция скрывает сложные детали реализации и показывает только необходимый интерфейс. В Python для этого используются абстрактные классы и методы из модуля abc. Абстрактный метод объявляется, но не реализуется в базовом классе, а дочерние классы обязаны его реализовать.
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
class Square(Shape):
def __init__(self, side):
self.side = side
def area(self):
return self.side ** 2Коротко
- Четыре принципа ООП: абстракция, наследование, инкапсуляция, полиморфизм.
- Наследование — создание нового класса на основе существующего, переиспользование кода.
- Инкапсуляция — скрытие данных через
_и__, защита от внешних изменений. - Полиморфизм — один интерфейс для разных типов, реализуется переопределением методов.
- Абстракция — скрытие деталей реализации, в Python через
abc.
