第四次oo博客作业
(1)本单元是撰写UML数据分析器,架构大致如下,在指导书要求的函数外,对于UmlClass类,Umlinterface类,以及状态机,顺序图这四个类重现构造一个类,这个类里有他们所需要的全部信息,另外还有三个check类和操作类,一遍提高代码的可读性。
(2)第一个单元,我根本不知道何为架构,我每次代码都用的一个poly类(行数不够就分一个类出去,分担一下好引用的函数),第二次作业是电梯,电梯作业其实还是架构很清晰的,但是我在那个时候不是很会哟用继承,导致出现了一些bug,因此从第三次作业开始我开始使用继承这一功能,同时每次写之前会仔细思考需要用到哪些类,然后他们之间的关系是什么样的,我应该怎样关联他们都会仔细思考,也就导致虽然比第一个单元难,但是代码更好写,更好读,更方便debug,同时一个类不会很长,但是类的数量大大增加。
(3)测试这东西在oo之前我真的没怎么进行过,偶尔会对几十行的c语言代码进行调试,想oo这种大作业大代码量的调试从未进行过,所以一开始其实是很懵的。后来在第二单元学会了写评测机去进行对拍测试,第三单元后学会了用专用的JUnit配合JML规格进行测试,这种方法效率很高。同时对代码进项架构化设计和,debug可以按照区域去de,也比直接看500行好受多了。
(4)收获真的比我想象中的多,早有听闻oo的“恶名“,但是这学期改进了太多,让我感觉真的学到了东西。Java的使用变得无比熟练,从一开始的不会debug变成后来的debug小能手,从开始的毫无架构,变成现在的写代码先想架构,还有学会了JML的使用,学会了去看UML图,学会了多线程撰写,学会了永不放弃,只要努力,一定能写出好的代码等等!
(5)三个具体建议
一:不要把多项式求导放在第一单元,其实仔细思考下来,多项式求导的第三次作业才是整个oo作业难度峰值,应该放在第二单元或者第三单元去,那个时候大家的水平有了提高,同时那个时间段不会特别忙,更容易写出高质量的代码,起到锻炼效果。
二:最后一次作业其实蛮有趣的,建议把这种作业的标准再明确,不要让指导书里出现太多的非议,或者老师可以在课上对这一部分进行说明,解决大家的由于语文导致的问题。
三:第三单元作业对于算法的要求太高了,希望能降低一点难度,更偏向于读JML规格化,可以考虑在指导书中不明确每一个函数的用处,主要让学生通过读JML去理解(这就要求JML必须是对的),这样可能更有意义一些。
其实上学期很多学长们都说oo非常魔鬼,但是目前开来不是那么魔鬼,课程组和助教都对这门课尽心尽力,使它现在变的很优秀。感谢老师和助教一直以来的努力,辛苦了。如果让我评价这门课,我会说我很喜欢,学到了很多东西!最后祝oo越来越好!
第四次oo博客作业的更多相关文章
- OO博客作业-《JML之卷》
OO第三单元小结 一.JML语言理论基础以及应用工具链情况梳理 一句话来说,JML就是用于对JAVA程序设计逻辑的预先约定的一种语言,以便正确严格高效地完成程序以及展开测试,这在不能容忍细微错误的工程 ...
- OO博客作业1:第1-3周作业总结
(1)基于度量来分析自己的程序结构 注:UML图中每个划分了的圆角矩形代表一个类或接口,箭头可代表创建.访问数据等行为.类的图形内部分为3个部分,从上到下依次是类的名称.类包含的实例变量(属性).类实 ...
- BUAA_OO第四单元总结性博客作业——UML(Floyd实现规则检查?)
一.架构设计 1.UML第一次作业——类图 第一次作业基于不同element在UML规格中的从属关系来设计架构.继承了UmlInteraction接口的MyUmlInteraction类是主要的交互层 ...
- OO博客作业3:第9-11周作业总结
一.总结介绍规格化设计的大致发展历史和为什么得到了人们的重视 1.规格化设计的大致发展历史 规格化设计,又称契约式设计,最早由Bertrand Meyer于1986年提出,出自于<面向对象软件构 ...
- OO博客作业4:第13-14周作业总结
一.论述测试与正确性论证的效果差异,比较其优缺点 测试是设计若干组测试用例,运行程序并检验其是否完成预期功能.测试是一种直接发现BUG的方法,可以准确断定什么样的BUG会发生,并通过辅助调试进一步确定 ...
- 第一次oo博客作业--表达式求导
(1)说实话我这部分真的不知道写些什么,因为我只有第三次作业写了两个类,前两次都是一个类,一个类的好处可能也就是写起来比较方便(不用抽象什么共性了,直接c语言莽过去),缺点很多,架构不清晰,可读性不高 ...
- 第四次oo博客
论述测试与正确性论证的效果差异 单元测试利用测试者构造的测试用例来检查类或方法的正确性,一般来说所需要测试的用例是无穷多的,通过人为构造代表性的测试用例来尽量测试所有代码.测试的优点在于不易出错,只要 ...
- OO博客作业2:第5-7周作业总结
(1)从多线程的协同和同步控制方面,分析和总结自己三次作业来的设计策略及其变化. 第5次作业:多线程电梯 基本照搬了课件上“生产者-消费者”模型的设计策略,将InputHandler设计为生产者线程, ...
- 第二次oo博客作业--多线程电梯
这次的系列作业是写一个电梯调度,主要目的是让我们熟悉多线程. 第一次作业是一个傻瓜电梯的调度问题,要求也很简单,即每次接一个人就行了.我只用了两个线程,一个是输入线程,一个是电梯线程,输入线程负责从标 ...
随机推荐
- Go的切片:长度和容量
虽然说 Go 的语法在很大程度上和 PHP 很像,但 PHP 中却是没有"切片"这个概念的,在学习的过程中也遇到了一些困惑,遂做此笔记. 困惑1:使用 append 函数为切片追加 ...
- 团队作业-Alpha版本发布2
团队项目-系统设计 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience/homework 这个作业要 ...
- 如何用Git.io来生成自定义后缀名的短网址
如何用Git.io来生成自定义后缀名的短网址 git.io是Github的官方短网址,它是用来缩短Github上项目的网址. 效果:Git.io/wacsh将会跳转到https://xhemj.git ...
- SUSE Linux Enterprise 11 离线安装 DLIB 人脸识别 python机器学习模块
python机器学习模块安装 我的博客:http://www.cnblogs.com/wglIT/p/7525046.html 环境:SUSE Linux Enterprise 11 sp4 离线安 ...
- <状压DP>solution-POJ3311_Hie with the Pie
Hie with the Pie Description The Pizazz Pizzeria prides itself in delivering pizzas to its customers ...
- 在Mysql中,事务是如何实现的呢?
hello大家好,我是一个爱看底层的小码,对于每一个学习mysql数据库的同学来说,事务都是一个绕不开的话题,简单的说来事务是指访问并可能更新数据库中各项数据项的一个程序执行单元.事务的四个特征无非就 ...
- SpringMVC 参数映射与文件上传
handler参数映射: 接下来就是Spring的各个处理细节了,无论框架如何疯转其实我们处理请求的流程是不变的,设计到的操作也是固定的,举个例子,当我们要实现一个登陆功能时: 创建一个用于处理登录请 ...
- 说说GAN(生成式对抗网络)
在Auto-encoder中,input data通过一个encoder神经网络得到一个维度的较低的向量,称这个向量为code,code经过一个decoder神经网络后输出一个output data. ...
- 机器学习(ML)十之CNN
CNN-二维卷积层 卷积神经网络(convolutional neural network)是含有卷积层(convolutional layer)的神经网络.卷积神经网络均使用最常见的二维卷积层.它有 ...
- Ceph 13.2.8 三节点部署
bs-k8s-ceph eth1 mon osd mgr deploy 2c2g sdb sdc sdd 各20G bs-hk-hk01 eth1 mon osd mgr 2c2g sdb sdc s ...