ООП (об'єктно-орієнтоване програмування) — підхід, при якому програма будується з об'єктів.
Клас — шаблон (креслення) для створення об'єктів.
Об'єкт — конкретний екземпляр класу.
Аналогія: Клас — це рецепт торта. Об'єкт — конкретний спечений торт.
__init__ — конструктор, метод, який викликається при створенні об'єкта.
self — посилання на сам об'єкт (перший параметр усіх методів).
Атрибути — дані об'єкта (self.name).
Методи — функції об'єкта.
💡 Приклад коду
Вивід:
📝 ЗАВДАННЯ (3)
1.
Завдання 1: Клас BankAccount
10 XP
Створіть клас BankAccount з атрибутами: owner (власник) та balance (баланс, за замовчуванням 0). Методи: deposit(amount) — поповнити, withdraw(amount) — зняти (з перевіркою, що вистачає грошей), get_balance() — показати баланс.
💡 Підказка: У withdraw перевірте if amount > self.balance
Створіть клас Student з атрибутами: name, grades (список оцінок, за замовчуванням порожній). Методи: add_grade(grade) — додати оцінку, get_average() — середній бал, get_status() — повертає 'Відмінник' (>=90), 'Хорошист' (>=75), 'Трієчник' (>=60) або 'Двієчник'. Метод __str__ повинен повертати гарний опис.
💡 Підказка: У get_average() не забудьте перевірити, що список оцінок не порожній (інакше ділення на нуль). Використовуйте sum()/len().
🔓 Розв'язок:
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)
Вивід:
3.
Завдання 3: Клас TodoList
30 XP
Створіть клас TodoList (список справ). Атрибути: title (назва списку), tasks (список словників з ключами 'text' та 'done'). Методи: add(text), complete(номер), show() — показати всі завдання з позначками, count_done() — кількість виконаних.
💡 Підказка: Завдання зберігайте як словник {'text': 'купити молоко', 'done': False}. У complete() змінюйте done на True за індексом.
🔓 Розв'язок:
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)}')