PTA Assignment: Library Management System

Author Avatar
小包
发表:2024-11-09 18:01:35
修改:2024-11-09 18:01:35

在本次练习中,您将使用面向对象编程(OOP)原则在Java中创建一个图书馆管理系统。该系统将模拟图书馆内的交互,包括管理图书馆物品、图书管理员和图书馆会员。此作业的重点是帮助您理解访问修饰符(publicprotectedprivate)以及OOP中的各种关系类型,包括关联泛化依赖

要求

设计并实现以下Java类:

1. LibraryItem(超类) - 15分

这是一个抽象类,表示图书馆中的任何物品,例如书籍或杂志。

属性:

  • title (protected): 图书馆物品的标题。

  • id (private): 物品的唯一标识符。

  • isAvailable (protected): 指示物品是否可借的标志。

方法:

  • 构造函数:用于初始化titleid,并将isAvailable设置为true

  • isAvailable() (public): 返回物品是否可借。

  • displayInfo() (public, abstract): 抽象方法,由子类实现以显示物品信息。

2. Book(LibraryItem的子类) - 10分

代表图书馆中的一本书,继承自LibraryItem

属性:

  • author (private): 书的作者。

方法:

  • 构造函数:用于初始化titleidauthor

  • displayInfo(): 重写LibraryItem的抽象方法以显示书籍详情。

3. Magazine(LibraryItem的子类) - 10分

代表图书馆中的一本杂志,继承自LibraryItem

属性:

  • issueNumber (private): 杂志的期号。

方法:

  • 构造函数:用于初始化titleidissueNumber

  • displayInfo(): 重写LibraryItem的抽象方法以显示杂志详情。

4. Library - 15分

Library类包含一组图书馆物品,并提供管理它们的方法。

属性:

  • items (private): LibraryItem对象的列表。

方法:

  • 构造函数:用于初始化列表。

  • addItem() (public): 添加一个新物品到图书馆的物品列表中。

  • listItems() (public): 列出图书馆中的所有物品,显示其详情。

  • checkOutItem() (public): 接受一个LibraryItem作为参数,如果可借,将其标记为已借出(将isAvailable设置为false)。

5. Librarian - 10分

代表负责管理图书馆物品的图书馆工作人员。此类展示了与Library类的依赖关系。

属性:

  • name (private): 图书管理员的姓名。

方法:

  • 构造函数:用于初始化图书管理员的姓名。

  • addItemToLibrary() (public): 接受一个Library和一个LibraryItem作为参数,并将物品添加到图书馆中。

6. Member - 10分

代表可以借用物品的图书馆会员。此类也展示了与Library类的依赖关系。

属性:

  • memberId (private): 会员的唯一标识符。

方法:

  • 构造函数:用于初始化memberId

  • borrowItem() (public): 接受一个Library和一个LibraryItem。使用图书馆的checkOutItem()方法借出物品,并显示借出是否成功。

附加任务:类图 - 20分

使用draw.io或其他图表工具设计一个类图来说明您的图书馆管理系统结构。图中应显示:

  • 所有类及其属性和方法。

  • 每个属性和方法的访问修饰符。

  • 类之间的关系:

    • 关联LibraryLibraryItem之间的关联。

    • 泛化LibraryItem及其子类之间的泛化。

    • 依赖Librarian/MemberLibrary之间的依赖关系。

将您的类图保存为.png.jpg图像,并随您的提交一起提交。

说明

设计类:考虑每个类的目的以及如何设置访问修饰符。使用private封装数据,使用protected允许子类访问,使用public提供对需要从类外部访问的方法的受控访问。

实现关系:

  • 关联:实现LibraryLibraryItem之间的关联,因为图书馆维护一个物品列表。

  • 泛化:通过让BookMagazine继承自LibraryItem实现泛化。

  • 依赖:实现LibrarianMemberLibrary的依赖关系,以执行操作。

编写主类:创建一个LibraryManagementSystem类以测试您的实现。在此类中,您应:

  • 创建LibraryBookMagazineLibrarianMember的实例。

  • 将书籍和杂志添加到图书馆。

  • 让图书管理员将物品添加到图书馆。

  • 让会员借用物品并列出图书馆中的物品。

设计类图:在类图中创建类结构和关系的可视化表示。

评分

本次练习将根据以下内容评分:

任务

分数

LibraryItem类

15

Book子类

10

Magazine子类

10

Library类

15

Librarian类

10

Member类

10

类图

20

主类功能

10

总计

100

提交

提交以下文件:

  • 每个类的Java文件,包括主类LibraryManagementSystem

  • 您的类图作为.png.jpg图像。

提示

  • LibraryItem中对子类需要访问的属性使用protected

  • 每个子类中的displayInfo()应包括每种物品类型的具体细节(例如,书籍的作者,杂志的期号)。

  • 确保主类(LibraryManagementSystem)具有清晰的步骤,以展示类之间的交互并测试其关系。

UML类图

评论