前言
第一次通过写博客来记录学习情况,本次博客主要针对学习Java以来的三次大作业进行一个总结,同时记录一些自己学习Java的感受以及对OO(Java)设计的心得。
作业过程总结
1:总结三次作业之间的知识迭代关系
第一次作业最简单,Java程序的循环选择等语句与C语言基本无异,对于学习过C语言的我来说没什么难度。本次作业主要是让我认识到Java程序的结构框架,同时学会如何在PTA上面通过Java的语句实现输入以及class名必须为Main,为第二次的大作业打下基础。
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); //通过该语句输入 double a=sc.nextDouble(); sc.close(); } }
第二次作业引进了Java中的方法,类似于C语言中的函数,每一个方法都实现一部分功能,通过new操作符定义一个对象就可以调用方法。本次作业相对第一次增加了类的使用,更进一步让我认识到了相对与C语言的注重过程不同,Java程序更注重于面向对象设计。
public static void main(String[] args);//主方法; public static boolean isLeapYear(int year) ; public static int numOfDays(int year,int month ,int day) ; public static String getWhatDay(int days) ;
第三次作业则强调了Java程序类的使用,一个Java程序可以有多个类,并且类与类之间可以通过new操作符相互调用。但需要注意的是,一个Java程序只能有一个public类,否则会出现错误。写完了第三次作业对于Java也有了一个初步的认识,在Java程序中对象尤为重要,方法与类都通过对象来实现调用,虽然还不是特别理解Java程序的类的构造与调用,但却知道Java 是一门完全面向对象编程的语言,所以必须熟悉面向对象才能够编写 Java 程序。
public DateUtil(int year, int month, int day) {} public int getDaysofDates(DateUtil toDate) {} public DateUtil getPreviousNDays(int n) {} public DateUtil getNextNDays(int m2) {} public String showDate() {} public int getDay() {} public int getMonth() {} public int getYear() {} public boolean checkInputValidity() {} }
2:如何通过作业逐步从面向过程过渡到面向对象
三次作业的难度是一次次增加的,第一次题目主要是通过面向过程来进行解题,内容简单且没有涉及太多Java独有的特性。第二次作业则涉及到了Java中的方法,与C语言中的函数类似,更加强调程序的封装性,已经渐渐向面向对象靠拢。第三次则涉及到了Java独有的类属性,面向对象的属性已经渐渐明显。正是通过三次作业的难度不断提升,也使得程序从面向过程过渡到面向对象。
3:作业过程中遇到的问题及解决方法
问题1:如何在PTA上面编写代码以及如何进行输入。解决方法:通过百度了解到在PTA上提交代码需要把class类名改为Main,其次在PTA上需要通过import java.util.Scanner和Scanner sc=new Scanner(System.in)来输入测试数据。
问题2:不知道如何调用其他类并将输入数据供其他类使用。解决方法:通过new操作符定义一个类的对象,通过对象调用该类。其次通过this建立
class DateUtil{ private int year; private int month; private int day; public DateUtil(int year, int month, int day) { this.year=year; this.month=month; this.day=day; } }
4:每次作业花费的时间比例
时间比约为:第一次作业:第二次作业:第三次作业=1:3:9
5:对编程过程的严谨性的认识及教训
编程过程的严谨性不仅能够加快程序的完成速度,而且最重要的是能够让你的程序有结构有条理。这一点非常主要,尤其是在PTA上写作业时,常常提交后的结果不是答案正确,而是部分正确,这也就意味着程序有Bug需要你去把他找出来。如果你的程序没有条理,找Bug就需要从头找到尾非常繁琐,而如果写代码的时候严谨一些,找Bug的时候也能够大致判断错误在哪里,可以节省大量时间。
教训:PTA上找Bug的时候就因为写代码时不够严谨代码太乱 ,导致找Bug的时间比写代码时间还要多。
OO设计心得
1:面向过程与面向对象的比较
面向过程注重过程,通过面向过程解决问题需要思考的问题是解题步骤,通过一个个函数实现一个个步骤,解决问题也就是通过一个个函数的调用。
面向对象注重对象,通过面向对象解决问题需要分离出一个个的对象,再赋予这些对象它们应该具备的属性和方法,解决问题就是让这些对象去执行它们的方法。
2:面向对象设计的基本原则理解
最重要的一条原则:单一功能原则,即每个对象应仅具有一种单一功能。该原则的目的就是为了在某个需求变动时,修改有变更需求对应的功能对象就可以,而不用更改太多代码。
3:OO编程思维的理解
面向对象编程是从面向过程发展而来,在解决一些繁琐的问题时面向对象思维能够化繁为简,各个对象各司其职,能够更快更好的提出解决方案。
测试的理解与实践
1:测试对于编码质量的重要性
测试就像是工厂里面的质检员,它检验程序是否合格。不经过测试的代码一定是有Bug的,没有谁能够一次性创造出完美无瑕的程序。只有经过不断的测试,代码才能不断的变得更完美。
2:假如让你设计测试用例,你会如何做
首先测试一些错误的用例(边界值),其次测试一些特殊用例(例如闰年的2月29日或者输入数据为0),最后输入正常的测试数据进行测试。
课程收获
初学Java,初次了解面向对象设计。刚开始自己还停留在C语言的面向过程设计代码,虽然也能够写出程序,但也应该开始转变写程序的思路。学习了四周也了解到了很多关于Java的知识,很开心又学会了一门新的编程语言。
对课程的建议
学习编程就应该多练,不然进步很缓慢。建议老师多多增加一些课堂作业与PTA上的作业。其次老师可以经常推荐一些好的学习资源,毕竟Java这类课程课堂上不一定能学到很多,更多的在于学生的自觉去课外自学。