/
elrdn
/
python_syntax_practice
Обзор
Документация
Войти
/
elrdn
/
python_syntax_practice
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
12_oop_principles/tasks.py
84 строки
3 KB
Elraden
Add Python syntax practice materials
26 май 2026, 12:56
26 май 2026, 12:56
626bd9a
Код
Авторство
О чём код?
""" Тема 12. Основные принципы ООП """ # Задание 1. Инкапсуляция # Создайте класс BankAccount. # Внутри храните _owner и _balance. # Добавьте методы: # deposit(amount) # withdraw(amount) # get_balance() # Нельзя пополнять или снимать сумму меньше или равную 0. # Нельзя снять больше, чем есть на балансе. # TODO: решение # Задание 2. Инкапсуляция в модели # Создайте класс Product. # Внутри храните _title и _price. # Добавьте метод set_price(price), который меняет цену. # Цена не может быть отрицательной. # Добавьте метод get_info(), который возвращает строку с названием и ценой. # TODO: решение # Задание 3. Наследование # Создайте класс User с атрибутом name и методом get_role(). # get_role() должен возвращать "user". # Создайте класс Admin, который наследуется от User. # Переопределите get_role(), чтобы он возвращал "admin". # TODO: решение # Задание 4. Наследование и расширение поведения # Создайте класс Employee с атрибутами name и salary. # Добавьте метод get_info(). # Создайте класс Manager, который наследуется от Employee. # Добавьте Manager атрибут department. # Переопределите get_info(), чтобы он возвращал имя, зарплату и отдел. # TODO: решение # Задание 5. Полиморфизм # Создайте классы EmailNotifier и SmsNotifier. # В каждом классе должен быть метод send(message). # EmailNotifier возвращает строку "Email: <message>". # SmsNotifier возвращает строку "SMS: <message>". # Создайте функцию notify(notifier, message), которая вызывает notifier.send(message). # Проверьте функцию с объектами обоих классов. # TODO: решение # Задание 6. Абстракция # Создайте классы MemoryStorage и ConsoleStorage. # У каждого должен быть метод save(item). # MemoryStorage сохраняет элементы в список. # ConsoleStorage выводит элемент на экран. # Создайте функцию save_item(storage, item), которая вызывает storage.save(item). # Проверьте функцию с обоими хранилищами. # TODO: решение # Задание 7. Композиция # Создайте класс Engine с методом start(). # Метод возвращает "Двигатель запущен". # Создайте класс Car. # Внутри Car должен храниться объект Engine. # Метод Car.start() должен запускать двигатель и возвращать результат. # TODO: решение