Files
2026-07-14 12:20:34 +03:00

3.9 KiB
Raw Permalink Blame History

Задача 5. Библиотека (ООП - Инкапсуляция и Взаимодействие)

Постановка

  • Книга: Имеет название, автора и статус ("В библиотеке", "Выдана"). Может менять свой статус на противоположный.
  • Читатель: Имеет имя и список взятых книг. Может брать и возвращать книги.
  • Библиотека: Содержит список всех доступных книг. Может выдавать книгу читателю.

Задание

Класс Book:

  1. Создайте класс Book.
  2. В __init__(self, title, author) определите свойства title, author и status (по умолчанию "В библиотеке").
  3. Создайте метод change_status(self), меняющий статус книги на "Выдана", если она в библиотеке, и обратно.

Класс Reader:

  1. Создайте класс Reader.
  2. В __init__(self, name) сохраните имя и создайте пустой список borrowed_books.
  3. Создайте метод take_book(self, book), добавляющий переданную книгу в список.
  4. Создайте метод return_book(self, book), удаляющий книгу из списка.

Класс Library:

  1. Создайте класс Library.
  2. В __init__(self) создайте список books и добавьте туда несколько книг по умолчанию.
  3. Создайте метод lend_book(self, book, reader), который проверяет статус книги, меняет его через метод книги на "Выдана" и передает читателю в его список.

Тесты:

  1. Создайте библиотеку.
  2. Создайте читателя.
  3. Используя библиотеку, выдайте читателю книгу.

Задача 6. Магазин (ООП - Агрегация)

Постановка

  • Товар: Имеет название и цену.
  • Корзина: Содержит список товаров. Может добавлять товар и считать общую стоимость.
  • Покупатель: Имеет имя, баланс и корзину. Может оплачивать корзину.

Задание

Класс Product:

  1. Создайте класс Product.
  2. Создайте метод __init__(self, name, price).

Класс Cart:

  1. Создайте класс Cart.
  2. В __init__(self) создайте пустой список products.
  3. Создайте метод add_product(self, product), добавляющий товар в список.
  4. Создайте метод get_total(self), возвращающий сумму цен всех товаров.

Класс Customer:

  1. Создайте класс Customer.
  2. В __init__(self, name, balance, cart) сохраните переданные параметры.
  3. Создайте метод pay(self), который проверяет, хватает ли баланса для оплаты корзины. Если хватает — вычитает сумму из баланса и очищает корзину. Если нет — выводит предупреждение.

Тесты:

  1. Создайте несколько товаров.
  2. Создайте корзину и добавьте в нее товары.
  3. Создайте покупателя, передав ему корзину и баланс.
  4. Заставьте покупателя оплатить товары в корзине.