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

    目录

    0.前言

    1.作业过程总结

    2.00设计心得

    3.测试的理解与实践

    4.课程收获

    5.对课程的建议

      前言

    本次博客针对第三阶段的三次作业发表总结,作业要求主要是让我们深入了解类的各种类型的使用方法,如理解面向对象的封装性、继承性与多态性三大技术特性,练习如何使用接口、抽象类等。了解类面向对象设计的含义,进一步加深对Java的理解与学习。但是这几周的作业难度也大了很多,因为好多知识点都还不懂,知识盲区太多,所以花了很多时间,也很难理解,堆栈的使用还不熟悉。

    一、作业过程总结

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

        第一次作业(雨刷程序功能扩展设计),主要考察是类的封装、继承、多态,抽象类及接口继承关系的练习,第一题雨刷设计是在给定的汽车手动风挡玻璃雨刷程序的基础上,对程序进行重构(Refactoring),使得程序可以对功能进行扩展,对于程序的输出行数根据每一次对控制杆/刻度盘操作次数而定,每一次对控制杆/刻度盘进行了操作,则输出一行数据实现,难度较大,需要耐心一一检查,比如不同类型的校验、其中1代表控制杆升档操作、2代表控制杆降档操作、3代表刻度盘升刻度操作、4代表刻度盘降刻度操作、0代表操作结束(输入时只要遇到0即认为输入结束)等,第二次作业(统计Java程序中关键词的出现次数)考察了List、Set或Map中一种或多种及接口的使用,所有定义的抽象方法都必须在子类当中进行重写,在继承与多态中学会了ArrayList(一个可以存储对象的列表)的使用,大大方便了诸多对象的存储调用问题;统计一个输入的Java源码中关键字(区分大小写)出现的次数,第二题一开始没什么思路,于是参考了网上的思路,测试点要求较多,需要仔细审题。第三次作业(表达式求值)使用两个栈(Stack),一个运算符栈,一个操作数栈,还有正则表达式的考察,这三次作业难度不相上下,知识点都很多。

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

    作业遇到的大问题在于类的设计、数据校验的处理,具体来说在于正则表达式的处理问题。这个问题在每次作业中都出现,还是对正则表达式不是很熟悉,解决方法主要是网上查资料并且加以理解应用。对设计问题主要在于深入理解各个设计模式,把功能细化。
    每次作业花费的时间比例

    本阶段作业难度不相上下,所耗时间也更少,大概比例为1:1:1,编写程序和调试程序的时间各占一半。
    对编程过程的严谨性的认识及教训

     程序的严谨性无非是时间和空间的取舍,效率和容错的pk,具体情况具体分析。对于代码量大的程序而言,在设计时就应该考虑的十分严谨,否则写到最后再来调试修改却需要花费更多的时间,在此基础上,更为重要的就是基础知识的掌握,比如正则表达式的使用,错码或者漏码都影响最后结果,检查的时候也很难发现。还要考虑代码的复用性,不能为了针对某个问题简化而牺牲了大类的部分实现。

     二、oo设计心得

    (1)对面向对象三大技术特性之间关系的理解
    三大技术,继承,封装和多态可以分开使用也可以结合使用,封装使得代码可以继承,继承使得类代码可以使用多态,三大技术可以相互叠加拥有更简洁更好的效果。
    (2)面向对象设计的基本原则理解(单一职责原则及“开-闭”原则)
    单一职责相对好理解,一个类具有自己的属性和方法,只管理这类事务的处理,其他类型事务交由其他类去实现,开闭原则则是相对于封装而言的,开既程序可以开放,可以拓展,闭则是程序不能被修改,对于扩展是开放的,对于更改是封闭的。
    (3)OO编程思维的理解
      就一个类而言,无需顾忌其他大体,只要专心思考这个类的功能,作为宏观对象的微观表现。 所设计的类应该是以类复用为思考点,最大程度实现代码的复用,不仅仅是面向过程的一个代码针对一个问题;OO面向对象其实就是把程序看做一个个个体,个体进行分类,分级,整合的思想。具体分为封装,继承,多态,抽象。

      程序设计思想围绕着5个基本原则和3个基本要素,而我如今所接触到的主要就是单一原则和“开-闭”原则,且这两者的目的都是为了保证程序的稳定,外界对其的影响降到最低。设计的类职责尽可能的少,而设计完以后不再对其进行修改

    三、测试的理解与实践

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

    踩了坑,你对问题的认知才会更深刻。才会更加知道测试的重要性。如果只是停留在知道上,那么依然是止步不前。测试往往是一个整体的过程,需要整体的设计与规划,不应该想到什么就做什么。重要的是,测试到底多重要,怎么保证测试的质量,怎么用测试充分保证代码质量。

    ②查阅资料,假设使用Junit进行程序的测试是否可行

     JUnit 4.x 引用了注解的方式来对方法进行测试。通常测试方法都是被包含在一个测试类 中使用下面的代码来创建一个单元测试。通过如下操作:

     File → New → JUnit → JUnit Test case.

     @Test

    public void testMultiply() {

    MyClass tester = new MyClass();

    assertEquals( "10 x 5 must be 50 " , 50, tester.multiply( 10, 5 ) );

    }

    三、课程收获

    这四周来的学习过程中,我基本对于正则表达式的不了解,到现在努力里的去达成要求。对封装、继承、多态这三个要素的理解,对代码不管是复杂度还是重用性都有了较为明显的优化,以前的排序要写一段冒泡或者别的排序方法的程序,而现在学会运用comparable接口,直接调用即可等等。我觉得还是要对面向对象的那些性质和基本原则进行强化,基础得牢,否则很多方法的使用不会,做起题来很难下手。

    四、对课程的建议  

     对代码的测试点要求希望能够细化,能够发现我们对一些细节问题的处理是否恰当,以及可以知道所写代码的质量,能够更好更快的实现程序要求。

  • 相关阅读:
    批量备份mysql数据库(shell编程)
    批量检查多个网址是否正常(shell编程)
    就linux三剑客简单归纳
    sql语句浅谈以及mysql遇到的问题解决见解
    linux shell每天一阅 -- 安装nginx以及apache
    Linux文件系统检查错误
    Linux账号管理和ACL
    简书博客
    Block内的强引用
    一次没有意义的优化
  • 原文地址:https://www.cnblogs.com/hhheap/p/13048592.html
Copyright © 2011-2022 走看看