第一次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+ ...
随机推荐
- Codeforces Round #436 C. Bus
题意:一辆车在一条路上行驶,给你路的总长度a,油箱的容量b,加油站在距离起点的距离f,以及需要走多少遍这条路k(注意:不是往返) 问你最少加多少次油能走完. Examples Input 6 9 2 ...
- failed to find global analyzer [uax_url_email]
ES的默认分词设置是standard,这个在中文分词时就比较尴尬了,会单字拆分,比如我搜索关键词“清华大学”,这时候会按“清”,“华”,“大”,“学”去分词,然后搜出来的都是些“清清的河水”,“中华儿 ...
- Ubuntu---gcc && g++
摘要:今天用 gcc 编译 c++ 代码,发现会报错:std::cout 这个函数无定义,所以决定查一下原因,在这里总结一下,虽然以后回头看一定会觉得太菜,但是新手期还是总要经历的一个阶段,所以就记 ...
- 12. Integer to Roman (JAVA)
Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 ...
- A Boring Problem UVALive - 7676
16年北京现场赛的题,全场过的队30+. 初看只知道 O(N^2logK)的暴力,以为是什么变换. 仔细发现活用 二项式定理 就行. #include <bits/stdc++.h> us ...
- python的单元测试unittest模块
首先需要导入unittest模块 import unittest import HTMLTestRunner # TestCase 也就是测试用例## TestSuite 多个测试用例集合在一起,就 ...
- Java多线程消费者、生产者的基本思路
多线程主要考察的就是 线程的同步控制 生产者消费者的思路就是,当 一个线程执行时让另一个线程 挂起就行了 ThreadOne.ThreadTwo同时运行,添加一个变量在一个公共类(下边的Funct ...
- Linux 内存占用大排查
用命令 top 查看发现内存使用很高,可用内存很少,导致有些服务无法正常启动. 这时,可以用下面的命令查看占用内存前10的进程,改变 10 的数字,可以调整前几的个数. ps -aux | sort ...
- 分别用for、while和do-while循环语句以及递归方法计算n!,并输出算式
一.用for循环实现 实验过程: 实验结果: 二.用while循环实现 实验结果: 三.用do while循环实现 实验结果: 四.用递归算法实现 实验结果: 实验心得: 此次实验中必须熟悉for循环 ...
- linux下ping命令出现ping: sendto: Network is unreachable
问题:ping外网出现: sendto: Network is unreachable 查看: #route Route命令 : 在数据包没有有效传递的情况下,可以利用route命令查看路由表 [ro ...