OO_UNIT4 单元总结

OO_U4_总结

正向建模与开发

在 U4 中,我按照 “设计程序架构->绘制 UML 类图->编程实现” 的顺序完成作业,以达到对于程序架构的设计和抽象能力的训练。 ​

首先根据指导书,我们需要模拟一个小型的图书管理系统,完成图书馆支持的相关业务,在这样的题目要求下,我设计了 Library 类进行图书总的管理,同时与书架、预约处、借还处、用户进行交互,完成图书的租借、预约、转运等相关流程。 ​

在设计了程序架构之后,我绘制了初步的 UML 类图,设计了 Library 类并与 User、AppointmentOffice、BorrowAndReturnOffice 等类进行交互,并规定了基本的属性(如存放书籍的容器,书籍相关信息)和操作,确定了等下要编程具体实现的内容。然后再初步完成状态图和顺序图,确认书籍的从属状态的变化和对象之间的消息传递顺序。 ​

在具体的实现过程中,根据绘制的 UML 图来构建代码,并完善具体的实现细节,补充属性、操作具体信息。 ​

完成上述正向建模与开发的操作后,可以根据实际情况修改具体的代码实现,来应对可能新添的需求和进行一定的简化,在代码具体完成之后,可以反过来完善 UML 类图、状态图、顺序图的实现细节。

架构设计

最终的代码架构设计和 UML 类图设计充分吻合,由官方包所提供的@Trigger(与状态图对应)和@SendMessage(与顺序图对应),在程序中具体的方法上标注出来,二者相互对应。

四个单元中架构设计思维的演进

第一单元

在第一单元的学习中,我们通过学习对表达式结构的解析,学会如何使用适当的模型和层次结构来表示复杂的多项式表达式,通过递归下降的方法进行建模,将表达式中的因子、项和表达式分层表达出来,在本单元中我认识到一个良好的架构对于代码的整体设计是十分重要的,通过层次化设计将复杂的问题拆解为一个个小的问题来解决,实现代码整体的高内聚低耦合,提高代码的整体可读性和可维护性。

第二单元

在第二单元的学习中,我们通过学习多线程电梯调度,在具体实现过程中解决多线程问题中常出现的死锁、轮询问题,来提高自己模块化设计的能力,同时通过模块化设计分离 Schendule 和 Elevator 等类来将电梯系统分为不同的模块,通过合理的模块之间的交互,实现电梯系统的设计与开发。

第三单元

在第三单元的学习中,我们通过学习 JML 规格化语言来学习规格化设计和契约式设计,在根据 JML 规格描述来实现语言的同时,也应该在规格的约束下进行代码的设计,以追求更佳的时间复杂度和空间复杂度,提高代码的可靠性和性能。

第四单元

在第四单元的学习中,我们通过学习 UML 正向建模与开发,在图书馆模拟系统的背景下,学会使用 UML 类图、状态图、顺序图来进行系统的正向开发,通过 UML 设计来确定程序实现的整体框架,再之后在编程中具体实现要求的过程。

四个单元中测试思维的演进

在静态分析中要首先根据指导书中的内容来分析自己的代码有没有对功能进行一一的实现,保证与题目要求的规格相对应。

在动态测试中通过 JUNIT 测试,自己构造边界数据、特殊数据、大规模数据来测试代码的具体功能,从而定位代码中可能被遗漏的、不容易发现的 BUG。

课程收获

首先收获了许多新的知识,比如递归下降的方法,多线程程序的设计方法、UML 图绘制方法、JML 语法、Java 语法的相关知识,这对于我们后来的编译原理课程以及实际的软件开发打下了基础。在互测的模式可以寻找他人的bug,通过阅读他人代码来发现他人程序的优势和缺陷,进而反馈到自己的程序上,进行更加合理的设计。同时也让我认识到架构设计在迭代开发中是十分重要且不可忽视的,每个单元的三次迭代都添加了意想不到的功能,在每个单元的迭代中我学会了先设计架构再写代码、提前思考功能并预留拓展性的能力。

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值