OO第三次博客作业

OO第三次博客作业

目录


一.前言

  第三次博客作业来了,这次的作业涉及到PTA题目集7~9,一共有四道题目,但我认为实际上只有两道题目,剩余的两道是之前两道的改进。因此只要把第一题写好,剩下的改进我认为是得心应手。这次的题目集,就涉及到比较多的知识点了,主要是这几样:类的继承、多态性使用方法以及接口的应用以及类的设计。其中也不乏有一些简单的知识点,这里就不介绍了。


 

 

二.设计与分析

  1.题目集7(7-1)、(7-2)两道题目的递进式设计分析总结

     以下是两道题的UML类图

题目集7(7-2)

 

 

 题目集7(7-2)

    先从第一个题目说起吧,首先题目的要求:考虑一款适合于小学生的卡片(Card)排序游戏,其规则为随机发放一些卡片给学生,卡片分为四种形状:圆形(Circle)、矩形(Rectangle)、三角形(Triangle)及梯形(Trapezoid),并给出各种卡片的相应参数,要求学生能够迅速求出各卡片的面积大小然后将卡片按照其面积值从大到小进行排序,同时求出所有卡片的面积之和。

    而第二个题目的要求比第一个题目的要求多的是:要求学生首先根据卡片类型将所有卡片进行分组(一个类型分为一组, 所以最多四组),然后能够对每组内的卡片根据面积值从大到小进行排序。

    我们可以看出前者只是排序,而后者还要进行分组。我为了实现分组,在 DealCardList 类中添加了多个 ArrayList ,分别储存了对应形状的卡片。这里面还使用了多态,通过子类对父类 Shape 类的继承,以及在子类中重写父类 validate() 方法。简化了代码,让代码更灵活(比如要再加一个其他形状的类)。

    而通过 Comparable 接口的应用以及配合 Collections 类,我们实现了 Card 类面积的排序。

    重写代码如下

  @Override
    public int compareTo(Card o)
    {
        return Double.compare(o.getShape().getArea(), shape.getArea());
    }

  2.题目集8和题目集9两道ATM机仿真题目的设计思路分析总结

    题目要求:编写一个银行 ATM 机的模拟程序,能够完成用户的存款、取款以及查询余额功能。

    这题的大致类图如下

    

 

 

     可惜的是,我的代码当时出现了问题,有部分功能并不是完全体。我无法给出分析


 

三.踩坑心得

  在完成这两次题目集的过程中遇到了不少麻烦,这里挑几条出来说一说,分享给大家,与大家一起交流学习。

  1.首先就是要将题目中的各种情况考虑周全,比如题目集七的判断输入数据是否合法,不仅要考虑负数,还要考虑能不能构成图形。在写代码的过程中,如果能够提前分析这些特殊情况可以让我们事半功倍,并且错误也会减少。可以得出,在未来做一个题目或做一个项目时,要考虑清楚题目或者项目的需求以及要求。毕竟谁也不想满怀信心的提交代码,之后又头疼地改bug。所以,我们要养成分析题目的良好习惯。

  2.在关于数组排序的题目中,由于有段时间没怎么使用数组的排序,导致写这几道题目时,浪费了不少时间,例如,,这也提醒我要多复习前面的知识,切记不可以囫囵吞枣,急于求成。这样才不会今后的代码编写过程中浪费不必要的时间,造成不必要的错误。

  3.这两个题目集体现出了自学的重要性。告诉我们编程,不仅仅是靠课堂上学习的知识,上网百度、参考其他人分享的知识也是学习编程中不可缺少的一部分。学习编程是不能闭门造车的,编程语言不断在进步,课本上的内容是死的,我们需要利用网上的资源来跟上编程语言的发展。


 

四.改进建议

  虽然编写的代码大多数都能通过PTA的测试点,但其中还是有一些问题存在的。

  代码中的小错误比较多,经常要回过头来改,以后尽量避免这种情况。


 

 

五.总结

  到了激动人心的总结时刻了,这又是我编程学习的一个进度点,也是这次blog作业的总结。回看自己以前写的代码,实在不堪入目,不过这也让我意识到,我实实在在的在进步,这是让我十分开心的,并且让我找到将编程学习下去的动力。

  1.感觉到自己学到了很多东西,从刚开始连创建 Scanner 类都要百度,到后面类的继承,看着自己写的代码越来越长,越来越复杂,感觉到自己的能力也越来越强。

  2.自己还是需要去理解很多概念,很多东西我其实都会用,但让我讲出来却是十分难的。

  3.自己还需多空出时间来学习,很多题目中涉及的知识点老师不会讲的很详细,自学能力还是要加强。

  4.对老师的建议就是希望在每次题目结束后,老师能给出一份正规的答案供大家参考学习,我相信这不仅可以方便同学们的学习,而且也可以规范大家的代码格式。众所周知,代码规范性是以后工作中重要的一个考察点。有一个良好的编写习惯,能为以后的找工作避免许多不必要的麻烦,同时也可以在招聘中为自己加分。


 

以上就是我本次blog作业的全部内容了,还是有些拙劣的,望大家包容。

posted @ 2021-06-20 22:05  -Hush-  阅读(51)  评论(0)    收藏  举报