zoukankan      html  css  js  c++  java
  • 第二阶段学习总结


    0.前言
    主要说明本次博客针对的作业情况

    第二阶段的学习也结束了,在此做一些总结和回顾;相比第一阶段的学习确实难度增加了,作业的分数也不太好,完成作业需要花的时间更多了。
    1.作业过程总结
    ①总结三次作业之间的知识迭代关系;

    第四次作业中主要是正则表达式和继承关系的运用,第五次作业就是关于类的继承和多态性的运用了,第六次作业是类的继承、多态性使用方法以及接口的应用。
    ②如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性;

    对象的封装性是指“将对象的成员隐藏起来,不让其直接在类的外部访问,要通过一定的方法对封装起来的成员进行访问控制”,在Java中通常通过建立一个实体类,用来封装对象的属性和行为,通过set()和get()方法封装起来,确实感觉到更加便利。

    继承性就是使子类的对象拥有父类的全部属性和行为,同时可以增添自己的所特有的属性和行为。比如在图形卡片排序游戏这题中,就是将Circle类、Rectangle类和Triangle类都继承自Shape类,在Shpae类中写了求面积的方法,然后在子类中运用方法的重载,完成面积的求算;除面积外,Circle类中还可以增添自己所特有的属性:radius,方法:getRadius()和setRadius();而创造时可以new一个Shape,然后通过Shpae来获取到子类,更有结构层次感,使用更方便。

    多态性就是一个java程序中同名的多个不同方法共存的情况,通常使用方法的重载来实现类的多态性,多态的实现并不依赖具体类,而是依赖抽象类和接口。在多态的机制中,父类通常会被定义为抽象类,在抽象类中给出一个方法,但不给出实现的具体过程,通过继承父类来实现。比如第五次作业中的第一题图形继承与多态,在这题中,就是将Shape类定义为抽象类,其他的方法也定义为抽象类,在子类中给与这些方法的具体实现。

     

    ③作业过程中遇到的问题及解决方法

    第四次作业中的第三题“图形继承”相对较简单,但是还是在这题上花了很多时间,因为一直拿不到满分,后面发现是因为输入为0时输出不正确,确实是自己考虑的疏忽了;“立方体对象测试”不过关,检查后发现是因为自己box类中的getArea()方法中没有写上super调用父类,所以数据传不过来,输出一直为0。还有第五次作业中的第二题“图形继承与多态”在eclipse中运行题目中所给的样例输出都是正确的,但是提交到pta上就一直是只有八分,只有“数量非法”和“图形数均为0”两个测试点过了,其他的测试点全部提示答案错误,然后向室友寻求帮助,一开始也找了很久都没有发现问题到底出在哪,花了很长很长时间在这里,最后发现可能是toString()方法的问题,于是在几个子类中将toString()方法删去,父类中定义的抽象方法toString()也删去,然后再提交就是满分了。


    ④每次作业花费的时间比例

    4:3:3
    ⑤对编程过程的严谨性的认识及教训

    第五次作业中的第二题“图形继承与多态”,因为是题目中所给的UML类图中有toString()方法,就写在Shape类中了,因为自己的输出并没有运用到toString()方法,所以在子类中的重载方法也是空的。然后去查阅相关资料发现:“子类重写父类的方法的访问权限要大于或者等于父类中被重写的方法”,否则就会出错,而我的子类中没有加public,所以子类中的访问权限小于父类中方法的访问权限,pta中就会报错。通过这次因为语法中结构的认知错误,而明白了java中继承与承载方法的使用权限,虽然花费了很多时间,但最后有收获就是好的。
    2.OO设计心得
    ①对面向对象三大技术特性之间关系的理解

    封装将复杂的功能封装起来,对外开放一个接口,简单调用即可。而继承可以有效减少类的冗余代码,通过继承来实现,让类与类之间产生关联,为多态提供基础,多态是一个接口,多个方法,都通过继承实现的不同对象调用相同的方法,进而有不同的行为。
    ②面向对象设计的基本原则理解(单一职责原则及“开-闭”原则)

    单一职责原则“就一个类而言,应该仅有一个引起它变化的原因”,单一职责就是每个类实现一种功能,并且该功能应该由这个类完全封装起来,一个方法中并不会有很多很长的代码,“开-闭”原则:对于扩展是开放的,对于修改是关闭的。这样可以有效的增加了代码的复用性,老师总是和我们强调代码的复用性,写的代码复用性要强,体系结构更严谨,后面的一系列问题才更好解决。
    ③OO编程思维的理解

    编程的过程中尽量要遵守单一职责原则和“开-闭”原则,这样写出来的代码效率才高,只有真正的理解了编程的思想,才可以有效的编写程序。
    ④类设计心得

    学习到第二阶段,慢慢开始理解了类的设计的重要性,这一阶段的作业都是题目中给了参考UML类图,已经帮我们设计好了类,只要照着题目框架协就可以了,相对还是好一些的,不过听说下一阶段题目中就不会再给UML类图了,需要自己去设计类了,感觉还是挺有难度的,思维不够。
    3.测试的理解与实践
    ①测试对于编码质量的重要性

    有的代码你编写完成,仔细检查也没发现错误,逻辑好像也正确,但是如果不进行测试,在使用过程中可能突然就出现了bug,到时候再改就有些为时过晚,而且让人质疑代码的质量,所以说测试对编码质量是很重要的。
    ②查阅资料,假设使用Junit进行程序的测试是否可行

    网络上查询了相关内容,发现使用Junit进行程序的测试是可行的。
    4.课程收获
    总结这四周来在OO方面的教训及收获

    学习到了类的封装、继承和多态的使用,这一阶段学习的java知识可以简单的运用到一些实例当中。编程过程中思维一定要严谨,脑中要构造出程序完整的体系结构,这样写出来的程序才可以达到要求。找bug的过程虽然很痛苦,但是当看到pta上提交出来的一列红色的答案正确心里太舒服了,还是有点小小的成就感的。
    5.对课程的建议
    ①第三阶段作业难度、题量的建议

    希望第三阶段难度不要加太大,没有UML图我感觉就挺有难度的了,可能要花费更多的时间了。题量的话两三题就挺好的,不要再加多了。
    ②课程内容讲解方面的建议

    老师讲解的挺好的,也挺容易明白,就是有时候希望讲解了长时间后,可以休息一下,缓缓;还希望老师可以多讲讲类的设计,如何想到这样设计,怎么去实现这个设计相关的内容。

  • 相关阅读:
    高性能MySQL之锁详解
    采样方法-数据不均衡
    bert中的分词
    中文多分类 BERT
    Transformer+BERT+GPT+GPT2
    GPU下train 模型出现nan
    list 转换成dictionary,并统计词频
    python多个分割符split字符串
    tensorflow中的kernel/Adam 变量的来源
    tensorflow 使用预训练好的模型的一部分参数
  • 原文地址:https://www.cnblogs.com/liujixiang/p/12806208.html
Copyright © 2011-2022 走看看