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

这两次作业实际上难度不大,不存在算法上的难题,大部分时间都是用在处理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. IKEv2协议关键知识点总结整理

    文章目录 @[toc] 1. IKEv2基本原理 2. IKEv2协议重点注意事项 2.1 情景一:==IKEv2协商密钥逻辑== ①密钥协商流程 ②函数调用关系 ③流程简述 2.2 情景二:==使用 ...

  2. 快速模式第一包: quick_outI1()

    文章目录 1. 序言 2. quick_outI1()流程图 3. quick_outI1()源码分析 4. quick_outI1_continue()源码分析 5. quick_outI1_tai ...

  3. TypeScript 中高级类型的理解?有哪些?

    一.是什么 除了string.number.boolean 这种基础类型外,在 typescript 类型声明中还存在一些高级的类型应用 这些高级类型,是typescript为了保证语言的灵活性,所使 ...

  4. struts2执行流程和架构图

    一.struts2执行流程 二.架构图 只需要编写黄色部分的代码:

  5. linu命令进阶篇

    预备知识: 本实验要求实验者具备如下的相关知识. 前面我们学习了linux的文件系统,了解的文件系统的结构,也学了linux档案的属性和权限,以及其设定. 当我们执行命令操作一个文件的时候,却不知道这 ...

  6. 远程线程注入DLL突破session 0 隔离

    远程线程注入DLL突破session 0 隔离 0x00 前言 补充上篇的远程线程注入,突破系统SESSION 0 隔离,向系统服务进程中注入DLL. 0x01 介绍 通过CreateRemoteTh ...

  7. 在windows中给git修改默认的编辑器为sublime

    首先,需要配置sublime的为环境变量,这是为了让git能通过命令调用sublime.也可以写一个.bat脚本.然后,让git调用bat脚本也可以 配置环境变量path到subl.exe的目录 脚本 ...

  8. python 打字小游戏

    最近随便用python的pygame编了这个打字小游戏 只要有字母调到窗口底部就结束 上代码: import pygame.freetype import sys import random pyga ...

  9. GCN数据集Cora、Citeseer、Pubmed文件分析

    简介 本文将对Cora.Citeseer.Pubmed 数据集进行详细介绍 Cora.Citeseer.Pubmed 数据集 来源 图 节点 边 特征 标签(y) Cora "Collect ...

  10. Linux系列(33)- rpm命令管理之RPM包校验提取(5)

    校验 格式 rpm -V 已安装的包名 选项: - -V:校验指定RPM包中的文件(verify) 例子 rpm -V httpd 后, 无任何提示, 代表该文件没有被做任何修改 # 判断本地的apa ...