第一阶段java作业总结

一、作业过程总结

       学习了如何配置JDK、下载eclipse,如何简单编写一小段代码,发现java代码和C语言还是有很多相似的地方,但也有不同的地方。以后我还会碰到各种各样的困难,现在最好夯实基础,避免犯不必要的小错误。

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

      1. 第一次作业的计算税率、判断坐标所在位置、电话键盘字母数字转换、判断三角形类型和统计最大数出现次数是java的基础训练,简单的了解了java的输入输出,不是C语言的scanf输入语句,而是

不是C语言的printf输出语句,而是          System.out.println(y+"is an invalid input");

      java也使用if...else...,while等条件语句

       2.第二次作业

这次作业的求一元二次方程、判断闰年及星期几、求下N天和求前N天,主要训练我们java的创建对象、构造函数(构造方法)。

       3.第三次作业

用类解一元二次方程式、日期类设计、日期问题面向对象设计(集合一)以及聚合二,主要训练我们java的类设计,也是前两次知识基础的一次考察。根据UML类图,理清Year类,Month类,Day类,DateUtil类的关系。

       ②如何通过作业逐步从面向过程过渡到面向对象 

        我们前面学习的C语言就是典型的面向过程编程语言,我的第一次作业很明显的用面向过程的思想实现题目的要求,第二次作业虽然用了构造方法,但也没有体会到面向对象的思路,第三次作业的类设计就比较突出了面向对象的特点,尤其是后面两道聚合题,就像是第二题的拼接改良版,这也意味着代码的复用性增强了。

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

         第一次作业比较基础,主要是注意java的格式;随着作业难度的逐渐增加,第二次作业开始,我便百度查找一些java基础知识以及方法的使用资料,模仿资料构造方法,根据测试点修改代码;第三次作业花费了较长时间在后两题,百度查找许多资料,也问了同学自己代码的错误,不断的修改和改进。

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

         课程越多,能感觉到对java更加深入的探究,作业难度也逐渐增加,在作业上占的时间也越来越多,每次作业花费的作业比例是1:2:3。

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

         计算税率这道题难度不大,但是自己的小马虎,把一个边界值打错了,导致了不必要的错误;判断闰年及星期几这题我觉得在eclipse写完代码的没什么问题的时候,却在PTA作业提交后发现自己没有考虑到平年2月29日的错误情况,只考虑了月份日期范围[1,31],没有很全面,自己还是考虑的不严谨。

二、OO设计心得

        ①面向过程与面向对象的比较

         面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,然后在主函数中通过调用不同的函数完成不同的功能,最后得到你想要的输出。而面向对象是以类作为功能的组织基础,以功能来划分问题,而不是步骤。面向对象就显得比面向过程灵活得多,复用性也强。

        ②面向对象设计的基本原则理解

          1.开闭原则:在设计类和方法模块的时候,有新的需求或变化,应该可以在不修改原有的模块(修改关闭)的基础上,能扩展功能(扩展开放)。

          2.单一职责原则:每一个类应该专注于做一件事情,不然有新的需求或变化就要有很大的改动。

          3.里氏替换原则:子类可以在任何地方替换它的父类。原则是对"开-闭"原则的补充,实现"开-闭"原则的关键步骤就是抽象化,而里氏替换原则是对实现抽象化的具体步骤的规范,违反里氏原则的,一定违反开闭原则。

          4.依赖倒置原则:要依赖抽象,不要依赖于实现,抽象不应该依赖于具体实现,具体实现应该依赖于抽象,这本质区别于面向过程。

          5.接口隔离原则:应当为客户端提供尽可能小的单独的接口,而不是提供大的总的接口。它的含义是尽量使用职能单一的接口,而不使用职能复杂、全面的接口。

          6.迪米特原则:要求尽量的封装,尽量的独立,尽量的使用低级别的访问修饰符,这是封装特性的典型体现。要求类之间的直接联系尽量的少,两个类的访问,通过第三个中介类来实现。

          7.组合/聚合复用原则:如果只是达到代码复用的目的,尽量使用组合与聚合,组合聚合只是引用其他的类的方法,而不会受引用的类的继承而改变血统。

         ③OO编程思维的理解

           我在前两次作业过程中,并没有对面向对象有什么很深的理解,当着手接触第三次作业时才有些初步了解。而后老师讲了面向对象的三大要素:封装,继承,多态中的封装和继承,在练习中也或多或少理解了面向对象的架构。面向对象就是以对象为中心,通过类和对象,分解和模块化不同组件,设定不同的功能,把一个问题分解成多个小的独立、互相作用的组件。

三、测试的理解与实践

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

           测试阶段的根本目的是尽可能多地发现程序中的错误, 最终提高代码的质量。就像老话说的,是骡子是马拿出来遛遛。但是提高代码的质量不能依赖于测试, 代码的高质量是分析和设计出来的,而不是靠测试修补出来的。

          ②假如让我设计测试用例,我会

           穷举所有测试用例是不可能的,在设计测试用例时,应包括正确的输入条件和不正确的输入条件,在输入范围内外以及边界值选取测试数据。

四、课程收获和教训

           面向对象的确比面向过程可维护性好,可复用性强,适应了面对过程的思维要让自己习惯面对对象可能还需要些时间,还有就是思路的设计还需要加强,有时自己的思路过于复杂,判断条件太多,需要划分大范围小范围进行简化。

五、课程建议

          多举一些例题,多训练一下思路的简化设计。

原文地址:https://www.cnblogs.com/1023ls/p/12627909.html