OO第二次博客作业

前言

       第二次写博客,这次的博客是记录本次PTA大作业四:点线面系列(四)关于四边形题目与期中考试的一些心得,相比于之前写前三次PTA大作业,我本人所学习的知识相比于之前有不少增长,能更加熟练的去使用Java语言解决问题。对更加复杂的题目也有相适应的处理手段。

 

设计与分析

(1)      PTA大作业四

这次的PTA题目是有关四边形的一些问题:

 

 

  相比起之前前三次的点线面题目,在输入格式是否有差错上并没有太大的变化所以之前把最关键的判定输入格式部分继承了下来,也就是使用try语句配合Double.parseDouble()语句来搞定该部分。

  之后步入正题,在题中,计算与判定四边形与其对应面积和周长是重点,一开始,我只是简单选择去在每个对应选项中解决每个选项中所求的问题,但很快在写完第三个选项时代码的行数就已经达到将近300行,所以吸取之前的教训并结合平日所学习的知识点,我决定去建立一个类专门来处理这些计算问题,并且把所有选项一些重合的部分去合并成为不同的方法,如判定四个点是否能够成四边形,在第一个选项中作为主要要求之一,而在之后,每个题目都需要先判断四个点是否能构成四边形,于是将其做成一种方法来处理极大地减少了代码长度且使得代码更加整洁更加方便。

 

判断是否为四边形部分的代码

  然后就是使用一个新类来计算整个题目的所需的计算问题,如判断两线的是否平行,交点是否在线段内等问题

 

  方法是直接将四个点的坐标带入整个类中然后去判断点重合和,三点一线,之后再去计算与判断四点构成的线段的部分问题,相比与之前单用方法去简化代码,使用类可以更加方便,且代码结构更加清晰,并且类的功能更多也更加便利,但可惜当时有关类的许多知识点只是有些初步认识,有许多更加方便方法,和使类更加结构明了的技术在使用时因为基础不牢使得使用时出现差错,不得不删除,或是只听过方法名无法用到使,得创建的这个类内部结构非常混乱,在不断补充新方法时出现许多问题无法解决,只能敷衍过去。所以这个类还是有许多问题不能解决,在下一次的PTA作业中,我会尝试将其变为多个不同的类或是用更加清楚的命名与更爽朗的方法使得代码结构更加简洁清晰。

  不同的选项难度不同,而其中最难的就是计算用线切割四边形然后计算面积,该选项部分所需要考虑的情况非常多,在分类时经常容易将两种不同情况搞混淆,为尽量避免这种情况,我选择将一个四边形分为两个三角形来解决,这不仅能让我们去除判断四个点是否构成的是一个三角形还是一个四边形,还能在切割这个四点构成的图形更加方便去计算被分割的图形面积,而整个大图形也可以直接以两个三角形面积去相加解决不规则四边形带来的麻烦,但尽管如此,第四项所要考虑的情况还是非常多。整体代码还是非常复杂。在这道题上还是耗费了大量时间。

(2)      期中考试题目

考试题目共有三道题目,第一题是最简单的同时也是为后面两道题做铺垫,也就是说后面的题目都是在第一题的基础上增加东西,增加要求。以照片形式附上题目如下:

 

 

第一题只是非常简单的使用两个类与一个主类去描述输入两点连线的一些属性,并将其属性封装起来。没有太大的难度,此外就是将被封装起来的属性通过方法去将其调用出来。

而在第二题难度升级出现父类,将原先的两个类作为子类,并将其共同的部分放入父类,但也没有太大难度,但我在此忽略了一个点,那就是忘记将其抽象化,也就是没有添加abstract,这导致了我在这次考试错失了大量的分数,,但好在其他部分没有再出错误。

在第三题,题目又附加了条件,使用容器,然后要求按容器中对象顺序来输出这个地方是我花费时间最多的地方,因为我对容器的使用还非常生疏,考试时我并不敢去大胆的修改,害怕出错而扣分,直到现在我也对容器停留在简单的使用而无法理解的状态上。

这是我对整个期中考试的小小一部分看法,这次的期中考试的整体难度并不难并且题目着重考了近期所学的知识点,而其他的知识点只是简单一笔带过,只要掌握住重点,题目并没难度,也没有陷阱,与其说是期中考试更像是平时的测试,但也确实让我们能更加深刻的认识到这些知识点的用法与技巧。

 

采坑心得

       这次的几个Java题目,与期中考试的题目,整体并没有太大难度的。

       踩坑一:

写PTA的题目时,需要建立类,否则会使得代码长度过长,从而使得超出题目限定长度。

踩坑二:

写PTA题目时,在判断凹凸四边形时,最简单且最不容易的出错的方是判定对角线段是否相交,这里要注意是线段是否相交,在写提示会判断两线交点是否在线段上,而此时需要交点要同时都在两线段上才行,而不是两线段在其一即可。

       踩坑三:

写PTA题目时,在判断输入的点是否重合时,要记得之后一部分点重合时属于是三角形,而题目并没有说明。

踩坑四:

       期中考试题目,不要忘记改成抽象类。

踩坑五:

期中考试题目一点类的display()在第一题中并没有使用到,或者说使用的比较勉强。不必过多浪费时间。

改进建议

       PTA方面,相比于上次虽然多了许多例题,但是在测试点还是没有明确说明,在测试时需要去猜测自己错误的地方在哪个选项,哪种情况。此外,我希望PTA的平时题目重点能放在Java学习中与实践中所遇见的问题,和需要经常使用的知识点上,这样的话也对我们学习Java有所帮助。

总结

       总结本次的PTA大作业与期中考试,我感觉自己无论是在最近知识点上的学习,还是在或是细节方面的把握都没有做好,在两份Java作业上都没做好,这也是平时在上面所花费的时间过少导致的。题目中许多复杂的问题虽然在自己学到的新知识的帮助下得到简化并解决,但也有许多本来简单的问题因为自己的学习不够扎实而复杂化了,就比如一开始判断凹凸四边形时,我所用的方法是去判断1号3号点是否在2号4号点所构成的直线的同一边,然而这种方法不仅将问题复杂化了还出现了将一些本来正常的凹四边形当作了两个三角形,拖后了解决问题的进度,使得在最后命名方法是选择了简单的A,B去命名导致后期代码不知所以然,出现大问题。然后对于这次的题目我也感受到将来面对更长更复杂的代码时使用类与对象来解决问题和完成项目的重要性。同时Java封装,继承与多态的学习更是重中之重,而日后想要有所突破有所得,唯有更加努力的学习才能做到。

posted @ 2022-05-09 22:21  彭嗣争  阅读(35)  评论(0)    收藏  举报