BUAA 2025年 OO课程第四单元总结暨全课程总结
随着第四单元的结束,本学期的OO课程也进入尾声。下面进行总结。
目录
第四单元总结
第四单元主要学习UML图的绘制。单元背景是在一所小型图书馆内开发一个小型图书管理系统。
正向开发与UML图
本单元的正向建模开发主要需要我们先建立一个良好的架构。可以发现其实从代码实现难度的角度看,本单元作业并不困难。第一次作业除了需求理解方面基本没有难度。所以单元考察的主要是我们首先建立一个合理的恰当的架构,既清晰明了地运转代码,又能更好地迭代开发。
我的架构首先在Main类里进行Parse初始化,在Parse类里进行输入解析,然后建立了Library,Book,User,Shelf,AppointmentDesk,BorrowAndReturnDesk,Order等几个抽象出的类,后续还有HotShelf,CommonShelf,和ReadingRoom类。这几个类可以分工明确的完成题目的所有需求。
- Library:图书馆主体类,提供读、还、借、还、预约、取、查询等功能。
- Book:书类,有书的各种属性,如Isbn号,提供各种get方法,同时有被借阅等布尔值属性,提供修改查询方法。
- User:借阅者类。
- Shelf:书架类,后面有热门书架和一般书架。存放书架上的书。
- AppointmentDesk:存放所有预约处的书。
- BorrowAndReturnDesk:存放所有归还的书。
- Order:表示预约的类。包含书、预约者、预约期限等属性。
在架构设计时,主要需要我们画出类图、顺序图和状态图。
大模型的使用
本单元我会使用大模型进行需求分析。主要把指导书和我的架构先后喂给大模型,让大模型先分析需求,生成一个架构,然后分析我的架构能否满足指导书中的所有需求。
不过,直接让大模型读指导书生成代码或架构不太现实,结果也不尽如人意。需要像实验课那样给予提示。
OO课程回顾
本学期学习了四个单元的课程,分别是表达式(递归下降),电梯(多线程),社交网络(JML),图书馆管理系统(UML),获取了许多知识。我有许多收获。这点在研讨课上已经有了分析,并和同学们分享。
第一单元
手忙脚乱是我第一单元最好的写照。由于一个寒假没有学习Java和面向对象思维的代码,我再次完成OO课程作业十分困难。出现了很多因为不适应面向对象思维,不熟悉java代码的错误,开发也相对困难。
同时,由于只满足于中测通过,而中测和强测测试点强度相差甚大,导致我第二次强测全军覆没。
但研讨课这种全新的教学方式让我收获很多。研讨课后我学习了同学的代码架构,对我的架构进行了重构,debug成功。
第二单元
相对第一单元不那么慌乱,但由于多线程的难度还是出现许多问题。主要问题在于共享变量的同步控制。架构设计倒是其次,主要在debug。
dubug方面,轮询、死锁、超时,运输逻辑错误是最多出现的问题。经过长时间的debug训练,我更加熟练掌握了打断点和通过print输出来debug的方法。
第三单元
学习了JML规格,明白如何阅读并根据JML规格撰写代码。
首先,如何利用大模型帮助我们实现代码开发。大模型可以帮助我们阅读JML,分析需求,并提供初步的代码实现。对于简单的方法和类的实现,大模型根据JML规格可以完成的十分优秀。但是对于复杂度高的方法,JML规格往往只给出最简单粗暴的逻辑,复杂度十分高,大模型也往往只会根据JML规格给出高复杂度方法。这需要我们自行开发方法降低复杂度。如果想用大模型辅助,需我们给好充足的提示词,如采用什么方法(算法),哪一步干什么等。
然后debug方面主要也是某些方法复杂度过高引起的RTLE。阅读讨论区可以得到“动态维护属性”的方法,十分有效的解决了问题。
第四单元
本单元学习了UML的相关知识,前文已经详细阐释,不再赘述。
相关推荐
电梯调度java程序 buaa oo课程
程序能够模拟多部电梯调度,通过输入指令进行运算。可以处理电梯内请求,电梯外请求,顺路捎带,加入停止电梯。用java实现的,内有java工程,还有一份输入输出样例。
elevator3.zip_java_java编程_北航oo_北航电梯_电梯
北航第三次oo作业,在原来傻瓜电梯的基础上增加捎带功能
毕设&课设:自动测评 for BUAA Object-Oriented(OO) 北航 面向对象设计与构造 jav.zip
经导师指导并认可通过的大作业设计项目源码,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。
毕设&课设:2017级北航计算机学院面向对象设计与构造作业.zip
经导师指导并认可通过的大作业设计项目源码,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。
29Linux基础命令详解——用户管理.docx
29Linux基础命令详解——用户管理


