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

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. 各种浏览器下的user-agent

    ie11Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko safariMozilla/5.0 (Macintos ...

  2. CSS 布局_如何实现容器中每一行的子容器数量随着浏览器宽度的变化而变化?

    实现一个浮动布局,红色容器中每一行的蓝色容器数量随着浏览器宽度的变化而变化,就如下图: 要实现这样一个布局,我们首先需要如下的 HTML: <div id="float-contain ...

  3. assert.fail()

    assert.fail(message) assert.fail(actual, expected[, message[, operator[, stackStartFunction]]]) oper ...

  4. day1_2_3

    DD烧写命令(mfgtools-without-rootfs.tar.gz) ubuntu minicom svn 应用层进程阻塞调试 多机共享 securecrt的远程登录以及调试 tengxunt ...

  5. window.parent ,window.top,window.self 详解及parent和opener的区别

    window.parent ,window.top,window.self 详解 在应用有frameset或者iframe的页面时,parent是父窗口,top是最顶级父窗口(有的窗口中套了好几层fr ...

  6. TMF SID中的角色模式

    角色模式 Copyright © TeleManagement Forum 2013. All Rights Reserved. This document and translations of i ...

  7. vue里的tab标签

    <template> <div class="Test2"> <div class="tabs_wrap" v-model=&qu ...

  8. HBase HA + Hadoop HA 搭建

    HBase 使用的是 1.2.9 的版本.  Hadoop HA 的搭建见我的另外一篇:Hadoop 2.7.3 HA 搭建及遇到的一些问题 以下目录均为 HBase 解压后的目录. 1. 修改 co ...

  9. 2017-10-7 清北刷题冲刺班a.m

    测试 A 消失的数字 文件名 输入文件 输出文件 时间限制 空间限制del.cpp/c/pas del.in del.out 1s 512MB题目描述现在,我的手上有 n 个数字,分别是 a 1 ,a ...

  10. oracle例程

    原创转载请注明出处 启动例程: 数据库启动例程的3个步骤 启动例程(NOMOUNT状态):读取参数文件,分配SGA和启动后台进程. 装载数据库(MOUNT状态):根据初始化参数control_file ...