Назовите и объясните ключевые принципы ООП

Ответ

Объектно-ориентированное программирование (ООП) — это парадигма, основанная на представлении программы как совокупности взаимодействующих объектов. Её цель — управление сложностью ПО через структурирование кода. Ключевые принципы:

  1. Инкапсуляция Объединение данных (атрибутов) и методов для их обработки в одном объекте (классе) с сокрытием деталей реализации от внешнего мира. Это позволяет защитить данные от несанкционированного доступа и упростить поддержку кода.

  2. Наследование Механизм, позволяющий создавать новый класс (потомок) на основе существующего (родителя). Потомок перенимает атрибуты и методы родителя, может их расширять или переопределять. Основное преимущество — повторное использование кода.

  3. Полиморфизм Способность объектов с одинаковым интерфейсом (например, с одним и тем же названием метода) иметь разную реализацию этого интерфейса. Это позволяет писать более гибкий и обобщенный код.

Пример на Python:

# Родительский класс
class Animal:
    def __init__(self, name):
        self._name = name  # Инкапсуляция: атрибут защищен

    def speak(self):
        raise NotImplementedError("Метод должен быть переопределен в дочернем классе")

# Наследование от Animal
class Dog(Animal):
    # Полиморфизм: переопределение метода speak
    def speak(self):
        return f"{self._name} говорит: Гав!"

class Cat(Animal):
    # Полиморфизм: другая реализация метода speak
    def speak(self):
        return f"{self._name} говорит: Мяу!"

# Использование
dog = Dog("Рекс")
cat = Cat("Мурка")

animals = [dog, cat]
for animal in animals:
    # Один и тот же вызов метода animal.speak() дает разный результат
    print(animal.speak())