3.9 KiB
3.9 KiB
Задача 5. Библиотека (ООП - Инкапсуляция и Взаимодействие)
Постановка
- Книга: Имеет название, автора и статус ("В библиотеке", "Выдана"). Может менять свой статус на противоположный.
- Читатель: Имеет имя и список взятых книг. Может брать и возвращать книги.
- Библиотека: Содержит список всех доступных книг. Может выдавать книгу читателю.
Задание
Класс Book:
- Создайте класс
Book. - В
__init__(self, title, author)определите свойстваtitle,authorиstatus(по умолчанию "В библиотеке"). - Создайте метод
change_status(self), меняющий статус книги на "Выдана", если она в библиотеке, и обратно.
Класс Reader:
- Создайте класс
Reader. - В
__init__(self, name)сохраните имя и создайте пустой списокborrowed_books. - Создайте метод
take_book(self, book), добавляющий переданную книгу в список. - Создайте метод
return_book(self, book), удаляющий книгу из списка.
Класс Library:
- Создайте класс
Library. - В
__init__(self)создайте списокbooksи добавьте туда несколько книг по умолчанию. - Создайте метод
lend_book(self, book, reader), который проверяет статус книги, меняет его через метод книги на "Выдана" и передает читателю в его список.
Тесты:
- Создайте библиотеку.
- Создайте читателя.
- Используя библиотеку, выдайте читателю книгу.
Задача 6. Магазин (ООП - Агрегация)
Постановка
- Товар: Имеет название и цену.
- Корзина: Содержит список товаров. Может добавлять товар и считать общую стоимость.
- Покупатель: Имеет имя, баланс и корзину. Может оплачивать корзину.
Задание
Класс Product:
- Создайте класс
Product. - Создайте метод
__init__(self, name, price).
Класс Cart:
- Создайте класс
Cart. - В
__init__(self)создайте пустой списокproducts. - Создайте метод
add_product(self, product), добавляющий товар в список. - Создайте метод
get_total(self), возвращающий сумму цен всех товаров.
Класс Customer:
- Создайте класс
Customer. - В
__init__(self, name, balance, cart)сохраните переданные параметры. - Создайте метод
pay(self), который проверяет, хватает ли баланса для оплаты корзины. Если хватает — вычитает сумму из баланса и очищает корзину. Если нет — выводит предупреждение.
Тесты:
- Создайте несколько товаров.
- Создайте корзину и добавьте в нее товары.
- Создайте покупателя, передав ему корзину и баланс.
- Заставьте покупателя оплатить товары в корзине.