[JAVASE] 类和对象综合应用 -- 图书管理系统

目录

零. 概览

一. 抽象出图书管理系统所涉及的对象

        1.1 Book

        1.2 User 

        1.3 Operation 

二. 实现 User 包中的对象

        2.1 User父类

        2.2 NormalUser 对象 

        2.3 AdminUser 对象 

        2.4 小总结(1) 

三. 实现Book包中的对象

        3.1 Book 对象 

        3.2 BookList 对象 

四. 实现 Operation 包中的对象 

        4.1 IOperation 接口 

        4.2 操作类 

        4.3 接口 和 抽象类的比较 

五. 整合操作 

         5.1 明确 进行 操作的用户

        5.2 明确 对 bookList 进行的操作

六. 总结


零. 概览

最终要实现的就是如上图所示的效果, 不同级别的用户 对应 着不同的操作,  把每一本书都存储在一个容器中, 最终对这个容器进行增删查改... 操作.

一. 抽象出图书管理系统所涉及的对象

        1.1 Book

Book包 中 包含:

a. Book 对象, 这是每一本书

b. BookList 对象, 最终肯定要对图书进行操作, 那么我们就需要 一个 "容器" 把每一本书(Book)存储起来, 这时, 就抽象出 书架 把书存储起来.

Book 包:

        1.2 User 

User包 中 包含:

a. NormalUser 对象, 普通用户, 进行一些 借阅, 查找 ... 的操作 并不对 书架进行操作(即不进行书的增删改).

b. AdminUser 对象, 管理员用户, 进行 书的增删改 ... 的操作, 本质上对 书架进行操作.

c. User 对象(父类), 把NormalUser 和 AdminUser 的共同属性抽取出来, 存放到 父类当中, 子类只需要继承User就好, 实现了代码的复用

User 包:

        1.3 Operation 

Operation包 中 包含:

a. AddOperation 增加图书

b. DelOperation 删除图书

c. ShowOpreation 展示图书

d.  FindOperation 查找图书

e. ExitOperation 退出系统

f. BorrowOperation 借阅图书

g. ReturnOperation 归还图书

h. IOperation 操作接口(包含公有的方法, 实现多态)

Operation 包:


二. 实现 User 包中的对象

        2.1 User父类

name: 抽取出 不同级别用户的共性.

menu: 打印出 菜单, 设置成 抽象方法, 没有具体的实现. 

这里有个小问题, menu的返回值为什么要被设置成为 int , 这是因为 这个菜单中的 功能被用户进行了选择, 最终要返回 一个 序号, 并根据这个序号来调用不同的 操作方法. 

        2.2 NormalUser 对象 

menu方法: 在NormalUser 子类中 重写了父类中的 menu 方法, 并对应着NormalUser对象 特有的功能.

        2.3 AdminUser 对象 

menu 方法: 在 AdminUser子类中重写了 menu方法, 并对应着 AdminUser 对象特有的功能. 

        2.4 小总结(1) 

在不同的子类中 重写 的menu类各不相同, 这体现了 多态(不同的对象进行同种操作时 所产生的状态各不相同.)


三. 实现Book包中的对象

        3.1 Book 对象 

 

Book 对象: Book类中定义了一本书的基本属性, 以及 这些属性 的 get 和 set 方法.(因为他们被 private 修饰, 是私有的).

        3.2 BookList 对象 

books: 实现了 组合, 创建了 books 书架, 用来 存储每一本书.

usedSize: 使用了 多少 书架的空间.

构造方法: 在构造方法中初始化了 userSize成员属性, 并初始化了书架, 最开始设置了三本书.

get and set 方法: 注意 这里的 getBook 和 setBook 是得到 pos 位置的书, 和 在 usedSize 位置 新设置一本书, 本质上还是对 书架进行操作.


四. 实现 Operation 包中的对象 

在Operation 包中实现的都是一些 操作方法,  我们的重心不在 这里,  关于具体实现, 大家可以 去我的 码云 上 查看, 链接如下:Homework_JAVASE: 这是JAVASE学习阶段的课后作业! - Gitee.comicon-default.png?t=N7T8https://gitee.com/nmbg11/bit_after_word_JAVASE/tree/master/j-20240523_JAVASE/src/Operation

        4.1 IOperation 接口 

 

注意接口中的方法默认被 public abstract 修饰, 是抽象方法, 在实现方法中必须被重写.

        4.2 操作类 

 

其他所有的操作类, 都是类似于 这样. 

在 他们之中实现的都是各自的操作方法.

        4.3 接口 和 抽象类的比较 

这里 为什么 要将 IOperation设置成为接口, 而不把他设置成 抽象类 呢?

答: 在 这里 把 IOperation设置成为 接口 和 设置成 抽象类 都可以, 因为 这里的 实现类 都只需要 重写 一个 work 方法, 没有 涉及到 多实现.

一定要注意 接口和抽象类的区别, 接口 可以多实现, 而 在 java中抽象类(不只是抽象类, 所有的类) 不能够多继承. 


五. 整合操作 

接下来, 我们把 以上的多个对象 整合起来, 让他们 共同 实现图书管理系统.

         5.1 明确 进行 操作的用户

 

根据 用户输入的 id 来返回 id 对应的对象. 最终使用 父类 user 来接受, 发生了 向上转型.

        5.2 明确 对 bookList 进行的操作

 

不同 用户所能够进行的操作 不同.

 根据 choice 来 调用指定的 work.


六. 总结

a. 文章主要 讨论的是 业务逻辑的实现, 不考虑一些 细节.

b. 首先 抽象出来 图书管理系统 中的对象.

c. 针对 各个对象, 实现他们各自的功能.

d. 最后 把 抽象出来的对象 进行 整合, 共同来实现图书管理系统.

图书管理系统的源码 在Gitee 中, 链接如下:

j-20240523_JAVASE/src · 伍炫昱/Homework_JAVASE - 码云 - 开源中国 (gitee.com)icon-default.png?t=N7T8https://gitee.com/nmbg11/bit_after_word_JAVASE/tree/master/j-20240523_JAVASE/src

  • 99
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 60
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 60
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NMBG22

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值