zoukankan      html  css  js  c++  java
  • Java第二阶段作业总结

    前言

            第四次作业包括水文数据校验及处理、蒙特卡罗方法求圆周率、图形的继承;第五次的作业包括图形的继承和多态一元多项式求导;第六次作业包括图形卡片排序游戏、图形卡片分组游戏、求素数。这三次作业涉及的知识点有正则表达式对数据合法性的校验、继承、多态等。

    作业过程总结

       ①    总结三次作业之间的知识迭代关系

                   第四次作业涉及的知识点主要是类的继承、以及Java中的字符串处理类以及正则表达式对输入字符串数据进行合法性的校验以及计算;第五次作业则是对类的继承多态性的使用;第六次作业的知识点含有对接口的应用。

       ②  如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性

                  每次作业的结构中会有不同的类,每个类又有其私有的属性,封装就是把类所属的信息如其方法,属性等保护起来,所以有属性的封装、方法的封装等,如果其他类需要用的时候可以通过setget方法。表示私有化或者公有的需要用到权限修饰符,private是私有的,public是公有的,protect是同一个包内可公有的;继承性在图形继承中的题目中有更大的体现,如shape是父类,各种图形是子类,父类则包括所有子类的共有的属性和方法,但是直接的父类只能有一个;多态性则在继承的基础上又增加了扩展性,同一个方法用于不同的对象的时候会有不同的结果,就像求不同图形的面积,计算方法不一样,但是如果在父类中有一个求面积的抽象方法,子类再去重写父类的方法,调用的时候就会根据不同的对象去执行不同的计算方法。但是使用abstract关键字修饰的抽象类不能被实例化,抽象方法也是没有具体实现的方法。

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

               1、 作业中最大的问题在第四次的水文校验,主要是正则表达式,一开始对于题目都没有思路,后来把数据拆开,一部分一部分来检验,去除空格也巧妙的用到了trim,做题时出现了NumberFormatException运行异常,因为判断数据是否合法时有个判断没返回false导致错误,如下图:

               2、 在求导的时候也主要是正则表达式的问题,因为多项式含有的可能很多,所以用正则就会比较麻烦有很多判断方法,写的时候就是用很多的数据去试,然后与应该输出的不符就一点一点的去改相应的正则表达式的部分,效率也比较低。除此之外还要replace方法使用出现的错误,直接x.replace就没有变化应该x=x.replace;

               3、 第六次作业中的图形卡片问题,一开始对泛型的使用出了点问题,还有输入的问题导致答案一直错误,排序从大到小使用的comparaTo一开始也不对然后上网查阅尝试了很多方法。

      ④  每次作业花费的时间比例:4:3:1

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

                 水文校验以及一元多项式求导中对正则表达式的使用,如果判断的表达式不准确,当出现不符合正则的数据时就很可能出现运行异常,在使用数组时如果长度一不留神写错也会出现数组越界的运行异常,或者是空指针异常。

    OO设计心得

       ① 对面向对象三大技术特性之间关系的理解

              面向对象三大技术特征分别是封装、继承、多态。先有封装,封装就是把类所属的信息如其方法,属性等保护起来,所以有属性的封装、方法的封装等。多态和继承则是让代码不会繁杂冗余,也使代码具有了更好的扩展性。

       ②面向对象设计的基本原则理解(单一职责原则以及“开-闭“原则)

             单一原则:面向对象设计时需要分析需要的实体,将其分为不同的类,而类应该需要具备单一职责的原则,每一个类有其自己的属性和方法来实现需要完成的需求,如果将不同的功能需求写在一个类中,在需要对功能进行变动时就会比较复杂,而实现了单一原则只需要在相应变动的类中进行修改,因此提高了代码的复用性

             “开-闭“原则:即对扩展开放,对修改关闭。这样在遇到不同需求的时候,就几乎不用改代码,只是增加需要的类,然后再执行调用就好了。既增加了需求,又维护了原来的稳定性。

       ③OO编程思维的理解

        面向对象对于问题的解决和实现在于考虑需要什么样的实体不在于问题实现步骤的具体化,于是抽象出需要的类,而类有其自己的属性和方法,具体的一个实体则称为对象,通过类和对象的继承、多态、封装来解决问题。继承主要可以提高代码的复用性,比如子类可以继承父类的方法,还可以扩展其他的方法。

       ④类设计心得

        做作业的时候,需要将题目分解,需要什么类,类又含有怎样的属性和方法,这时就需要实现单一原则,同时为了扩展性等,类与类之间又可以有继承关系。

    测试的理解与实践

       ①测试对于编码质量的重要性

           在做一元多项式的时候,测试了很多的数据,因为正则表达式的不准确,然后根据测试出来的结果去改正则表达式。

       ②使用Junit进行程序的测试

           测试时需要将junit单元测试包引入,写测试类的时候需要注释,一般用@Test,使用Junit进行测试是可行的,如果出现绿色则代表通过,红色则是有错误。

    课程收获

           这四周来在OO方面的教训及收获:主要是在正则表达式那块比较吃力,感觉写的挺对的但是又往往一大堆的出路,其次就是加深了对继承以及多态的理解,也学会了用Collections进行排序以及对方法的重写。

    对课程的建议

       ①第三阶段作业难度、题量的建议

         题目的难度可以稍微呈递增,题量希望不要太多,有的时候题目多难度大,一周几乎都在写Java了。

       ②课程内容讲解方面的建议

         可以花一些时间讲讲布置的作业,提供新思路。

  • 相关阅读:
    jq:翻页时,保存上页多选框checkbox选中状态
    SpringMVC日期类型转换问题处理方法归纳
    SpringMVC的Date与String互转
    使用AJAX异步提交表单的几种方式
    ORACLE——日期时间格式化参数详解 之三
    ORACLE——日期时间格式化参数详解 之一
    ORACLE——日期时间格式化参数详解 之二
    Json-lib 进行java与json字符串转换之二
    Json-lib 进行java与json字符串转换之一
    java继承-子类调用父类的方法中包含子类重写的方法
  • 原文地址:https://www.cnblogs.com/ycj-12/p/12806510.html
Copyright © 2011-2022 走看看