作业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总结的更多相关文章

  1. 第一次OO阶段性总结

    作业一 在第一次作业发布的时候对这次作业比较掉以轻心,因为之前在暑假的时候上过先导课,对面向对象的编程思想和java的语法都比较熟悉,加上有其他的事物分心,所以到了最后一天才开始着手写代码,轻视作业的 ...

  2. OO前三次作业思考(第一次OO——Blog)

    OO前三次作业总结 基于度量分析程序结构 由于三次作业较多,决定分析内容.功能最为复杂的第三次作业. 上图为第三次作业的类图.我使用了一个抽象类Factor,写了五个因子继承Factor,然后又单独开 ...

  3. 第一次oo博客作业--表达式求导

    (1)说实话我这部分真的不知道写些什么,因为我只有第三次作业写了两个类,前两次都是一个类,一个类的好处可能也就是写起来比较方便(不用抽象什么共性了,直接c语言莽过去),缺点很多,架构不清晰,可读性不高 ...

  4. OO第一次总结作业

    第一次OO博客作业 前言 面向对象课程已经经过了4周的时间.前三次作业全部是关于多项式求导的相关内容,内容由易到难,同时我也开始逐渐深入感受学习面向对象的各项特征,逐渐将自己的编程风格从C向真正的面向 ...

  5. OO第一阶段纪实

    $ 0 写在前面 在DDL一次次的推动下,历经三个周期的更迭,一个月的时光匆匆而过.谨撰此博文,以记录这一段见证成长的心路历程. $ 0-0 JAVA“一天速成”没有修习过传说中的“OO先导课”,在学 ...

  6. oo作业总结(四)

    测试与正确性论证 测试是通过构造一系列测试数据,通过对比程序的实际运行结果和预期输出结果来判断程序是否有bug的一种手段.同时,在测试的时候是默认看不到程序的具体实现的,即进行黑盒测试,例如每次OO作 ...

  7. 第一次码java感想及前三次作业总结

    写在前面 嗯,首先是java,这学期第一次oo作业布置下来的周末才开始看的,第一次作业因此写得有些手忙脚乱.不过大概看了一遍后发现比c好用,入门更简单吧,好多操作直接import一下就能用了,码代码的 ...

  8. BUAA-OO-第四单元总结——终章

    面向对象第四单元博客总结--终章 第四单元作业设计 第13次作业设计 类和对应方法属性设计 类设计如下图所示 本次作业主要涉及六个类,其中包括主类 Main ,通用Map类 UmlElementIdM ...

  9. 面向对象第一单元总结:Java实现表达式求导

    面向对象第一单元总结:Java实现表达式求导 题目要求 输入一个表达式:包含x,x**2,sin(),cos(),等形式,对x求导并输出结果 例:\(x+x**2+-2*x**2*(sin(x**2+ ...

随机推荐

  1. 2017-11-10 Fr Oct 消参

    2017-11-04 Sa $ P(-3, 0) $ 在圆C $ (x-3)^2 + y^2 = 8^2 $ 内,动圆M与圆相切且过P点,求M点轨迹. 设切点 $ A(a, b) $,圆心 \(M(x ...

  2. 转载:C# socket端口复用-多主机头绑定

    什么是端口复用: 因为在winsock的实现中,对于服务器的绑定是可以多重绑定的,在确定多重绑定使用谁的时候,根据一条原则是谁的指定最明确则将包递交给谁,而且没有权限之分.这种多重绑定便称之为端口复用 ...

  3. select 选择列表传值问题

    <select> <option value ="volvo">Volvo</option> <option value ="s ...

  4. 多功能网页刷新工具,刷pv工具

    多功能网页刷新工具,刷pv工具,在线刷流量,刷PV,刷UV小牛刷新助手功能介绍:1.设置多个刷新网页地址.2.设置刷新时间3.开始工作4.其他操作:老板键:打开时自动刷新:置系统托盘5.可手动输入地址 ...

  5. VS2019正式版注册码秘钥

    Visual Studio 2019 EnterpriseBF8Y8-GN2QH-T84XB-QVY3B-RC4DF Visual Studio 2019 ProfessionalNYWVH-HT4X ...

  6. 微信小程序分享朋友圈

    原理:canvas生成图片再保存到手机 JS onShow: function () { var that = this; //1. 请求后端API生成小程序码 // that.getQr(); // ...

  7. 关于Image创建的内存管理

    image创建方法 [UIImage imageNamed:imageName] 上述方法创建的image,会常驻在内存中,不会随着imageView的dealloc而释放内存. NSString * ...

  8. PHP+Mysql 实现数据库增删改查(原生)

    Mysql数据库创建 创建一个新闻列表的数据库: 1. 查询数据库 1.1. 创建文件dbconfig.php,保存常量 <?php define("HOST"," ...

  9. github 生成配置ssh 秘钥方法详解

    如果安装github成功后,当从本地提交文件到github的时候,提交不成功,报错,可能问题就是你还没有生成ssh秘钥 1.当你提交文件到github,不成功,出现如下的情况,就代表着github上面 ...

  10. centos 防火墙端口开放

    开放端口 永久的开放需要的端口 sudo firewall-cmd --zone=public --add-port=3000/tcp --permanent sudo firewall-cmd -- ...