面向对象第四单元总结

王思月-21373349 2024-06-14 17:12:26

面向对象第四单元总结

正向建模与开发

正向设计是以系统工程理论、方法和过程模型为指导,面向复杂产品和系统的改进改型、技术研发和原创设计等场景,旨在提升企业自主创新能力和设计制造一体化能力。对应到本单元的作业中,即为先进行架构设计,再根据设计的架构进行编程的过程。

本单元的架构设计

UML类图

img

具体设计

对于图书管理系统中的各个部门,本人设计了对应的类实现部门中的功能,并使用Book类存储每一本书的编号和种类,User类存储用户的Id、持有的书籍信息、书籍的应还日期和信用积分。用户在图书管理系统中的行为统一由Library类进行管理。

对于开馆前和闭馆后的整理功能,设计了Management类进行实现。每次整理过程中,对用户尚未扣除过信用分的书籍进行延期检查:如果书籍延期未归还,且未扣过信用分,则扣除用户的信用分并将该书籍进行标注,避免后续重复扣分。

在本单元的三次迭代中,第一次作业的架构被沿用到最后。每次新增的要求都通过在上次的架构中进行补充来实现。

代码设计和UML模型设计之间的追踪关系

在设计架构时,本人先根据题目要求画出大致的UML类图并写出主要的成员和方法,之后按照大致架构编写代码,并在编写代码的过程中逐步对UML类图进行完善和丰富,以保持代码设计和UML模型设计之间一致性

架构设计思维的演进

  • 第一单元 主要注重面向对象编程的思想,将相同的功能集中在同一个类中,即“高内聚低耦合”。在设计架构时,本人先确定了类的种类,之后在编写代码的过程中确定具体的成员和方法。
  • 第二单元 主要注重多线程系统的设计,包括线程同步和线程安全等问题。采用生产者-消费者模型和Look算法,在设计架构时,本人先确定了基本的线程种类和方法,在编写代码的过程中逐步添加辅助的类。
  • 第三单元 主要注重规格的层次化设计,本单元的JML规格已将主要的类做出限定。本人在编写代码的过程中逐一对规格进行满足,并适当添加辅助的方法和类(例如在实现并查集时增加了Edge类)。
  • 第四单元 主要注重UML类图的绘制和整体的架构设计。对于较为复杂的要求,应先设计出相对完整的架构,再根据架构编写代码。

测试思维的演进

主要采用黑盒测试与白盒测试结合的策略,先通过黑盒测试检验代码的正确性,再通过构造针对性数据的白盒测试检验逻辑的正确性。

第二单元的多线程具有较大的不确定性,对于线程不安全问题导致的bug,需要进行复现并针对性构造类似的数据进行多次验证。

第三单元和第四单元的测试中,本人主要采用针对性构造数据的方式。随机生成数据检测bug的能力有限,在规格设计和架构设计清晰的前提下,白盒测试用例更容易构造且效果更好。

总结自己的课程收获

通过一学期的学习,本人对面向对象的编程思想有了深入的理解,并学会了如何设计合理的类层次结构,以便于迭代开发和复用。在开发过程中,本人了解了SOLID设计原则,学习了常见的设计模式(如工厂模式、单例模式等),掌握了JML规格语言和UML类图两大工具,并将其应用于实践中。此外,四个单元的作业也提升了本人的程序设计和构造测试用例等基本能力,为今后的开发与设计提供了坚实基础。

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

301

社区成员

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

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