BUAA OO 第四单元及课程总结

姚凯-22373239 学生 2024-06-14 18:24:28

第四单元

正向建模与开发

本单元要点在于正向建模,所谓正向设计简单来说就是从概念——实物,这一过程利用绘图或建模等手段预先做出产品设计原型,然后根据原型制造产品。在本单元的作业中,要求学习并掌握UML类图、顺序图以及状态图,先进行模型构建,再实现一个图书管理系统。

在具体建模过程中,首先通过题面在心中大致构建一个类的设计,这一步时的模型还是很粗略的,毕竟没有往细节的实现方面去考虑。接下来就需要去编写代码,边写边为进一步的建模思考,捋顺思路,是一个实践-认识-再实践的过程。

代码架构设计

第一次作业要求实现一个可供读者借阅、预定、归还的图书馆系统。

第二次作业加入了图书漂流角和图书捐赠。

最后一次作业则加入信誉分和预约限制。

给出第三次代码的UML类图

其中,main类进行调用jar包的解析类来识别输入,转而生成一个jar包中的LibraryCmd类进入Library类进行操作的进一步处理:通过一个switch-case语句对命令进行分情况讨论。之后跳转到Library中的各个函数,调用Library下的各个部门(RegisterDepart类、AppointmentDepart类、BookShell类、DriftCorner类)来加工Copy书本副本类和Reader读者类,工作结束调用jar包提供的标准输出。

第二次作业加入捐赠书籍,则加入了CharityCopy作为Copy的子类,加入图书漂流角DriftCorner类。加入图书借还时间限制后,Copy类新增expiry属性。

第三次加入信誉分,Reader类新增credit属性,并在各个操作中由Library类维护。可见代码设计和UML类图之间同步、一一对应的关系。

OO整体课程

架构设计思维

第一单元,学习了递归下降的基本思想,通过面向对象设计的封装思想,将几个封装递归嵌套来实现复杂问题的解析消化,最后变成简单可处理的形式。

第二单元,多线程的设计让我意识到了在多线程的程序设计中多个线程的同步互斥实现和避免死锁的设计思想,并且进一步了解了单例模式和工厂模式的应用。

第三单元,JML规格化的设计主要是在给定架构设计下遵循要求,提供实现方法。

第四单元,正向建模提供架构设计一个先规划设计再步步实现的思想方法。

测试思维

在本系列的OO课程单元的代码测试中,个人主要一初步代码实现时的样例评测,自动评测机评测为主,到代码查细微 bug时的个人数据点构造。对于特定几个单元的具体问题,比如第一、三单元的代码性能方面,就采取压力测试,对于第二单元的死锁问题,就采用代码块视察和特殊数据构造。在测试数据构造方面,与人交流相当重要,很多细微的点光靠一个人、或者加上评测机的数据也是很难想象得到的,多多与他人交流才能更好的实现代码测试。

课程收获

本次OO课程让我学会了Java面向对象编程的基本能力,领会了面向对象编程的各个思想。我的代码架构设计能力得到了明显的提高。在每周编写OO作业的经历也给了我一定的成就感,在项目迭代过程中,有困难,有不安,但也有与同样在思考OO作业的他人一起交流讨论、攻克难关的体验,有通过数据点的喜悦,OO确实带给我许多收获。

 

 

...全文
55 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

301

社区成员

发帖
与我相关
我的任务
社区描述
2023年北航面向对象设计与构造
学习 高校
社区管理员
  • YannaZhang
  • CajZella
  • C_ecelia
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧