Необходимо разработать иерархию работников библиотеки. Нужно реализовать совмещение нескольких ролей в библиотеке в одном исполнителе через интерфейсы. Каждый объект в программе имеет определенный набор действий.
Часто программист, создающий объект, не представляет все ситуации, в которых тот будет использоваться. Также программисту, использующему объект, часто неизвестны все его детали.
Для передачи информации о том, что должен уметь объект, используются интерфейсы.
Примером интерфейсов в нашей библиотеке может служить понятие роли на проекте. Каждая роль подразумевает набор определенных операций, которые должен "уметь" объект пользователь — User в программе.
- Создайте иерархию "Пользователи библиотеки" со следующими интерфейсами:
- Читатель – берет и возвращает книги.
- Библиотекарь – заказывает книги.
- Поставщик книг – приносит книги в библиотеку.
- Администратор – находит и выдает книги и уведомляет о просрочках времени возврата.
- В методе
public static void main
создайте 2-3 объекта, реализующих эти интерфейсы.
Учтите, что интерфейсов у пользователя (User
) может быть несколько.
Объекты класса User могут взаимодействовать друг с другом (например, библиотекарь заказывает у поставщика).
-
Создайте 4 интерфейса:
Reader
,Librarian
,Supplier
,Administrator
. Каждый из них должен содержать описанные выше методы. Например, у администратора должен быть методoverdueNotification(Reader reader)
. Методы могут принимать в качестве параметра других user-ов. Например, читатель берет книги у администратора, библиотекарь заказывает у поставщика и т.д. -
Создайте несколько классов, демонстрирующих использование интерфейсов. В частности, продемонстрируйте совмещение, например, поставщик, который может быть также и читателем, библиотекарь – администратором и т.д. В качестве реализации методов можно сделать вывод подробного сообщения в консоль по типу "Библиотекарь Вася заказал у поставщика Петя книгу Игра Престолов".