Какие знаешь принципы ООП
Python
Middle
Без компании
Какие знаешь принципы ООП
Ответы
**4 основных принципа ООП:**
**Инкапсуляция** защищает данные
**Наследование** переиспользует код
**Полиморфизм** обеспечивает гибкость
**Абстракция** упрощает сложность
*Примеры:*
**1. Инкапсуляция**
Сокрытие внутренней реализации и данных от внешнего вмешательства.
python
```
class BankAccount:
def __init__(self):
self._balance = 0 # protected attribute
def deposit(self, amount):
self._balance += amount
def get_balance(self):
return self._balance # доступ через метод
acc = BankAccount()
acc.deposit(100)
print(acc.get_balance()) # 100
# print(acc._balance) # так делать не рекомендуется
```
### **2. Наследование**
Создание нового класса на основе существующего.
python
```
class Animal:
def speak(self):
pass
class Dog(Animal): # наследование
def speak(self):
return "Гав!"
class Cat(Animal):
def speak(self):
return "Мяу!"
dog = Dog()
print(dog.speak()) # Гав!
```
### **3. Полиморфизм**
Объекты разных классов могут использовать одинаковые методы.
python
```
def make_sound(animal):
print(animal.speak())
make_sound(Dog()) # Гав!
make_sound(Cat()) # Мяу!
```
### **4. Абстракция**
Сокрытие сложной реализации и предоставление простого интерфейса.
python
```
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius ** 2
# shape = Shape() # ошибка!
circle = Circle(5)
print(circle.area()) # 78.5
```