ООП (об'єктно-орієнтоване програмування) — підхід, при якому програма будується з об'єктів.
Клас — шаблон (креслення) для створення об'єктів.
Об'єкт — конкретний екземпляр класу.
Аналогія: Клас — це рецепт торта. Об'єкт — конкретний спечений торт.
__init__ — конструктор, метод, який викликається при створенні об'єкта.
self — посилання на сам об'єкт (перший параметр усіх методів).
Атрибути — дані об'єкта (self.name).
Методи — функції об'єкта.
class BankAccount:
def __init__(self, owner, balance=0):
self.owner = owner
self.balance = balance
def deposit(self, amount):
self.balance += amount
print(f'Поповнено на {amount}. Баланс: {self.balance}')
def withdraw(self, amount):
if amount > self.balance:
print('Недостатньо коштів')
else:
self.balance -= amount
print(f'Знято {amount}. Баланс: {self.balance}')
def get_balance(self):
return self.balance
acc = BankAccount('Діма', 1000)
acc.deposit(500)
acc.withdraw(200)
acc.withdraw(2000)
class Student:
def __init__(self, name):
self.name = name
self.grades = []
def add_grade(self, grade):
self.grades.append(grade)
def get_average(self):
if not self.grades:
return 0
return sum(self.grades) / len(self.grades)
def get_status(self):
avg = self.get_average()
if avg >= 90: return 'Відмінник'
elif avg >= 75: return 'Хорошист'
elif avg >= 60: return 'Трієчник'
else: return 'Двієчник'
def __str__(self):
return f'{self.name}: середній бал {self.get_average():.1f} ({self.get_status()})'
s = Student('Іван')
for g in [85, 92, 78, 95, 88]:
s.add_grade(g)
print(s)
class TodoList:
def __init__(self, title):
self.title = title
self.tasks = []
def add(self, text):
self.tasks.append({'text': text, 'done': False})
def complete(self, number):
if 1 <= number <= len(self.tasks):
self.tasks[number - 1]['done'] = True
print(f'Завдання "{self.tasks[number-1]["text"]}" виконано!')
else:
print('Невірний номер')
def show(self):
print(f'=== {self.title} ===')
for i, task in enumerate(self.tasks, 1):
mark = '[x]' if task['done'] else '[ ]'
print(f'{i}. {mark} {task["text"]}')
def count_done(self):
return sum(1 for t in self.tasks if t['done'])
todo = TodoList('Мої справи')
todo.add('Купити продукти')
todo.add('Написати код')
todo.add('Погуляти')
todo.complete(2)
todo.show()
print(f'Виконано: {todo.count_done()} з {len(todo.tasks)}')