第一次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+ ...
随机推荐
- 微信自带浏览器不支持form表单post提交方案解决
微信自带浏览器form表单post提交,Java控制后台获取不到值得解决方案: 第一种:把post改成get请求,但是改后另一个问题来了就是,数据不安全了,连接上都能看到,导致数据会流失,Java ...
- tensorflow_目标识别object_detection_api,RuntimeError: main thread is not in main loop,fig = plt.figure(frameon=False)_tkinter.TclError: no display name and no $DISPLAY environment variable
最近在使用目标识别api,但是报错了: File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/script_o ...
- 1_translation_1
It is always difficult to start describing a programming language because little details do not make ...
- pyparsing自定义解析规则
1.Word(token) 用于匹配由允许的字符集组成的单词,常见的错误是使用特定字符串Word("expr")匹配"expr" - L {alphas} 字 ...
- 解题(LeatestCarFee -计算最少过路费)
NowCoder今年买了一辆新车,他决定自己开车回家过年.回家过程中要经过ň个大小收费站,每个收费站的费用不同,你能帮他计算一下最少需要给多少过路费吗? 输入描述: 输入包含多组数据,每组数据第一行包 ...
- 使用Fiddle抓取IOS手机
1.配置Fiddle (Tools->Options) 勾选后,按照提示下载安装一个认证 Fiddle默认8888端口 2.电脑开个热点,手机连上后,在该wifi的代理配置中,选择手动,服务器输 ...
- 【相关网站 - 02】- Java 好文博客
一.源码分析博客 还有这种操作?浅析为什么要看源码 你觉得什么才是 Java 的基础知识? 1. JDK 2. Mybatis 3. Spring 4. Sring Boot 5. Spring Cl ...
- HTML5智能表单
HTML5 智能表单 1.表单新增属性 ☀ autofocus 属性 <input type="text" autofocus/>设置 autofocus 属性,使文 ...
- 20175126Apollo 20175126《Java程序设计》结队编程项目——四则运算
结队编程项目——四则运算 一.项目需求 自动生成小学四则运算题目(加.减.乘.除)统计正确率 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 需求分析: 生成四则运算:需要使用 ...
- CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-2设置SSH免密登录
因为hadoop集群在安装的时候需要集群中所有机器的权限. 所以我们需要打通所有节点的ssh无密码登陆,思路是生成每台机子的密钥,集中在一个文件中,再分发到每台机子上. 为了确保下面的命令能顺利执行, ...