一、总结本单元两次作业的框架设计

1.1. 需求分析

  通过分析mdj文件可知,两次作业如果对于时间复杂度没有要求,可以不涉及任何数据结构,直接根据读入的UML_ELEMENT逐个分析得到各个函数的结果。

由此观之,两次设计的目标其实都是缩短数据查询与访问速度(不在需要通过id去全文遍历),以类间关联关系增加数据的关联程度。

1.2.1 第一次作业

  本次作业围绕类图展开,因此设计了MyClassAndInterface类,类中持有了除其自身信息外:属性、方法、关联、实现、继承这五种关系相关信息。

1.2.2 第二次作业

  本次作业在前一次作业的基础上新增了类图规则检查、顺序图和状态图的解析。

  UmlRuleChek中对于循环继承和重复实现的实现中,应用了离散数学中类似查环的方法。

  顺序图、状态图的解析和第一次作业中极为相似,仍然可以用bfs或者递归解决。

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

2.1 第一单元 : 表达式求导

  第一次大作业中由于处理输入内容过多,让我最初误以为这门课的难点在于处理输入数据。但是经过第三次作业后,我发现输入数据与要求已经复杂到仅凭观察算式难以判断了。这也就诞生了两种输入有效性检查方式:1.处理前统一检查,2.处理中逐层检查。两种方式各有利弊:统一检查在代码物理范围上相对集中,但是不如逐层检查逻辑清晰,而且难以与需求产生一一对应关系。反思出现这种情况的根本原因在于输入的处理与整合其实就是抽象的过程,如果采取处理前统一检查,那么处理算法面对的是未经过任何抽象过的数据结构:一段朴实无华的字符串。而如果在抽象过程中逐层检查,就相对方便得多。

2.2 第二单元 : 多线程电梯

  这次作业主要依靠着concurrent中线程安全的LinkBlockedQueue勉强度日。似乎使用了他人已有的线程安全库屏蔽了许多这个单元的乐趣,因此本单元除了学习了生产者-消费者模型这种抽象设计模式意外并没有太多的收获了。

2.3 第三单元 :JML

  第三、四单元开始,我们学习着配合着开源库进行开发。自然也就没有了什么架构设计,主要重点在于图算法的相关实现。

2.4 第四单元 : UML

  对于第四单元的用意,我认为对于UML具体理解要大于代码本身。当然不用从原始mdj处理数据确实大大的幸运。本单元仍然是简单的方法实现,会涉及到少量图知识。

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

2.1 第一单元 : 表达式求导

  本单元测试方法相对多样,我采取了黑盒测试:自动随机生成字符串 + matlab模拟评测机对拍。本以为会挑出很多bug,但是最后发现还是手动编写了一些边界测试来的简单。因此产生了对白盒测试的需求

2.2 第二单元 : 多线程电梯

  本单元主要利用评测姬进行测试。

2.3 第三单元 : JML

  这个单元是测试最为欢乐的一个单元。我们可以采用JUNIT以方法为单位进行测试。同时我们可以用JMLUnitNg+JML自动生成测试用例,但是进行过程和想象相去甚远,遇到了许多如今都没有解决的问题。

2.4 第四单元 : UML

  又回归朴实的手动构造测试数据,毕竟StarUml还蛮好玩的 :)

四、总结自己的课程收获

  本次课程确实改变了我对于“代码长度”的认识。

  同时体会到了编写代码并不仅仅局限于敲代码,其背后竟然还蕴含着深邃的思想。

  更有趣的是刷新了我对于程序“”正确性“的理解,一个正确的程序不仅仅可以通过简单的几个测试用例,还应该可以通过压力测试等等。

五、立足于自己的体会给课程提三个具体改进建议

  首先,实验课的设置不好。无论从与理论课的相对时间、到实验内容所需时间似乎都缺乏考量。

  其次,毕竟是课程新改革第一年,尤其觉得三、四单元内容较为匮乏。可以看出命题时不得已用问题的算法难度和知识广度来弥补。

  最后,希望邀请行内大佬的讲座多一些。

  

OO 第四单元总结的更多相关文章

  1. 【OO学习】OO第四单元作业总结及OO课程总结

    [OO学习]OO第四单元作业总结及OO课程总结 第四单元作业架构设计 第十三次作业 第十四次作业 总结 这两次作业架构思路上是一样的. 通过将需要使用的UmlElement,封装成Element的子类 ...

  2. OO第四单元(UML)单元总结

    OO第四单元(UML)单元总结 这是OO课程的第四个单元,也是最后一个单元.这个单元只有两次作业,相比前三个单元少一次作业.而且从内容上讲这个单元的作业目的以了解UML为主,所以相对前三个单元比较简单 ...

  3. OO第四单元总结及课程总结

    OO第四单元总结及课程总结 一.前言 紧张刺激的OO“昆仑课程”接近尾声,经过一个学期的学习,我的收获和感触颇多,借此博客作业的机会,对自己OO这门课程做一个总结.本博客主要有以下五个方面,一是第UM ...

  4. OO第四单元博客作业

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

  5. OO第四单元总结及学期总结

    目录 OO第四单元总结及学期总结 第四单元三次作业架构设计 第十三次作业 第十四次作业 第十五次作业 四个单元中架构设计及OO方法理解的演进 第一单元 第二单元 第三单元 第四单元 四个单元中测试理解 ...

  6. OO第四单元——基于UML的UML解析器总结&OO课程总结

    OO第四单元--基于UML的UML解析器总结&OO课程总结 前言:一学期愉快(痛苦)的OO课程学习结束了,OO几个单元作业都各有特色,实验也各有特色,仔细回味起来,不再是单纯的敲代码(但自己还 ...

  7. OO第四单元总结暨期末总结

    OO第四单元总结暨期末总结 目录 OO第四单元总结暨期末总结 第四单元三次作业架构与迭代 整体感受 HW1 HW2 HW3 四个单元架构设计与方法演进 Unit1 Unit2 Unit3 Unit4 ...

  8. oo第四单元作业总结暨课程总结

    oo第四单元作业总结暨课程总结 一.本单元作业架构设计 本单元需要构建一个UML解析器,通过对输入的UML类图/顺序图/状态图的相关信息进行解析以供查询,其中课程组已提供输入整体架构及输入解析部分,仅 ...

  9. 2020 OO 第四单元总结 UML

    title: 2020 OO 第四单元总结 date: 2020-06-14 19:10:06 tags: OO categories: 学习 1. 本单元三次作业的架构设计 本单元的代码编写与第三单 ...

  10. OO第四单元总结与课程总结

    OO第四单元总结与课程总结 第四单元作业架构设计 总体分析:本单元作业的需求集中于对UML类图进行查询.对于查询操作来说自然的想法是提前预见到需要查询的内容,在一开始就采用适当的数据结构将必要的信息进 ...

随机推荐

  1. 关于audio.js的研究

    ——杂言:audio.js结合使用html5的audio组件实现了音频的原位播放功能.虽然项目里已经使用一段时间了,不过我是最近才开始有所接触,惭愧.个人见解若有不对,请帮忙纠正,谢谢. 官方相关链接 ...

  2. 解决PCL MLS : error LNK2019; error LNK2001 virtual MovingLeastSquares process performProcessing问题

    PCL 基于多项式拟合的法线估计.点云平滑和数据重采样 在使用Window VS2010为开发平台,学习PCL点云库的时候,学到曲面重建(Surface).在测试下面的程序的时候,遇到了问题. #in ...

  3. 《精通Spring4.X企业应用开发实战》读后感第五章(通过编码方式动态添加Bean)

  4. 使用Cors后台设置WebAPI接口跨域访问

    昨天根据项目组前端开发工程师反映,在浏览器端无法直接使用ajax访问后台接口获取数据,根据他的反映,我查阅了相关跨域的解决方案: 一:使用jsonP,但是jsonP只能使用GET请求,完全不符合我项目 ...

  5. IDEA拷贝git上的最新项目资源

    File->new ->project version control->git-> 进入项目git对应的网址,选择第一个backstop,复制url: 输入git用户名和密码 ...

  6. rest framework 节流

    一.简单节流示例 所谓节流就是控制用户访问频率,这里分为匿名用户(非登录用户)和登录用户的限制. 匿名用户:根据其 IP 限制其频率 登录用户:IP.用户名都 OK 获取用户请求 IP:request ...

  7. SqlServer(带中文注释)

    using System;using System.Data;using System.Xml;using System.Data.SqlClient;using System.Collections ...

  8. Linux 最小系统挂载U盘(SD、TF卡)并执行程序

    一.在Ubuntu下编译C文件 使用指令"arm-none-linux-gnueabi-gcc-4.4.1 -o HelloWorld HelloWorld.c -static"编 ...

  9. PHP现阶段发现的不足点

    1.php测试单元的实现(参考文档:https://blog.csdn.net/weixin_41282397/article/details/85052015)

  10. 2017-10-1 清北刷题冲刺班p.m

    一道图论好题 (graph) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图 ...