一. 本单元两次作业架构设计

这两次作业实际上难度不大,不存在算法上的难题,大部分时间都是用在处理UML图中各个元素的关系上。

第一次UML主要处理UML类图。有UMLclass,UMLinterface两个顶级元素,其中UMLclass又下属UMLoperation等组成元素。此外的UMLgeneralization,UMLassociation等则是顶级元素间的关系。

完成本次作业,我觉得主要在于理清上述元素间的关系。

第一次作业实现后的关系图如下:

而第二次作业则是在第一次作业的基础上加入了顺序图等,只需理清各种图中所含元素与关系,自然就能完成需求。

第二次图如下:

二. 四个单元中架构设计及OO方法理解的演进

oo是将事件分解为各个对象间的交互,事件的推进是经由外界条件触发(在我们的作业中表现为各个需求的输入),每个对象的具体行为以及对象间的耦合行为。

我认为,对于面型对象编程,具体到对象的底层行为以及对象间的交互行为,是封装好的面向过程的函数,面向对象与面向对象的区别应该在于将行为与行为的主体、客体相分离而非混在一起。

在第一单元的作业中,我们学习的是将表达式求导这一事件的表达式,分解为项、因子等更加小的对象进行耦合处理。在前两次作业中,我们主要是将每个对象分别处理再相加即可,而在第三次作业,由于需要使用递归下降,我们开始注意对象间的耦合关系。

在第二单元的作业中,我们学习的是多线程环境下的面向对象。在多线程环境下,每个线程都是由对象耦合得到的,而不同线程间往往还有共有的对象,在这里我们需要保证操作的原子性。在该次作业中,我使用了生产消费者模型,将顾客队列作为生产者,多部电梯每一部作为一个消费者来完成,但是对于电梯对顾客队列的询问没能处理好。

在第三单元的作业中,我们主要学习了JML,它可以帮助我们约束代码。在这一单元的作业中,我们除了JML外也开始在oo中加入一些算法。我将算法模块作为了一个单独的对象进行处理。

在第四单元的作业中,我们完成了UML的解释器,因为UML本身就是面向对象的产物,这一单元相对简单,只需要理清各元素间关系即可。这一次是我觉得我的对象分割处理得最好的一次。

三. 四个单元中测试理解与实践的演进

这方面我做的不太好,我在建模时考虑的比较细,一般第一次提交后只会有一些小bug,处理一些细节问题后边不太会有问题,所以对于数据测试这方面没有下太多功夫,只是做了基本的数据测试。对于如何测试,学会了一些基于控制台的测试方法。

四. 课程收获

学会了Java,学会了基本的面向对象,学会了一些测试时的小技巧。

五. 改进建议

1. 课程时间的协调。oo的理论课在后期多次拖堂,我认为应该根据课堂时间对内容进行一些详略调整;对于oo的作业,其时间和os有相当的重合,作为大二下六系的两门大课,不应该将时间进行一下协调吗?同时在大多数时候,oo的上机都是上午讲,下午测试,中间就隔了两小时,这种安排极不合理,上机时一脸懵逼,根本起不到什么效果(这是我和我周围宿舍的同学的反应,代表不了大多数人)。

2. oo作业相关问题。首先需要安排好作业的时间,本学期考期写大作业简直要人命,我记得大约是16号左右才发布能够真正知道同学们的指导书,里面仍有相当多的问题,比如样例中例子与给出的答案不匹配误导了一部分同学,等等。此外希望能够减少改指导书的次数,在学期初期多次修改指导书。

3. 互测房间人数过多,虽然是想增加我们的代码阅读量,但是也要考虑主观能动性,每周看6份代码,还要求我们找出bug,难道我们其他课都不上了吗?这导致最后互测积极度明显下降。

oo第四次博客-UML暨学期总结的更多相关文章

  1. 北航OO(2020)第四单元博客作业暨学期总结

    一.第四单元架构设计 1.第一次作业 我在本次作业中设置了多个储存结构:Directory,ElementsInName,ElementsInId,Cache. Directory: 顾名思义,这是个 ...

  2. 第四单元博客总结——暨OO课程总结

    第四单元博客总结--暨OO课程总结 第四单元架构设计 第一次UML作业 简单陈述 第一次作业较为简单,只需要实现查询功能,并在查询的同时考虑到性能问题,即我简单的将每一次查询的结果以及递归的上层结果都 ...

  3. OO第四次博客作业!

    oo第四次博客作业 一.测试与正确性论证比较 测试只是单方面片面的证明对于当前的输入程序是正确的,测试只能证明程序有错误,不能说明程序是对的. 正确性论证是程序达到预期目的的一般性陈述,是通过规范化的 ...

  4. OO第四单元博客作业

    OO第四单元博客作业 BUAA_1706_HugeGun 目录 第四单元作业架构设计 四个单元架构设计及OO方法理解 四个单元测试理解与实践演进 课程收获 一点建议 第四单元作业架构设计 ### 第十 ...

  5. OO第四单元博客

    第四单元博客 这个单元的作业,emmmm助教们做的工作还是一如既往的多,我们只负责添一添代码,最后一次作业了,感谢各位助教和老师,同时也希望我能顺利通过这最后一关. 架构设计 第一次作业架构展示 第一 ...

  6. OO第四次博客作业(第四单元作业及期末总结)

    (注意:本文写作顺序与作业要求不完全一致,但涵盖了作业的所有要求) 一学期的BUAA特色OO课程结束了. PART 1  我想先写我这一学期的感想 从第一单元满怀期待地写完多项式求值到最后看着60分不 ...

  7. oo第四次博客

    一.测试与正确性论证比较 正确性论证是论证程序达到预期目的的一般性陈述,而该论证与程序输入数据的特定值无关,能够代表穷举性测试. 程序测试是指测试者特意跳出一批输入数据,通过运行程序,检查每个输入数据 ...

  8. [BUAA OO]第四次博客作业

      一.      测试与正确性论证的区别 在最后一个单元的OO作业中,我们主要进行了代码的测试与正确性论证工作.这俩者在作业中的体现分别是junit单元测试以及jsf论述语言.这两者在java代码开 ...

  9. 迎来OO的曙光,总结规格的意义——OO第四次博客总结

    一切都要结束了,砥砺前行~ 一.测试与正确性论证的效果差异 测试,顾名思义就是我们暴力用大量数据轰炸编写的程序的过程.日常的OO过程中,我们经常互相寻求“测试集”,正是因为测试使用特定数据对我们的功能 ...

随机推荐

  1. IDEA创建Maven项目做Java Web时无WEB-INF/classes的问题

    昨天开始学习Java Web中的Servlet,学到用IntelliJ IDEA创建Java Web项目时,跟着课程上老师的步骤一步步做,却发现运行时Servlet找不到.坑爹的是,练习建项目时,一模 ...

  2. HCNP Routing&Switching之IS-IS邻居建立、LSDB同步、拓扑计算和路由形成

    前文我们了解了IS-IS的报文结构和类型相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15260670.html:今天我们来聊一聊IS-IS建立邻居. ...

  3. 排查dubbo接口重复注销问题,我发现了一个巧妙的设计

    背景 我在公司内负责自研的dubbo注册中心相关工作,群里经常接到业务方反馈dubbo接口注销报错.经排查,确定是同一个接口调用了两次注销接口导致,由于我们的注册中心注销接口不能重复调用,调用第二次会 ...

  4. Consul+Ocelot+Polly在.NetCore中使用(.NET5)-Consul服务注册,服务发现

    环境 .NET5,Consul_v1.10.2 一.简介 在微服务中利用Consul可以实现服务的注册,服务发现,治理,健康检查等. Web调站点需要调用多个服务,如果没有Consul,可能就是Web ...

  5. JAVA修饰符优先级先后顺序规范

    在实际的开发中,会遇到定义静态常量时,有的人使用的修饰符顺序不一致,例如 ... static final ... 或者 ... final static ... 于是找到了下规范,分享下 优先级 修 ...

  6. php发送邮件方法-亲测可用,email.class.php过期解决办法

    php虽然提供了mail()函数,但并不好用,而PHPMailer是一个不错的邮件发送工具,使用起来也是非常简单!使用PHPMailer发送邮件: <?php header("cont ...

  7. modern php closure 闭包

    * 在array_map()函数中使用闭包 <?php $numbersPlusOne = array_map(function($number) { return $number + 1; } ...

  8. appium日志

    2020-10-02 00:44:10:672 [Appium] Welcome to Appium v1.16.0 2020-10-02 00:44:10:673 [Appium] Non-defa ...

  9. 『PyTorch』屌丝的PyTorch玩法

    1. prefetch_generator 使用 prefetch_generator库 在后台加载下一batch的数据,原本PyTorch默认的DataLoader会创建一些worker线程来预读取 ...

  10. 详细的vsftpd配置

    环境:CentOS 5.0 操作系统一.安装:1.安装Vsftpd服务相关部件:[root@KcentOS5 ~]# yum install vsftpd*Dependencies Resolved= ...