PTA Assignment: Library Management System
在本次练习中,您将使用面向对象编程(OOP)原则在Java中创建一个图书馆管理系统。该系统将模拟图书馆内的交互,包括管理图书馆物品、图书管理员和图书馆会员。此作业的重点是帮助您理解访问修饰符(public
、protected
、private
)以及OOP中的各种关系类型,包括关联、泛化和依赖。
要求
设计并实现以下Java类:
1. LibraryItem(超类) - 15分
这是一个抽象类,表示图书馆中的任何物品,例如书籍或杂志。
属性:
title
(protected
): 图书馆物品的标题。id
(private
): 物品的唯一标识符。isAvailable
(protected
): 指示物品是否可借的标志。
方法:
构造函数:用于初始化
title
、id
,并将isAvailable
设置为true
。isAvailable()
(public
): 返回物品是否可借。displayInfo()
(public
,abstract
): 抽象方法,由子类实现以显示物品信息。
2. Book(LibraryItem的子类) - 10分
代表图书馆中的一本书,继承自LibraryItem
。
属性:
author
(private
): 书的作者。
方法:
构造函数:用于初始化
title
、id
和author
。displayInfo()
: 重写LibraryItem
的抽象方法以显示书籍详情。
3. Magazine(LibraryItem的子类) - 10分
代表图书馆中的一本杂志,继承自LibraryItem
。
属性:
issueNumber
(private
): 杂志的期号。
方法:
构造函数:用于初始化
title
、id
和issueNumber
。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或其他图表工具设计一个类图来说明您的图书馆管理系统结构。图中应显示:
所有类及其属性和方法。
每个属性和方法的访问修饰符。
类之间的关系:
关联:
Library
和LibraryItem
之间的关联。泛化:
LibraryItem
及其子类之间的泛化。依赖:
Librarian
/Member
与Library
之间的依赖关系。
将您的类图保存为.png
或.jpg
图像,并随您的提交一起提交。
说明
设计类:考虑每个类的目的以及如何设置访问修饰符。使用private
封装数据,使用protected
允许子类访问,使用public
提供对需要从类外部访问的方法的受控访问。
实现关系:
关联:实现
Library
和LibraryItem
之间的关联,因为图书馆维护一个物品列表。泛化:通过让
Book
和Magazine
继承自LibraryItem
实现泛化。依赖:实现
Librarian
和Member
对Library
的依赖关系,以执行操作。
编写主类:创建一个LibraryManagementSystem
类以测试您的实现。在此类中,您应:
创建
Library
、Book
、Magazine
、Librarian
和Member
的实例。将书籍和杂志添加到图书馆。
让图书管理员将物品添加到图书馆。
让会员借用物品并列出图书馆中的物品。
设计类图:在类图中创建类结构和关系的可视化表示。
评分
本次练习将根据以下内容评分:
提交
提交以下文件:
每个类的Java文件,包括主类
LibraryManagementSystem
。您的类图作为
.png
或.jpg
图像。
提示
在
LibraryItem
中对子类需要访问的属性使用protected
。每个子类中的
displayInfo()
应包括每种物品类型的具体细节(例如,书籍的作者,杂志的期号)。确保主类(
LibraryManagementSystem
)具有清晰的步骤,以展示类之间的交互并测试其关系。