@Amir1807

Необходимо разработать иерархию работников библиотеки?

Добрый день!
подскажите(объясните) пожалуйста, что еще необходимо сделать с данной задачей с абстракциями и интерфейсами.

Понимаю что нужно сделать 4 interface Reader,interface Librarian, interface Supplier, interface Administrator. Со своими классами, но вот дальше как обрубает, пытаюсь это сделать в IDEA.

Описание
Необходимо разработать иерархию работников библиотеки. Нужно реализовать совмещение нескольких ролей в библиотеке в одном исполнителе через интерфейсы. Каждый объект в программе имеет определенный набор действий.
Часто программист, создающий объект, не представляет все ситуации, в которых тот будет использоваться. Также программисту, использующему объект, часто неизвестны все его детали.
Для передачи информации о том, что должен уметь объект, используются интерфейсы.
Примером интерфейсов в нашей библиотеке может служить понятие роли на проекте. Каждая роль подразумевает набор определенных операций, которые должен "уметь" объект пользователь — User в программе.
Функционал программы
Создайте иерархию "Пользователи библиотеки" со следующими интерфейсами:
Читатель – берет и возвращает книги.
Библиотекарь – заказывает книги.
Поставщик книг – приносит книги в библиотеку.
Администратор – находит и выдает книги и уведомляет о просрочках времени возврата.
В методе public static void main создайте 2-3 объекта, реализующих эти интерфейсы.
Дополнительная информация
Учтите, что интерфейсов у пользователя (User) может быть несколько. Объекты класса User могут взаимодействовать друг с другом (например, библиотекарь заказывает у поставщика).
Пример реализации
Например, у администратора должен быть метод overdueNotification(Reader reader). Методы могут принимать в качестве параметра других user-ов. Например, читатель берет книги у администратора, библиотекарь заказывает у поставщика и т.д.
Создайте несколько классов, демонстрирующих использование интерфейсов. В частности, продемонстрируйте совмещение, например, поставщик, который может быть также и читателем, библиотекарь – администратором и т.д. Реализация методов, описанных в интерфейсах, необязательна, но желательно продемонстрировать, как методы должны вызываться на объектах.
  • Вопрос задан
  • 1588 просмотров
Пригласить эксперта
Ответы на вопрос 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый день!
Создайте несколько интерфейсов.
Например, iReader, iLibrarian, iSupplier и iAdministrator. (Названия даны лишь для наглядности. Желательно придерживаться Java naming convention)

Далее для каждого интерфейса опишите методы.
Например, для iReader -
// сигнатуры методов могут отличаться
takeBook(); // взять книгу
returnBook(); // вернуть книгу


Для iLibrarian
orderBook(); // заказать книгу

Для iSupplier
bringBook(); // принести книгу

Для iAdministrator
findBook(); // найти книгу
overdueNotification(User reader); // уведомить о времени возврата


Дальше вам нужны реализации этих интерфейсов.
Reader implements iReader
Librarian implements iLibrarian
Supplier implements iSupplier
Admin implements iAdministrator


В общем, имплементируем интерфейсы и реализуем эти интерфейсы.

Если например, Admin может не только уведомлять пользователей об истечении срока возврата, но также читать книги, то Admin implements iAdministrator, iReader имплементируем нужный интерфейс тоже.

Ну и конечно же нужен класс Book, который будет представлять книгу.

Это простая задача на ООП. Возможно. что названия классов и интерфейсов можно оформить еще красивее, но я на скорую руку сделал, чтобы показать вам саму идею.

Также можно например, Всех этих юзеров наследовать от объекта User.
Т.е.
Reader extends User implements iReader

А в интерфейсах например, использовать generic type. Таким образом реализовать этот интерфейс смогут только классы расширяющие класс User.

Например,
interface iReader<T extends User>

Тогда указанная выше строка будет выглядеть следующим образом:
Reader extends User implements iReader<Reader>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы