Введение в объектно-ориентированное программирование

Объектно-ориентированное программирование (ООП) - это мощная парадигма программирования, которая помогает структурировать код и делает его более понятным и повторно используемым. Давайте разберемся с основными концепциями ООП на примере Python.

Классы и объекты

Класс - это шаблон для создания объектов. Объект - это экземпляр класса. Представьте, что класс - это чертеж дома, а объект - это сам дом, построенный по этому чертежу.


class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def bark(self):
        print(f"{self.name} говорит: Гав!")

# Создание объекта
my_dog = Dog("Шарик", 3)

# Использование объекта
print(f"Моей собаке {my_dog.name} {my_dog.age} года.")
my_dog.bark()
            

В этом примере Dog - это класс, а my_dog - объект этого класса.

Атрибуты и методы

Атрибуты - это переменные, принадлежащие классу или объекту. Методы - это функции, определенные внутри класса.

  • name и age - это атрибуты
  • bark() - это метод

Наследование

Наследование позволяет создавать новый класс на основе существующего. Новый класс наследует атрибуты и методы родительского класса.


class Labrador(Dog):
    def __init__(self, name, age, color):
        super().__init__(name, age)
        self.color = color

    def swim(self):
        print(f"{self.name} любит плавать!")

my_labrador = Labrador("Бобик", 2, "шоколадный")
my_labrador.bark()  # Унаследовано от Dog
my_labrador.swim()  # Новый метод
            

Инкапсуляция

Инкапсуляция - это объединение данных и методов, которые работают с этими данными, в одном объекте и скрытие деталей реализации от пользователя.


class BankAccount:
    def __init__(self, balance):
        self.__balance = balance  # Приватный атрибут

    def deposit(self, amount):
        if amount > 0:
            self.__balance += amount

    def get_balance(self):
        return self.__balance

account = BankAccount(1000)
account.deposit(500)
print(account.get_balance())  # 1500
            

Полиморфизм

Полиморфизм позволяет использовать единый интерфейс для различных типов данных.


class Cat:
    def speak(self):
        return "Мяу!"

class Duck:
    def speak(self):
        return "Кря!"

def animal_sound(animal):
    print(animal.speak())

cat = Cat()
duck = Duck()

animal_sound(cat)  # Мяу!
animal_sound(duck)  # Кря!
            

Это базовое введение в ООП. По мере практики вы обнаружите, что эти концепции делают ваш код более организованным, повторно используемым и легким для понимания.