第一次OO总结
作业1——多项式加减法
看到这个名字就开始瑟瑟发抖了,毕竟一年前用C语言让我写这么一个程序都很头疼,什么堆栈啊还有结构都稀里糊涂的,更别说用一个完全没接触过的语言来完成最简单的一次作业。像我这样越老心里素质越不行的小菜鸡,连梦里都是我的程序输出不对……
整体评价一下这份作业,有在努力用面向对象的思想来编程,但是不太成功,尽管我并不是一个main文件写到底的。先说优点吧,可能就是代码量相对小一点,但是缺点就更多了。类跟类之间不太协调,主要体现在需要进行运算的类过于复杂,并且一个方法同时具备多个功能,参数传递也有些混乱,这就给调试带来很大的不便,而我本身也是个debug很头疼的人。所以在后面的作业我会更多的思考程序的结构,尽量做到不要太集成,同时注意变量名的定义,提高可读性。


反馈出来的bug有:爆栈,这个问题我没有尽早发现,因为不太敢拿很长的测试测自己的程序(玻璃心),这个错误的原因是正则表达式的判断太长了,应该拆成两部分用循环套起来进行判断(由于对自己的要求不太高,最后就没有挣扎);还有一个错误是指数的负零,其实这个是改了的,但是后来发现爆栈,也不知道怎么回事,这个负零又判断不了了。我查的那位同学其实没太大问题,就是细节也需要注意,跟程序的整体设计没什么关系。
我也没什么好办法去发现别人的bug,毕竟自己的bug还经常查不出来,可能会从自己不太注意或者好不容易注意到的细节入手吧,至于那种很长的测试,我觉得没太大必要。似乎这种互测机制并没有激起我使劲写测试的动力,也可能是好不容易写出来个能基本实现功能的程序就已经榨干我了,无心互相为难。在此要谢谢分享给我测试的童鞋们!(也就用来测测自己的)
作业2——so-called傻瓜电梯
洋洋洒洒8页的指导书和不断追加细节的要求,让我一度怀疑人生,这真的是傻瓜电梯吗?!面对规定好的设计更是觉得无从下手,就这么不知所措了两天,到了课最多的周一逐渐惆怅,连个思路也没有想好,还没读明白这个电梯什么开关门什么时间。就是我这个熬不住夜的小菜鸡,也破天荒的因为学习1点还没睡。终于在大佬们的carry下磕磕绊绊的写出了个漏洞百出的电梯。当然了,漏洞百出也比因为readme用PDF阅读器能看到个人信息被无效好……


其实,这个程序除了有一些小功能存在问题外,还是挺优秀的。从这图上能明显看到的不足是命名的混乱,当然这个问题比第一次稍微有点进步。依旧秉承着集中功能减少代码量的思想,在电梯类里的run函数承担了多个责任,有负责刷新,有返回时间的,还有记录要输出的时间的,真的给调试带来了很大困扰,经常不是多了1就是少了1,在长测试中更明显。还有就是一些特殊的同质请求由于这个设计不能被完全考虑。感觉整体设计基本满足老师提出的要求。
在测试中出现的bug有:个别同质请求的错误判断;还有一个在提交前突然想到的应该报错的地方,急急忙忙改的也没好好测,导致其他情况下也报错。互测中并没有发现对面同学的问题,并且很佩服一个main写到底还没有任何错误的面向过程编程。
作业3——ALS电梯
其实在第二次作业就猜到了这次会写有捎带功能的电梯,本以为这是个很轻松的事,可是在看了指导书后,又一次怀疑人生。吸取之前的教训,我边看指导书边用记事本记下来可能会忽略的细节,这些往往是公测的某个点,已经不止一次的因为这种原因出错。


这个程序可以说是一个极限操作,高估了自己的代码能力,导致情况覆盖的不全面,以及最后都没精力应用上新增的要求。整体的设计和第一次电梯变化不大,其实是有很多可以继承的地方,就是不太熟悉用法,也着急让程序跑起来没有加上。这次作业很认真的命名,也尽可能的拆分函数,减少传参的次数。尽管debug依然很困难,通过函数的调整,也没那么痛苦了。
出现的bug有:crash,这完全是因为debug的时候注释掉了try catch,最后忘记恢复了;还有就是个别捎带情况,可能设计的时候考虑不太全面,也没有做好测试,这个应该是要在电梯类里进行添加的。测试的同学出现的问题是在稍微长一点的测试中时间输出不太对,这可能是捎带的优先级出现了问题,没有仔细阅读指导书里对于捎带的定义。
结语
先要感谢不离不弃的大佬们!!也希望读到这里的大佬们轻喷!(并且希望老师不要批评我)我觉得评价自己的作业是跟正确程度有关,但绝不仅仅是看错了几个点这么草率,对于我而言,能自己硬着头皮写下来,从一个不能运行的程序调整到一个会出小错的程序,已经是史诗级的进步了。在接下来的多线程作业里,可能需要积极的请教别的同学,也不要拖延症太厉害,更要相信自己。同时在第一篇博客里立个flag:不要心态爆炸,努力建立一个好的编程思想,培养自己优秀的编程习惯,虽说这些应该在大一就完成。由于能力有限,在分析自己程序的问题上不够深刻,也对于一些错误比较能容忍,还是要结合个人情况吧,总之坚持到最后就好!祝大家睡个好觉,梦里没有OO!
第一次OO总结的更多相关文章
- 第一次OO阶段性总结
作业一 在第一次作业发布的时候对这次作业比较掉以轻心,因为之前在暑假的时候上过先导课,对面向对象的编程思想和java的语法都比较熟悉,加上有其他的事物分心,所以到了最后一天才开始着手写代码,轻视作业的 ...
- OO前三次作业思考(第一次OO——Blog)
OO前三次作业总结 基于度量分析程序结构 由于三次作业较多,决定分析内容.功能最为复杂的第三次作业. 上图为第三次作业的类图.我使用了一个抽象类Factor,写了五个因子继承Factor,然后又单独开 ...
- 第一次oo博客作业--表达式求导
(1)说实话我这部分真的不知道写些什么,因为我只有第三次作业写了两个类,前两次都是一个类,一个类的好处可能也就是写起来比较方便(不用抽象什么共性了,直接c语言莽过去),缺点很多,架构不清晰,可读性不高 ...
- OO第一次总结作业
第一次OO博客作业 前言 面向对象课程已经经过了4周的时间.前三次作业全部是关于多项式求导的相关内容,内容由易到难,同时我也开始逐渐深入感受学习面向对象的各项特征,逐渐将自己的编程风格从C向真正的面向 ...
- OO第一阶段纪实
$ 0 写在前面 在DDL一次次的推动下,历经三个周期的更迭,一个月的时光匆匆而过.谨撰此博文,以记录这一段见证成长的心路历程. $ 0-0 JAVA“一天速成”没有修习过传说中的“OO先导课”,在学 ...
- oo作业总结(四)
测试与正确性论证 测试是通过构造一系列测试数据,通过对比程序的实际运行结果和预期输出结果来判断程序是否有bug的一种手段.同时,在测试的时候是默认看不到程序的具体实现的,即进行黑盒测试,例如每次OO作 ...
- 第一次码java感想及前三次作业总结
写在前面 嗯,首先是java,这学期第一次oo作业布置下来的周末才开始看的,第一次作业因此写得有些手忙脚乱.不过大概看了一遍后发现比c好用,入门更简单吧,好多操作直接import一下就能用了,码代码的 ...
- BUAA-OO-第四单元总结——终章
面向对象第四单元博客总结--终章 第四单元作业设计 第13次作业设计 类和对应方法属性设计 类设计如下图所示 本次作业主要涉及六个类,其中包括主类 Main ,通用Map类 UmlElementIdM ...
- 面向对象第一单元总结:Java实现表达式求导
面向对象第一单元总结:Java实现表达式求导 题目要求 输入一个表达式:包含x,x**2,sin(),cos(),等形式,对x求导并输出结果 例:\(x+x**2+-2*x**2*(sin(x**2+ ...
随机推荐
- Hadoop学习笔记记录
NameNode的介绍: NameNode是HDFS的核心,也称为master,它仅存储元数据(文件系统中所有文件的目录树) NameNode不存储实际的数据或数据集,数据本身存储在DateNodes ...
- APK签名说明
在 Android 系统下, 一些公司会将自己做的APK进行管控,授权签名后方可使用. APK所属的软件公司会提供签名包,例如: 第一步:是要检查所操作的 PC 机是否安装 JDK,如果没有安装,请安 ...
- chrome浏览器和其它浏览器对scrollTop、scrollLeft的获取方法
chrome浏览器不能通过document.documentElement.scrollTop来获得距上滚动距离,得到的值始终为0:需要用document.body.scrollTop来获取.其它浏览 ...
- 史上最全最详细的环境搭建教程,行百里者手把手教你在windows下搭建Anaconda+pycharm+库文件(TensorFlow,numpy)环境搭建
我是在搭建TensorFlow开发环境的道路上走了很多弯路 掉了很多头发,为了让广大同学们不在受苦受累 下面我将手把手教你学习如特快速搭建python环境 快速导入numpy,PIL,pillow,等 ...
- Java8 之stream
总概述:Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利.高效的聚合操作(aggregate operation),或者大批量数据操 ...
- step_by_step_记录一个javascript字符串处理问题
记录一个javascript字符串处理的问题 这一天下班,技术QQ群里的大神提出了一个问题,带着问题去思考. ? '---9890.999008-555555-55555555----' 对于这样的字 ...
- Kubernetes的三种外部访问方式:NodePort、LoadBalancer和Ingress
NodePort,LoadBalancer和Ingress之间的区别.它们都是将集群外部流量导入到集群内的方式,只是实现方式不同. ClusterIP ClusterIP服务是Kubernetes的默 ...
- 20175126《Java程序设计》第六周学习总结
# 20175126 2016-2017-2 <Java程序设计>第五周学习总结 ## 教材学习内容总结 - 本周学习方式主要为手动敲代码并理解内容学习. - 学习内容为教材第七章第十章, ...
- 我的mac下有关php扩展的安装
之前安装yaf和mcrypt扩展一直失败,今天终于找到原因了.那是因为./configure的时候没有指定php版本,所以用了默认的php的版本,正确的姿势应该是:./configure --with ...
- 20175234 2018-2019-2 《Java程序设计》第七周学习总结
目录 20175234 2018-2019-2 <Java程序设计>第七周学习总结 教材学习内容总结 String类常用用法 Date类与Calendar类常用用法 Math类的常用方法 ...