社区
2026年北航面向对象设计与构造
作业提交
帖子详情
2025 BUAA-OOPre课程总结
赵旭阳-24371381
2025-11-12 10:05:37
最终架构设计及在迭代中的架构调整
1.最终架构设计
经过历次的迭代开发,最终形成的代码架构如上,具体分析如下:
Main提供了程序的运行入口,而MainTool则将Main需要执行的操作转化为多种方法存储起来,使得代码层次清晰,每一个操作指令均有其对应的方法,便于进行分析和Junit测试。
Adventurer为冒险者类,是整个迭代作业的核心,对Package、Bottle、Equipment、Spell的操作均围绕Adventurer展开,用于存储每一个冒险者的属性特征。
Bottle为抽象类,下设HpBottle、DefBottle、AtkBottle、ManaBottle四个实例化子类,用于存储药水及其属性。
Equipment为抽象类,下设Armour实例化子类和Weapon抽象子类,Weapon包含Sword、Magicbook两个实例化子类,用于存放装备。
Spell为抽象类,包括HealSpell、AttackSpell两个实例化子类,用于存储法术。
Lexer及Parser用于lr指令进行递归下降操作,Lexer为词法解析器,用于取出下一个元素;Parser为语法解析器,是递归下降的核心。
不足之处
未建立诸如接口、工厂之类的架构设计,导致代码的可读性和封装性较差,各部分之间耦合度较高,对于各个类的职能分工不够明确,界限不清晰。
部分方法内部内容太多和冗杂,导致接近于60行,不利于更进一步的迭代进行。
2.迭代历程
第一次迭代(第二次作业)
本次作业核心知识点在于容器创建和ArrayList数组的使用,以及对输入进行解析。
需实现aa、ab、ae、rb、re五条指令,故创建了Main、Adventurer、Bottle、Equipment四个类。
整体架构较为简单。
第二次迭代(第三次作业)
核心在于继承与接口的实现,并设置背包对物品进行管理。
新增ti、ri、use指令,实现物品携带、使用与删除等。
对Bottle进行了细分,建立抽象类并设立了实例化子类,引入了Package对物品进行管理。将Main核心功能至于MainTool,但MainTool内部实现仍较为混乱,方法行数较多。
第三次迭代(第五次作业)
本次引入新容器HashMap与HashSet,并介绍了工厂模式。
新增fight指令和金钱系统。
将MainTool进行了重构,使指令的读取与实现放入不同方法,层次更加清晰。但未使用工厂模式,该部分掌握较弱。
第四次迭代(第六次作业)
介绍了观察者模式,以及接口的具体使用方法。
新增ar、rr指令,需实现冒险者雇佣关系的建立和援助功能。
本次代码架构无明显变化,但援助功能的实现放入了Adventurer,分工不够明确,需进一步了解观察者模式。
第五次迭代(第七次作业)
介绍了递归下降法的思路过程。
新增lr指令,通过Lexer和Parser进行递归下降实现。
新建了两个类,整体架构无明显变化。
Junit心得体会
收获
在经过历次Junit测试以及优化后,我对其作用有了更深的体会。一方面它可以帮助我们进行测试找到bug,对每一个方法进行全面的综合测试能实现高效的纠错;另一方面为了提高覆盖率,我不得不对MainTool进行梳理优化,将不同的方法分离,这也使我的代码结构更加清晰。
不足
在Junit的实现方式上需要进行改进,在OOPre课程中我的Junit测试是通过构造样例运行不同的方法实现的,而较少的使用了assert断言方法,因此对于debug没有实质上的作用,这一点在OO正课中需要改正,同时对于Junit测试的实质理解不到位。
OOPre学习心得
1.
在OOPre课程中感触最深的一点,就是中文用户名带来的bug。在历次作业中出现了诸如IDEA无法绑定gitlab、Junit无法进行覆盖率测试等问题,甚至相比于课程内容带来了更大的困扰,虽然通过使用git指令以及更改Junit存储路径等方法得到了解决,但并未从根本上去除隐患,同时也耗费了大量的时间。印象最深的一次是git推送文件不区分文件名大小写,导致debug两小时才找到问题所在,因此为了避免这种离奇问题的出现,一定要在寒假重装系统,这也告诫我们一定不要取中文用户名,它会在意想不到的时候带来惊喜。
2.
在OOPre中我深刻体会到了面向对象方法的简便性,它将代码进行封装而只留出接口,便于理解和进行分工。但是在代码编写的过程中我并未完全摒弃面向过程的思路,因此在某些方法的实现上仍有改进空间,需要进行完善。同时在迭代过程中进行了多次重构,可见代码架构仍需改进完善。
OOPre课程建议
可以对于代码的架构给出一些指导和建议,便于同学们进行重构。
对于中文用户名问题给出解决方案,帮助部分同学减少无意义问题上的时间消耗。
...全文
49
回复
打赏
收藏
2025 BUAA-OOPre课程总结
最终架构设计及在迭代中的架构调整 1.最终架构设计 经过历次的迭代开发,最终形成的代码架构如上,具体分析如下: Main提供了程序的运行入口,而MainTool则将Main需要执行的操作转化为多种方法存储起来,使得代码层次清晰,每一个操作指令均有其对
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
BUAA
-
OOP
re-
2025
课程
总结
本文
总结
了
BUAA
-
OOP
re-
2025
课程
的学习心得,重点介绍了面向对象的架构设计,包括冒险者、物品、魔法等核心类的设计与职责划分,探讨了JUnit测试实践及代码可扩展性优化方向,体现了封装、继承、多态在实际项目中的应用。
BUAA
-
OOp
re-
2025
课程
总结
本文
总结
了
BUAA
OOp
re
课程
中的作业架构设计,包括简单工厂模式的应用、JUnit测试经验以及从面向过程到面向对象的思维转变。重点分析了迭代过程中类结构的优化与文法解析模块的分离,提升了代码可维护性和扩展性。
2025
-
BUAA
-
OOP
re
课程
博客作业
本文介绍了在
BUAA
OOP
re
课程
中学习Java面向对象编程的体会,涵盖封装、继承、多态及设计模式的应用。结合迭代作业的代码架构,讨论了命令解析、特殊功能管理和通用类的设计,并强调Junit测试在保障代码质量中的重要作用。
2025
-
BUAA
-
OOP
re-第八次作业-
课程
总结
本文
总结
了面向对象编程
课程
中的架构设计演进,包括引入CommandHandler、Use接口、Lexer/Parser等模块化改进,结合JUnit测试提升代码可靠性,并分享了从面向过程到对象抽象的思维转变经验,强调了高内聚、低耦合与可维护性的设计原则。
2026年北航面向对象设计与构造
309
社区成员
1,265
社区内容
发帖
与我相关
我的任务
2026年北航面向对象设计与构造
2026年北航面向对象设计与构造
复制链接
扫一扫
分享
社区描述
2026年北航面向对象设计与构造
java
高校
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章