面向对象程序设计--前三次作业总结
21201310-寇家瑞
1.前言:三次题目集的知识点、题量、难度等情况
1)第一次作业是简单的编程语法训练,题目虽然较多,但题目难度不大。输入内容的语法和之前所学的c语言有类似之处,同样涉及if语句、for循环等,为进入Java的语言环境做了开头,帮助我们更快熟悉Java。每道题涉及的知识点都不一样,更为多方面的考察了我们c语言的能力,为进入Java学习开了头。
2)第二次作业已渐渐进入Java语言的正题,难度比第一次增加了许多,但题量不大,算是对自己进入新语言的小试。知识点包括:flag的用法,调用串口。增强考察编程语言的细节。
3)第三次作业的编程方式和c语言有出现了不同,重点是考察对于类的构造。题目只有三道,但题目内容强度大,除了第一题外,后面两题的内容都较多,比前两次作业难度上去了很多。第一题较为轻松,只需了解基本运用类构造和类的使用,但部分测试点让拿全分变得困难。第二题内容很多,难度也不小,3500次提交,仅有50次左右的成功。第三题的难度则更上一层楼,通过率为0%,或多或少能拿部分分数,但在不断改代码的同时,代码就被改的越来越乱,拿满分也不大可能。没办法通过的原因:一是对知识点的综合运用还不够熟练,二是无法将题目要求很好的融合思考,导致代码很乱。三是对于部分测试点的钻研花了太多时间,而没去仔细阅读指导书,导致许多时间浪费在合法性测试上。第三次作业让我感受到学习任重道远,掌握的东西太少,需要在以后加强。
2. 设计分析 采坑心得 改进建议:
1)题目集3:7-2 串口字符解析
设计与分析
该题难度不大,不需要构建多个类去完成,只需要一个主函数便可以完成全部的功能,首先判断是否是长度大于最小结构:1个起始位‘0’+八个有效数据+一个奇校验位+一个结束位 = 11位。然后判断是否有0:通过正则表达式来判断的通过普通的遍历也行,但时间会更长。然后开始找0:找到0后开始对他后面10位做处理;然后判断最后一位是不是结束15.再判断是否奇校验正确。通过两次判断结果来输出。这个题只要是结尾错了,那就是“validate error”,所以可以先判断结尾,结尾正确再去判断是否奇校验正确。形式简单,但最后还是回对bug进行不断调试。
采坑心得
拿这部分来举例,因为要判断字符的每个符号,c语言需要用到char去定义,在这里则需要用charAT去判断是否有需要的字符,但由于困于输入字符串可能出现的很多情况,一时间没有区分出各种情况的是否一致或者不同,导致后续在编写程序时出现多个条件重合或者是有漏掉某个条件,因为之前没有统计过到底会有哪些测试点所以在进行改动时的用处不大,后来针对针对测试点再去进行进一步修改,才逐渐理清楚各个测试点到底是哪些。
改进建议
通过SourceMonitor以及PowerDesigner软件测评结果可以发现,这段程序复杂度高,且都在主类中完成。但是这段代码的效率不高,究其原因,是因为if语句过多,导致程序运行的过于拖沓,后参考其他人博客发现,可以采用switch语句,复杂度可以大幅降低。其次,对于判断闰年,判断边界条件等功能,可以在另一个新建的类进行统一处理,通过建立year,month,day私有属性,即可在一个类中利用不用的方法,完成功能,在通过string tostring语句完成对结果的输出。这样的类构造可以大幅提高代码的可读性。
2)题目集3:7-1 点线形系列1-计算两点之间的距离
设计与分析
该题是给出两点的的坐标计算两点的距离,但需要首先根据题意划定合法范围,若判定非法,输出“Wrong Format”;若判定为合法输入后,还需要判断输入字符个数,若个数多于或少于规定个数,需输出“wrong number of points”;当有合法输入后,再将正确的计算结果输出。当看到这道题时,我认为题目并不算难,因为输入输出样例只有三条。结果是,得分确实较为容易,但部分测试点真的很难找出,当时代码中出现了很多if语句,使复杂度大大增加,但当时确实只有这张直来直去的想法。
采坑心得
确实没想到空格也要单独弄,第一遍敲完后才发现题目中还有这个要求,不过确实没什么难度,后面加上后也就解决了。倒是flag的用法,刚从网上看了些皮毛就开始动手,导致根本没有理解flag,返回的一直是自己所做的正误标记,一直报错;将二者在本题返回的题意正确与否弄反,一直过不了测试点,后发现后及时调整,完成了该题。
改进建议
通过SourceMonitor以及PowerDesigner软件测评结果可以发现,该题目测试点存在一点点问题:1.部分测试点设置的有点偏离,需要优化;2.题目简单,导致只有主类,看着也十分直白。改进建议:减少if语句的使用,改使用为switch,甚至可以对数据进行统一的计算处理,再进行一一对应到switch中,这样可以大幅降低复杂度,代码运行的效率更高。若是想处理的更为体现类的形式,可以将数据计算处理在一个计算类中,判断条件写在判断类中,结果输出写在一个输出类中,这样可以将题目处理的更有可读性。
3)题目集3:7-2 点线形系列2-线的计算
设计与分析
这道题和前两道比起来,就显得相对复杂了,当看见输入输出样例时,我知道这道题的复杂程度一定比较高。题目包含五个选项,都是比较简单的数学计算:斜率、点到线的最短距离、三点共线、判断两线段是否平行和计算输出前两个点所构成的直线与后两点构成的直线的交点坐标。虽然题目难度并不算大,但复杂程度确实是比较高的。五个选项其实可以分成五个类似的题,只是这道题将它们结合在一起。
采坑心得
这题,虽然我的设计与分析写的头头是道,但是写代码却没有这么顺畅,前前后后花的时间应该算是我做作业花时间最久的一道题,代码也是改了好久。最后没得全分,而且也不高。写代码还是有写c语言的感觉,很多时候写出来后知后觉。
改进建议
题目很好,五个考察内容结合得也很恰当。但这道题写出来后有一个很大的问题就是太乱了。如果可以把各个非法输入,坐标放在一个类里,会变得简单许多。这样,在eclipse里面进行debug也会简单很多。
4)题目集3:7-3 点线形系列3-三角形的计算
设计与分析
该题目的大致需求是:使用类与对象编写程序对坐标系的点判断所构成的图形。通过设计主类:完成对于坐标点的输出(参考题目三的第一题);再者判断输入的选项,进行下一个类的判断;嗯嗯对。
采坑心得
这题不会,没什么心得。有的话就是还需要提高自己。
改进建议
无
3.总结
这是本学期Java第一阶段的学习,能看到自己获得了知识,但更多的是自己的不足,而且不足之处很明显。学习的东西虽然基础,但是掌握却需要大量联系。从最初适应c语言变成Java语言,然后认识Java基础语言,再到后面运用多个类编写程序。作为初学者,发现还有许多东西需要去掌握:
1.基础语法的巩固,在进行Java编程中,时常脱离不出C语言的习惯,导致出现语法错误,甚至不记得如何进行编写,这需要在练习中,不要只会对之前自己写的代码复制粘贴,还要留意写法。
2.多学习使用eclipse,这个编译软件很好用,功能很多,自动报错的功能对于代码的修改很有帮助,写pta不能只在那上面写代码,灵活运用eclipse对自己编写修改代码很有帮助。
3.不同类之间的关系,许多时候正是不知如何进行将类互相呼应,导致代码亢长,产生垃圾代码,这不利于学习;当能够了解,并运用类与类之间的关系,则能解决大多数问题。
向前看,面向第二阶段的学习。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)