На десятой неделе курса информатики по Python мы изучим принципы объектно-ориентированного программирования. ООП — это парадигма, в которой программы организуются вокруг объектов и классов, а не процедур и функций. Вы научитесь создавать свои классы, использовать наследование, инкапсуляцию и полиморфизм.
Класс — это шаблон (структура), по которому создаются объекты. Объект — это экземпляр класса.
```python```
class Person:
def __init__(self, name):
self.name = name
def greet(self):
print("Привет,", self.name)
p = Person("Аня")
p.greet()
- Атрибуты — переменные, хранящиеся в объекте;
- Методы — функции, действующие над объектом.
```python```
class BankAccount:
def __init__(self, owner, balance=0):
self.owner = owner
self.balance = balance
def deposit(self, amount):
self.balance += amount
Инкапсуляция — сокрытие деталей реализации. В Python для этого используют соглашение `_protected` и `__private`.
```python```
class Secret:
def __init__(self):
self._code = 123
self.__hidden = "секрет"
Наследование позволяет создавать новый класс на основе существующего.
```python```
class Animal:
def speak(self):
print("звук")
class Dog(Animal):
def speak(self):
print("Гав!")
Полиморфизм — способность объектов использовать общий интерфейс:
```python```
animals = [Dog(), Cat()]
for animal in animals:
animal.speak() # разные реализации
Магические методы (`__init__`, `__str__`, `__len__`, `__add__` и др.) позволяют настраивать поведение объектов.
```python```
class Book:
def __str__(self):
return "Книга"
Процедурное:
- данные и функции отдельно
- глобальные переменные
ООП:
- объединение данных и поведения
- масштабируемость и модульность
1. Создайте класс `Student` с методом вывода среднего балла.
2. Реализуйте иерархию `Shape -> Rectangle, Circle` с методом `area()`.
3. Добавьте перегрузку оператора `+` для класса `Vector`.