OO第四单元总结

总体架构

最终代码实现

在这里插入图片描述

初始设计架构

在这里插入图片描述

最终的设计和最初的uml建模基本一致。

最终实现的类的数量和基本职能与设计一致,只是在具体实现时根据具体情况额外添加一些属性,和一些额外的方法,但是总体架构和uml建模一致。

实现的主要类的类就是Library类,里面包括了QryMch,Resd, Cird分别是查询机(query machine),预约处(reservation desk)和借还处(circulation desk) 。QryMch中还包含Client类,用于获取存储所有用户的信息。所有类均对应uml中的类。

关于正向建模

首先,正向建模的核心思想是通过创建一系列图表来描述系统的结构和行为,这些图表包括用例图、类图、顺序图、状态图等。然后,这些图表作为开发过程的蓝图,用于指导代码的编写。

实际上,我在前面几个单元的实践中也采用的是正向建模的方式,都是先对问题进行建模,思考一个整体架构包括类的主要职能和类间的协调关系等,只不过没有画图罢了。所以对于正向建模这个问题实际上是有一点经验的。

在开始第一次作业之前,我在大致完成了对问题的抽象建模后,按照作业的要求,先进行了类图的设计。但在设计中实际上遇到了不少问题。有uml建模工具本身使用的困难,具体画图细节部分的难以下手。

其中对于建模工具也就是starUml,它本身在使用上比较费劲,很多操作都需要使用鼠标,本身也比较繁琐,还经常会出现修改不成功的地方,总之在工具方面就不得心应手。

关于具体画图。实际上,在完成一个比较复杂的项目时,很难在真正开始实现之前就能完整地将设计图完成比如像很多方法的建模。因为项目的复杂性决定了很难一把就把整个问题去完成建模,在编程之前就已经想好每个类都有哪些方法,每个方法需要哪些参数,返回值是什么,这几乎是不可能的。

所以结合我的具体实践经验,我认为,真正容易实现的是先进行一个问题的抽象,根据面向对象设计与构造的思维,以类为编程单位,确定这个问题里面包含有哪些类,每个类里面的属性大致有哪些,根据问题这个类需要完成的主要功能是什么。如果能将这几个问题用自然语言回答清楚了,那么初步的框架实际上就已经搭起来了,就可以按照这个框架开始实现。

对于我而言,我在实现的时候一般是先广度覆盖,也就是说先根据设计完成各个类的构建,同时将已经规划好的属性填充到类中,然后再将一些已经设计好的主要方法在各个类中进行实现。在实现的过程中必然会对问题有更加深入的理解,同时原先的设计也会变得更加清晰,可以基于已经实现的部分继续规划后面的步骤,完善uml图的构建后再继续编程。特别要避免的就是在一开始对于问题的把握还没有能达到提纲挈领的程度时,用深度优先的方式进行编程实现,也就是说一开始就扎到某一个类中开始实现它所有的属性和方法,这样很大概率会导致在实现其他类的时候会发现原先的很多东西都需要调整,使得原来的很多功夫都白费了。

总结来说,在正向建模中,设计和实现是一个循序渐进,互相推进的过程。

架构设计的思维

这门课程确实很强调架构的设计,甚至都体现在了课程名中。

经过课程的学习,我认识到了架构确实是非常重要的,但是合理设计架构这个问题是一个循序渐进,慢慢摸索的过程。

要说架构设计具体是个什么东西,我认为实际上就是对于问题进行抽象建模的能力。这个能力不像学一个具体知识,学会了就是学会了,而是了解一些基本的指导思想后,在实践中不断尝试,不断思考,不断领悟的过程。

要说我对于架构设计思维的演进,我最直观的体会就是在拿到一个问题后,在进行初步思考设计的时候变得更加沉着冷静,不再像刚开始的那样手忙脚乱,能够更从容,更贴切地完成问题初步地建模,更容易上手了。

测试

第三单元实际上很大一部分关注点就在测试上,知道了不同的测试方法,如黑盒测试,白盒测试,回归测试等。也在后续的实践中加以运用。

测试是发现程序问题的非常重要的手段,我用的测试方法有手动构造数据测试和自动生成测试的方式。其中手动测试主要针对于在编程时已经考虑到的情况,只不过是一些特殊情况或者是边界情况进行测试;而自动生成测试则是使用大量的随机测试来对程序进行压力测试,主要意图是希望发现一些自己在编程时没有考虑到的一些情况进行测试。二者针对的情况不同,但在我实践的过程中,都非常有效。

在四个单元的学习过程中,我的测试的质量是在不断提高的,当然我认为这包含着因为对于架构设计思维的提升而引起的关于测试质量的提升。

收获

收获有很多方面,知识只是一个方面。

最直接的,关于面向对象编程,学习到了一种新的不同于之前c语言过程式编程的编程方式,感受到了这种编程方式的特色,同时连带着学习了java这门编程语言。

编程能力有一个整体的提高,积累了很多编程经验,因为确实写了不少代码,当然还有架构设计能力的提升。

特别的,学习了多线程的内容,对于操作系统的学习也有很大的帮助。

最后祝我和课程都越来越好。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值