OO 第四单元总结
一、总结本单元两次作业的框架设计
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 第四单元总结的更多相关文章
- 【OO学习】OO第四单元作业总结及OO课程总结
[OO学习]OO第四单元作业总结及OO课程总结 第四单元作业架构设计 第十三次作业 第十四次作业 总结 这两次作业架构思路上是一样的. 通过将需要使用的UmlElement,封装成Element的子类 ...
- OO第四单元(UML)单元总结
OO第四单元(UML)单元总结 这是OO课程的第四个单元,也是最后一个单元.这个单元只有两次作业,相比前三个单元少一次作业.而且从内容上讲这个单元的作业目的以了解UML为主,所以相对前三个单元比较简单 ...
- OO第四单元总结及课程总结
OO第四单元总结及课程总结 一.前言 紧张刺激的OO“昆仑课程”接近尾声,经过一个学期的学习,我的收获和感触颇多,借此博客作业的机会,对自己OO这门课程做一个总结.本博客主要有以下五个方面,一是第UM ...
- OO第四单元博客作业
OO第四单元博客作业 BUAA_1706_HugeGun 目录 第四单元作业架构设计 四个单元架构设计及OO方法理解 四个单元测试理解与实践演进 课程收获 一点建议 第四单元作业架构设计 ### 第十 ...
- OO第四单元总结及学期总结
目录 OO第四单元总结及学期总结 第四单元三次作业架构设计 第十三次作业 第十四次作业 第十五次作业 四个单元中架构设计及OO方法理解的演进 第一单元 第二单元 第三单元 第四单元 四个单元中测试理解 ...
- OO第四单元——基于UML的UML解析器总结&OO课程总结
OO第四单元--基于UML的UML解析器总结&OO课程总结 前言:一学期愉快(痛苦)的OO课程学习结束了,OO几个单元作业都各有特色,实验也各有特色,仔细回味起来,不再是单纯的敲代码(但自己还 ...
- OO第四单元总结暨期末总结
OO第四单元总结暨期末总结 目录 OO第四单元总结暨期末总结 第四单元三次作业架构与迭代 整体感受 HW1 HW2 HW3 四个单元架构设计与方法演进 Unit1 Unit2 Unit3 Unit4 ...
- oo第四单元作业总结暨课程总结
oo第四单元作业总结暨课程总结 一.本单元作业架构设计 本单元需要构建一个UML解析器,通过对输入的UML类图/顺序图/状态图的相关信息进行解析以供查询,其中课程组已提供输入整体架构及输入解析部分,仅 ...
- 2020 OO 第四单元总结 UML
title: 2020 OO 第四单元总结 date: 2020-06-14 19:10:06 tags: OO categories: 学习 1. 本单元三次作业的架构设计 本单元的代码编写与第三单 ...
- OO第四单元总结与课程总结
OO第四单元总结与课程总结 第四单元作业架构设计 总体分析:本单元作业的需求集中于对UML类图进行查询.对于查询操作来说自然的想法是提前预见到需要查询的内容,在一开始就采用适当的数据结构将必要的信息进 ...
随机推荐
- /* font-awesome-4.7.0的应用*/
<!DOCTYPE html> /* font-awesome-4.7.0的应用*/ <html lang="en"> <head> <m ...
- mysql主从服务器复制操作
master主机ip:192.168.1.19 用户名sunzy 密码123456slave主机ip:192.168.1.20 1.配置master1)接下来对master进行配置,包括打开二进制日 ...
- AT指令集
通用指令 at+cala 设置警报日期和时间 at+cgmi 厂家认证请求,返回模块厂家信 at+cgmm 模式认证请求,返回模块使用频段 at+cgmr 修正认证请求,返回软件版本 at+cg ...
- LSI SAS 3008 Web配置操作
配置 LSI SAS 3008 介绍LSISAS3008的配置操作. 4.1 登录CU界面 介绍登录LSISAS3008的CU配置界面的方法. 4.2 创建RAID 介绍在LSISAS3008扣卡上创 ...
- 【service调用dao层传参的三种方式】
第一种方案:默认数组角标: service Public User selectUser(String name,String area); mapper: <select id="s ...
- C/C++中的static用法总结
C中: 1. static修饰函数中的变量(栈变量):改变变量的生存期,作用域不变仍为所在函数. 只被初始化一次. 2. static修饰全局变量:限制全局变量只能被模块内访问,不可以在别的模块中用e ...
- ASP.NET CORE系列【四】基于Claim登录授权
介绍 关于什么是Claim? 可以看看其他大神的文章: http://www.cnblogs.com/jesse2013/p/aspnet-identity-claims-based-authenti ...
- 浅谈JavaScript--闭包
闭包的概念 由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数". 变量的作用域 要理解闭包,首先必须理解J ...
- 笔记:eclipse的findbugs插件安装成功却不显示
关键字:findbugs eclipse的findbugs插件安装成功却不显示的原因有: 1.插件版本太高,低版本的eclipse不兼容 2.也有可能是JDK版本低 findbugs安装方法: 1.在 ...
- CPU死锁
https://blog.csdn.net/sunny05296/article/details/82858071 最近碰到了Centos7.2上终端打印soft lockup CPU死锁,系统无响应 ...