一、UML作业架构设计

1、第一次作业

其中 Main 是入口类,MyUmlinteraction实现了接口,UmlInteractionBase为MyUmlinteraction实现提供了底层功能,MyClass和MyMethod是一些UML元素的包装。下面是具体实现。

2、第二次作业

自己对三类不同的UML图分别进行了建模。另外自己将接口实现和核心功能提供分开处理。最后运用组合设计模式来实现总的功能。

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

1、第一单元

自己第一单元并没有使用什么框架,主要是使用了接口作为各种函数的类型而可以统一处理,这样节省了许多无聊代码。

2、第二单元

自己的设计基于 blockqueue 框架。且三次作业都是同一个设计策略。

核心数据结构是一个阻塞队列,用于保存请求队列,其他模块主要是与该队列交互。

请求生成器:用于获得请求,并将请求加入请求队列。

请求调度器:用于将请求派给不同的电梯。

电梯:用于处理被分配的请求。

在第二次作业时,只是修改了电梯对于执行请求的策略,增加了捎带功能。

在第三次作业时,只是复制了两部电梯,其行为模式完全相同,但是请求调度器给其分配的请求种类有差别。另外,乘客在下电梯时,若其没到最终目的地,则由电梯修改其出发地后将请求加入队列。请求调度器无法区分由电梯加入的请求和请求生成器加入的请求。

3、第三单元

自己使用了分层接口来分解功能,并分层实行,使得可以把一个复杂的功能分解为从低层到高层的功能来逐步实现,易于实现和维护。

4、第四单元

自己将三种UML图分别建模,然后在一个总UML模型类中组合这些不同的UML图。

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

1、第一单元

自己没有采用系统性的测试策略来覆盖所有代码执行路径,只是随机想了几个数据点。在代码简单时这种策略似乎还可以,但是在代码稍微复杂一些时,我为此吃了苦头:自己互测时被?的好狠啊,结果只要一行代码就全部搞定了。如果自己做了覆盖性测试,就不会这样了。就是这个单元,让我明白了测试的重要性,让我明白了测试是代码编写的不可分割的重要一部分。

2、第二单元

这个单元我用了单元测试,可是对于多线程测试,确实发现其测试非常棘手。并且对于互测中发现的bug自己无法复现。这让我明白,如何做好测试也是非常需要思考的。如何看出bug样例的模式,并用最简单的样例复现错误,这是非常功夫的。

3、第三单元

第三单元我用了单元测试,并且使用了一定的测试策略,这次的效果还是可以。但是这个单元其实是JML的形式验证,但是自己感觉这个并不能很好发现bug。往往写出正确的规格需要对问题的很好理解,而bug的原因有很多是对问题的理解程度不够,因此我感觉JML规格除了让机器帮忙检查代码一致性问题外,在自己手中并不能发挥很大的作用。

4、第四单元

由于是在考期,自己没时间进行覆盖性测试,第一次还好,第二次就果然凉凉!看来自己必须把测试看作是编码的一部分,或许可以考虑先写测试。

四、课程收获

这学期的OO自己感觉学到了不少东西。首先自己学会了java语言的基本操作。并且自己学会了OO的思想,学会了多线程编程,还了解了JML和UML。回想自己奉献给OO的多少个周末,多少个凌晨,现在回想起来,感觉还是颇值。

五、具体改进建议

1、实验作业的定位不够清晰。这学期早上学习新内容,下午做实验,但是自己做完实验后是懵逼的,感觉时间很紧。个人觉得如果实验的目的不是考核,而是帮助理解所学内容的话,应该允许实验内容没有做完的可以课后继续做,且给出答案,这样利于进步。

2、JML单元感觉有些不够完善。自己是体验了不少内容,可是只是限于体验而已。

3、研讨课交流环节互相可以改为小组交流或者代码评审。

转载于:https://www.cnblogs.com/yorkyer/p/11079169.html

OO第四单元博客作业相关推荐

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

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

  2. 【BUAAOO】第四次博客作业

    [BUAAOO]第四次博客作业 说点闲话 繁忙了一个学期的面向对象课程终于快要正式结束了,虽然忙,却苦乐参半.许多"第一次"献给了OO--第一次熬夜,第一次高强度代码训练,第一次独 ...

  3. OO第三次博客作业——规格

    OO第三次博客作业--规格 一.调研结果: 规格的历史: 引自博文链接:http://blog.sina.com.cn/s/blog_473d5bba010001x9.html 传统科学的特点是发现世 ...

  4. [BUAA OO]第三次博客作业

    OO第三次博客作业 1. 规格化设计的发展 我认为,规格化设计主要源自于软件设计的两次危机.第一次是由于大量存在的goto语句,让当时被广泛应用的面向过程式的编程语言臃肿不堪,在逻辑性上与工程规模上鱼 ...

  5. 2022北航敏捷软件工程 第四次博客作业

    2022北航敏捷软件工程 第四次博客作业 项目 内容 这个作业属于哪个课程 2022年北航敏捷软件工程 这个作业的要求在哪里 个人作业-提问回顾与个人总结 我在这个课程的目标是 了解软件工程的方法论. ...

  6. OO第三次博客作业---透过代码看设计

    不得不说的JSF 经过前几次作业的煎熬.出租车的代码量不断地增多.而出租车问题在不断的完善,这也就牵涉到一个问题,那就是最初出租车程序的设计问题,如果一开始设计的就有问题的话,那么在后来的过程中就会遇 ...

  7. 第四次博客作业:bookstore缺陷报告

    Bookstore系统集成测试缺陷报告 -------------------------------------------------------------------------------- ...

  8. OO第四单元作业总结

    第四次博客作业 本单元架构设计 第一次作业 在自己尝试画了第一次作业的类图后,发现自己作业的架构依旧混乱不堪.第一次作业中,我总共建了四个类,除去MyUmlInteraction类外,ClassRel ...

  9. OO--第三单元规格化设计 博客作业

    OO--第三单元规格化设计 博客作业 前言 第三单元,我们以JML为基础,先后完成了 PathContainer -> Graph -> RailwaySystem 这是一个递进的过程,代 ...

最新文章

  1. python 获取集合里面的某一个元素
  2. LINUX 基础命令 一
  3. Android   Fragmnet的使用新体会
  4. 选择ButterKnife,告别findViewById
  5. python 类-python 类如何使用
  6. svn强制要求提交注释
  7. 洛谷-P1160 队列安排
  8. 爬虫-csdn博客爬虫-打造具有搜索功能的小工具
  9. JDWP Transport dt socket failed to initialize
  10. c语言编程 排序,C语言编程-9_3 排序
  11. selenium+java:获取列表中的值
  12. SQL Server补丁版本的检查
  13. Java进阶:SpringMVC拦截器
  14. ACR122U写卡软件v3.6绿色版
  15. 中秋之际献上【中秋快乐】藏头诗
  16. windows10 cortana 不能搜索解决办法
  17. 年薪50W+的Python程序员如何写代码
  18. Matlab求解矩阵方程
  19. python 日常记录笔记
  20. STC8PMW波输出

热门文章

  1. java pid 获取句柄_获取进程pid、根据进程pid获取线程pid、获取线程进程句柄
  2. django分页模块
  3. MySQL约束课堂笔记
  4. python 向量_关于Python中的向量相加和numpy中的向量相加效率对比
  5. java对.txt文件进行读取方法实战---室友是网络安全方向,帮他提取文件里的特定ip
  6. 数字图像噪声_Python
  7. spark之5:配置文件
  8. 地理数据库 (geodatabase) 的架构
  9. Unix网络编程之IO模型
  10. GBDT和随机森林的区别