为了账号安全,请及时绑定邮箱和手机立即绑定

我的困惑!

其实我觉得要实现这道题的功能并不难,但是,怎么样完美的实现代码的封装以及减少代码量才是我头疼的...例如对于这种判断名字和编号是否正确的方法是否可以封装等等问题。我觉得在测试类里代码越少越好,最好只要一句话调用一个方法就好了。还有对于业务的分析我感觉也遇到了障碍,从逻辑上来说,选书应该是人的方法,让人选书是图书馆的方法,我是否应该再创建一个人类,和一个图书馆类?

问题写得有些混乱,还请高手能详细替我解答,要是有代码就更好了,不胜感激!

正在回答

4 回答

下面是我个人的理解,参考了老师的代码,不保证正确性,自由采用。

图书馆借书系统整体上作为一个类对待,其中涉及属性和方法。

不需要创建人类吧,毕竟这里只需要获取控制台的命令,如果是真实的借书系统,可能会涉及到人类的创建,比如学生或者教职工;

这里我们尽量从全局上划分系统的实现方法,比如:

按照书名选书模块;

安装序号选书模块;

命令接受模块;

可以发现有了以上三个功能方法,该系统的功能就都实现了。

**尽量把和这些功能相关的组件都封装到该方法里,而不要放到主调用方法里,主方法只负责接受返回值和处理抛出的异常。**

然后用主方法,分布调用这些模块,处理这些模块抛出的异常即可。

0 回复 有任何疑惑可以回复我~
#1

慕斯卡5333890 提问者

你觉得能不能将异常的处理也放在封装的方法里?这样好操作吗?
2015-08-04 回复 有任何疑惑可以回复我~
#2

慕斯卡5333890 提问者

另外很谢谢你的解答,帮助很大
2015-08-04 回复 有任何疑惑可以回复我~
#3

神经旷野舞者 回复 慕斯卡5333890 提问者

java刚学,我把参考老师代码得出的结论分享下 如果异常自己能处理我个人觉得肯定就自己处理了,但是一个方法里面可能会有多个异常: 除了java内置函数的异常比如数组越界会自动抛出异常(怎么处理,就要手动catch了), 异常也可以自定义这个时候就手动抛出异常
2015-08-05 回复 有任何疑惑可以回复我~
#4

神经旷野舞者 回复 神经旷野舞者

再比如getBookByName()这个方法,会抛出“图书不存在异常”,当然可以在方法内直接处理这个异常,但是处理过程用到了main()里的其他命令,所以还是抛给mian()。
2015-08-05 回复 有任何疑惑可以回复我~
#5

买买提与三叶草 回复 神经旷野舞者

非常赞同,我也是参考了老师的写法,磕磕碰碰写出来的,总体来说,老师的方法封装的特别好,我的理解是,以后写异常按照这个思路就好了。1、是java定义的异常,那么就写try catch语句去捕捉就好了,你可以捕捉到直接处理,也可以封装好以后抛到上一层,让上一层调用者来处理。2、自定义异常,那就再方法的开始出先进性throws声明,然后方法中进行throw异常
2015-08-14 回复 有任何疑惑可以回复我~
查看2条回复

我自己也说乱了,总之我觉得可以把方法里的异常分为两种类型,
一种可以把异常看做是方法自身内部的小bug,可以直接在方法里面处理掉用,
一种可以把异常看做是该方法的一类特殊返回值,既然是该方法的特殊返回值,当然应该可以抛给调用者处理,(有三种方式:1,返回值间接抛出;2,通过异常链打包抛出;3,直接抛出)
里面可能有讲的不对的地方,学习就是试错

0 回复 有任何疑惑可以回复我~

再比如getBookByName()这个方法,会抛出“图书不存在异常”,当然可以在方法内直接处理这个异常,但是处理过程用到了main()里的其他命令,所以还是抛给mian()。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

我的困惑!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信