
Введение
Программирование — это как семейный бизнес: что-то передаётся по наследству, что-то прячется от посторонних глаз, а кто-то умеет делать одно и то же, но по-разному. Всё это — объектно-ориентированное программирование (ООП), а точнее, его три кита: наследование, инкапсуляция и полиморфизм. Давайте разберёмся с этим не скучно, а весело!
1. Наследование: «Сын за отца»
Теория:
Наследование в ООП — это механизм, при котором один класс (ребёнок) получает свойства и методы другого класса (родителя). Это как передача семейного бизнеса, только без бюрократии и налоговой службы.
Пример:
class Parent:
def __init__(self, surname):
self.surname = surname
def say_hello(self):
print(f"Привет, я {self.surname}!")
# Дочерний класс наследует свойства и методы родителя
class Child(Parent):
def play_games(self):
print("Я играю в Minecraft вместо учёбы!")
son = Child("Иванов")
son.say_hello() # Наследованный метод
son.play_games() # Новый метод
Реальная жизнь:
- Наследование похоже на передачу фамилии и гена любви к прокрастинации от родителей к детям.
- Иногда родительский код настолько старый, что «сын» (новый класс) не понимает, зачем ему вообще этот «багаж».
2. Инкапсуляция: «Секрет фирмы»
Теория:
Инкапсуляция — это скрытие деталей реализации и защита данных от вмешательства извне. Грубо говоря, это как пароль на Wi-Fi: внутри всё работает, но посторонние не должны туда лезть.
Пример:
class BankAccount:
def __init__(self, balance):
self.__balance = balance # Две черты — значит, это приватная переменная
def deposit(self, amount):
self.__balance += amount
print(f"Пополнено: {amount}. Баланс: {self.__balance}")
def get_balance(self):
return self.__balance
account = BankAccount(1000)
account.deposit(500)
print(account.get_balance())
# print(account.__balance) # Ошибка! Доступ запрещён!
Реальная жизнь:
- Инкапсуляция — это когда у вас есть зарплата, но ваши родители не знают её точный размер.
- Это когда ваш код защищён от «добрых» коллег, которые хотят «улучшить» его, а потом всё ломается.
3. Полиморфизм: «Один интерфейс — много реализаций»
Теория:
Полиморфизм — это возможность использовать один и тот же метод для разных объектов. Это как фраза «Я занят» у программистов: для одних это значит «я код пишу», для других — «смотрю мемы».
Пример:
class Animal:
def speak(self):
pass # Заглушка
class Dog(Animal):
def speak(self):
print("Гав-гав!")
class Cat(Animal):
def speak(self):
print("Мяу!")
animals = [Dog(), Cat()]
for animal in animals:
animal.speak()
Реальная жизнь:
- Полиморфизм — это когда один человек говорит «я работаю», но для менеджера это значит «пишет отчёт», а для программиста — «гуглит Stack Overflow».
- Это как универсальный USB-провод: вроде один, а кучу разных устройств заряжает.
Заключение
Объектно-ориентированное программирование — это не просто сложные термины, а удобный способ организовать код.
- Наследование помогает не дублировать код (и передавать фамилии!).
- Инкапсуляция защищает важные данные (как PIN-код от карты!).
- Полиморфизм делает код гибким (как талант говорить «я занят» в разных ситуациях!).
Применяйте ООП с умом, и ваш код будет работать, как хорошая кофемашина — стабильно и без лишних вопросов!