第一次作业——多项式计算

1.自我程序分析

  第一次作业是多项式计算,只使用了一个多项式类。第一次接触面向对象的程序,还比较生疏,不是很能理解面向对象的思想。将读入,处理,计算,都放到了main函数中,结果main函数写的过于冗余。

  这是第一次作业的度量分析,分析发现第一次作业的main函数,写的过于复杂,没有体现出面向对象高内聚,低耦合的思想。

  我在第一次作业中建立了两个对象,polyNow和polyAns,每次将新的多项式 polyNow 通过poly类的add或者sub方法加或者减到 polyAns 中。最后polyAns中存放的即为最后答案。

  

  在读入方面,我使用了正则表达式来判断是否合法,之后再用正则的find方法来获取各个多项式。

2.自我bug分析

  在做第一次的程序时,曾出现过当读入层次复杂,项数多,个数多的多项式时,会出现程序爆栈的问题。经检查后发现是正则表达式过于复杂,导致迭代层数过多,以至于崩栈。之后采取了将读入的字符串分割后再进行正则表达式匹配的方法,解决了问题。

3.互测策略

  第一次作业,互测时主要从测试对方输入格式是否判断正确的方面来测试。测试各种特殊情况如前导零,正号等。

第二次作业——傻瓜电梯

1.自我程序分析

  第二次作业,我对面向对象的思想有了一定的理解,将整个电梯程序分成了6个类,电梯类负责控制电梯状态,楼层类负责控制楼层内外的按钮和指示灯,请求类负责解析请求,请求队列类负责对需要执行的请求进行存储,判断等,最后通过电梯控制类来对各个类进行交互协调,进行电梯的调度和楼层灯的控制。

  

  对于电梯的调度方法,我使用了两个队列,一个队列用来储存执行队列,一个队列储存还未发出的请求。当执行队列为空时,从请求队列中取出一个合法请求加入执行队列。当电梯运行时,判断当前过程中有那些请求被发出,并判断是否是同质指令,然后将合法指令加入执行队列。最后更新电梯状态,然后取出执行队列第一个命令继续运行。

2.自我bug分析

  第二次作业写的比较顺利,在做出正确的设计后,写完后没什么bug了。易错的地方可能在一些电梯开关门的边界处理。

3.互测策略

  第二次作业,我写了一个自动生成随机输入数据的程序,然后通过批处理指令来将自己的程序和对方比对。然而没跑出对面什么bug。。

第三次作业——ALS电梯

1.自我程序分析

  第三次作业在第二次作业上加入了捎带的功能。

  对于新加入的捎带功能,我的理解是:因为在每次电梯运行过程中,一定会捎带运行中电梯内发出的指令的最高层。所以我将每次电梯运行不再以主指令为单位,而是在每次运行中,找到当前方向上能捎带的最高层,当次电梯运行就从当前楼层直接运行到最高层,并且将这一次运行中需要捎带的请求转化为这次运行中需要停靠的楼层。

  于是一次运行流程就转化成:首先寻找本次运行方向上的最远楼层,然后在运行过程中判断同质指令,并将各个停靠的楼层的请求输出,然后再执行下一条指令,进行下一次运行。

2.自我bug分析

  这一次在做作业的过程中,我在电梯开关门的过程中的同质指令判断有些问题,在对边界问题进行分析后解决了问题。

3.互测策略

  对方在数字前的正号的判断处理出现了问题,其余在程序运行方面没有出现什么bug。

这三次oo作业的心得体会

  通过这三次的oo作业,我对面向对象的思想有了更深刻的认识,了解了高内聚低耦合的设计理念。在第三次作业中,我对于程序的设计还不是很完善就草草开写,然而我在写完之后发现自己的设计有着许多无法解决的问题,导致我又对程序进行了重新设计并书写。希望自己在以后做作业的过程中,更重视自己的设计,先设计好再开写,往往会事半功倍。

  祝大家假期快乐,oo加油!互测能少点戾气多点和谐~祝oo课程能顺利运行

OO随笔的更多相关文章

  1. OO随笔之和蔼的第四单元——UML系列

    本单元的OO作业相比以前的,实在可以以和蔼来形容.但是和蔼并不意味着什么都不做,这单元的两次作业,特点在于每种查询难度不大,但是有很多需要商榷的细节点和查询种类比较多.由于UML图和java8之间,存 ...

  2. OO随笔之纠结的第二单元——多线程电梯

    综述 主要任务就是写一个电梯模拟器,读入每一个人的请求然后让电梯把他们送到想去的地方. 从第一次到第三次作业,三次的主要任务都是相同的,但是每次都增加了很多的细节,每次的难度都逐步增长,电梯复杂度和瞎 ...

  3. OO随笔之魔鬼的第一单元——多项式求导

    OO是个借助Java交我们面向对象的课,可是萌新们总是喜欢带着面向过程的脑子去写求导,然后就是各种一面(main)到底.各种方法杂糅,然后就是被hack的很惨. 第一次作业:萌新入门面向对象 题目分析 ...

  4. OO随笔之追求完美的第三单元——初试JML

    前言 这一章的JML比较简单,那么大家的关注点自然地移到了性能优化上.于是大家一股脑地去利用各种数据结构去做时间上的优化(当然很多人最后还是倒在了正确性上),故称追求完美的一单元.当然这也是得益于JM ...

  5. Linux随笔-鸟哥Linux基础篇学习总结(全)

    Linux随笔-鸟哥Linux基础篇学习总结(全) 修改Linux系统语系:LANG-en_US,如果我们想让系统默认的语系变成英文的话我们可以修改系统配置文件:/etc/sysconfig/i18n ...

  6. AI人工智能系列随笔

    初探 AI人工智能系列随笔:syntaxnet 初探(1)

  7. 【置顶】CoreCLR系列随笔

    CoreCLR配置系列 在Windows上编译和调试CoreCLR GC探索系列 C++随笔:.NET CoreCLR之GC探索(1) C++随笔:.NET CoreCLR之GC探索(2) C++随笔 ...

  8. C++随笔:.NET CoreCLR之GC探索(4)

    今天继续来 带大家讲解CoreCLR之GC,首先我们继续看这个GCSample,这篇文章是上一篇文章的继续,如果有不清楚的,还请翻到我写的上一篇随笔.下面我们继续: // Initialize fre ...

  9. C++随笔:从Hello World 探秘CoreCLR的内部(1)

    紧接着上次的问题,上次的问题其实很简单,就是HelloWorld.exe运行失败,而本文的目的,就是成功调试HelloWorld这个控制台应用程序. 通过我的寻找,其实是一个名为TryRun的文件出了 ...

随机推荐

  1. shell脚本报错:syntax error: unexpected end of file

    解决办法1: vi test.sh :set fileformat=unix :wq 解决办法2: yum install dos2unix dos2unix my.sh 原因剖析: DOS下文件和L ...

  2. npm手册

    npm现在都是随同NodeJS一起安装的包管理和分发工具,所以npm的安装,只要下载新版的nodejs已经集成了npm. 安装好了以后,直接输入npm或者npm help,会出来一些npm自带的命令. ...

  3. Cocos Creator 构建发布... APP ABI(选项)

    APP ABI 选项对应的是设备的 CPU 架构.勾选不同的值,编译出来的 apk 可以适用于不同的设备.勾选的越多,适配的机器越多.但是相应的 apk 包体越大. 需要根据自己的项目实际情况决定要编 ...

  4. ultiple Endpoints may not be deployed to the same path

    @Configurationpublic class WebSocketConfig { //打war包启动需要注释掉此:否则报 :DeploymentException: Multiple Endp ...

  5. com.mysql.cj.core.exceptions.InvalidConnectionAttributeException: The server time zone value '��� mysql-installer-community-8.0.15.0

    <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> &l ...

  6. 论文速读(Yongchao Xu——【2018】TextField_Learning A Deep Direction Field for Irregular Scene Text)

    Yongchao Xu--[2018]TextField_Learning A Deep Direction Field for Irregular Scene Text Detection 论文 Y ...

  7. python学习笔记之线程、进程和协程(第八天)

    参考文档: 金角大王博客:http://www.cnblogs.com/alex3714/articles/5230609.html 银角大王博客:http://www.cnblogs.com/wup ...

  8. Task3

    姓名:蔡典 学号:1425052044 班级:信管142 兴趣爱好:电影,美剧,游戏 个人编程能力:较弱,没自己写过代码 码云账号:18809188@qq.com 直接搜索码云然后进入官网输入基本信息 ...

  9. Centos7下安装配置elasticsearch 6.3.1

    1)下载 Elasticsearch 6.3.1 地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1 ...

  10. webServices接口开发过程中项目启动遇到的错误org.xml.sax.SAXParseException; lineNumber: 20; columnNumber: 422; schema_reference.4: Failed to read schema document 'http://www.springframework.org/schema/beans/spring-bean

    org.xml.sax.SAXParseException; lineNumber: 20; columnNumber: 422; schema_reference.4: Failed to read ...