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类图进行查询.对于查询操作来说自然的想法是提前预见到需要查询的内容,在一开始就采用适当的数据结构将必要的信息进 ...
随机推荐
- 第3章 机器学习的典型应用 3-4 典型应用-ctr预估和协同过滤
ctr预估,用户点击率的预估.这个算法的名字叫ctr预估,但是它背后算法是线性的逻辑回归. 现在的推荐系统除了可能会用关联规则之外,现在还有一些所谓的更新的协同过滤的算法.
- Stream接口
数据读写可以看作是事件模式(Event)的特例,不断发送的数据块好比一个个的事件.读数据是read事件,写数据是write事件,而数据块是事件附带的信息.Node 为这类情况提供了一个特殊接口Stre ...
- 基本算法思想之穷举法(C++语言描述)
穷举算法(Exhaustive Attack method)是最简单的一种算法,其依赖于计算机的强大计算能力来穷尽每一种可能性,从而达到求解问题的目的.穷举算法效率不高,但是适应于一些没有规律可循的场 ...
- HDFS追加文件
配置:hdfs-site.xml <property> <name>dfs.support.append</name> <value>true</ ...
- Centos6.8下yum安装python2.7
下载 ius-release.rpm包 wget https://centos6.iuscommunity.org/ius-release.rpm 安装ius-release.rpm包 rpm -Uv ...
- 8.Struts2-057漏洞复现
漏洞信息: 定义XML配置时如果namespace值未设置且上层动作配置(Action Configuration)中未设置或用通配符namespace时可能会导致远程代码执行. url标签未设置va ...
- Codeforces Round #522 Div2C(思维)
#include<bits/stdc++.h>using namespace std;int a[200007];int b[200007][7];int ans[200007];int ...
- 洛谷P1022 计算器的改良
P1022 计算器的改良 题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了 ...
- 2017-10-2 清北刷题冲刺班a.m
一道图论神题 (god) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,只 ...
- [sql] view plain copy
[sql] view plain copy CREATE TABLE SYS_USER ( USER_CODE VARCHAR( 36 ) NOT NULL, LOGIN_NAME VARCHAR( ...