第四次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博客作业--多线程电梯
这次的系列作业是写一个电梯调度,主要目的是让我们熟悉多线程. 第一次作业是一个傻瓜电梯的调度问题,要求也很简单,即每次接一个人就行了.我只用了两个线程,一个是输入线程,一个是电梯线程,输入线程负责从标 ...
随机推荐
- Ubuntu16手动安装OpenStack——glance篇--转
全文转自https://www.voidking.com/dev-ubuntu16-manual-openstack-glance/ 目标 紧接着<Ubuntu16手动安装OpenStack—— ...
- 《代码整洁之道》&《程序员的职业素养》
这是why技术的第32篇原创文章 春节期间读了两本技术相关的书籍:编程大师Bob大叔的<代码整洁之道>和<代码整洁之道:程序员的职业素养>. <代码整洁之道>出版于 ...
- Spring注解开发系列Ⅸ --- 异步请求
一. Servlet中的异步请求 在Servlet 3.0之前,Servlet采用Thread-Per-Request的方式处理请求,即每一次Http请求都由某一个线程从头到尾负责处理.如果要处理一些 ...
- JDK源码之Double类&Float类分析
一 概述 Double 类是基本类型double的包装类,fainl修饰,在对象中包装了一个基本类型double的值.Double继承了Number抽象类,具有了转化为基本double类型的功能. 此 ...
- 对比PXC集群与主从架构在一致性上的区别
在上一篇文章中,已经完成了三节点PXC集群的搭建,现在搭建node3的从库node4,并且有如下测试: 搭建node3的从库,代号node4 测试1: 先断开node3节点,然后在node1构造数据, ...
- 如何在OpenStack中对云主机类型进行重新配置
目标:很多用户在OpenStack启动一个虚拟机,选择了一个云主机配置类型,例如2CPU 4GB内存,使用了一段时间,感觉这个配置并不能满足需求,所以希望能够提高配置,那么OpeNStack的管理界面 ...
- OpenCV3入门(六)图像滤波
1.图像滤波理论 1.1图像滤波理论 图像滤波即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作.消除图像中的噪声又叫做图像滤波或平滑,滤波的目的有两个,一是突出特 ...
- 【搞定面试官】- Synchronized如何实现同步?锁优化?(1)
前言 说起Java面试中最高频的知识点非多线程莫属.每每提起多线程都绕不过一个Java关键字--synchronized.我们都知道该关键字可以保证在同一时刻,只有一个线程可以执行某个方法或者某个代码 ...
- 【Java并发工具类】ReadWriteLock
前言 前面介绍过ReentrantLock,它实现的是一种标准的互斥锁:每次最多只有一个线程能持有ReentrantLock.这是一种强硬的加锁规则,在某些场景下会限制并发性导致不必要的抑制性能.互斥 ...
- Go语言实现:【剑指offer】连续子数组的最大和
该题目来源于牛客网<剑指offer>专题. HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向 ...