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

这两次作业实际上难度不大,不存在算法上的难题,大部分时间都是用在处理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. Golang入门学习(二):控制分支

    文章目录 @[TOC] 1. 控制分支 1.1 if-else分支 1.2 switch分支 1.4 while 和do...while循环结构 1.5 多种循环结构 1.6 break 1.7 co ...

  2. sqlite数据库的基本用法及C语言的API接口简介

    ********************sqlite数据库******************** http://www.sqlite.org/c3ref/intro.html 1-- 安装数据库: ...

  3. tar 命令简介

    tar命令可以为linux的文件和目录创建档案.利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件.tar最初被用来在磁带上创建档案,现在,用户可以在 ...

  4. C# Dapper基本三层架构使用 (三、DAL)

    数据访问层(DAL),主要是存放对数据类的访问,即对数据库的添加.删除.修改.更新等基本操作 首先需要在UI层App.Config配置文件中增加连接字符串,如下所示 <connectionStr ...

  5. LeetCode通关:连刷十四题,回溯算法完全攻略

    刷题路线:https://github.com/youngyangyang04/leetcode-master 大家好,我是被算法题虐到泪流满面的老三,只能靠发发文章给自己打气! 这一节,我们来看看回 ...

  6. 从 1 开始学 JVM 系列 | JVM 类加载器(一)

    从 1 开始学 JVM 系列 类加载器,对于很多人来说并不陌生.我自己第一次听到这个概念时觉得有点"高大上",觉得只有深入 JDK 源码才会触碰到 ClassLoader,平时都是 ...

  7. python win32com 处理excle 写一个公共的类

    利用win32com处理excle,这样可以不管文件是老的xls还是新的xlsx格式,非常方便. 类的源码如下: import win32com.client as win32 class easyE ...

  8. 深入xLua实现原理之Lua如何调用C#

    xLua是腾讯的一个开源项目,为Unity. .Net. Mono等C#环境增加Lua脚本编程的能力.本文主要是探讨xLua下Lua调用C#的实现原理. Lua与C#数据通信机制 无论是Lua调用C# ...

  9. electron-vue 开发问题合集

    (一)Found 'electron' but not as a devDependency, pruning anyway 原因:对electron没有严格要求的话可以忽略,不影响打包,但会影响第三 ...

  10. 【C++基础教程】第五课

    上次的作业答案,非常简单. 第一题: 我们需要知道,字符(char类型)在计算机中存储的时候,是把这个字符对应的代码(专业术语叫做编码)进行存储.例如,换行符'\n'的代码就是10,'0'对应的代码就 ...