积极主动敲代码,使用Junit学习Java程序设计

积极主动敲代码,使用JUnit学习Java

早起看到周筠老师在知乎的回答软件专业成绩很好但是实际能力很差怎么办?,很有感触。

从读大学算起,我敲过不下200本程序设计图书的代码,我的学习经验带来我的程序设计教学方法是:程序设计入门,最有效的方法要积极主动敲代码。这也就是为什么我要求同学们把教材上的代码动手敲一遍的原因。

引用一下徐宥的例子:

记得《The TeXbook》上有一个程序,Knuth让大家自己照着敲入计算机,然后还很幽默地说,实验证明,只有很少的人会按照他说的敲入这个程序,而这部分人,却是学TeX学得最好的人。看到这里我会心一笑,觉得自己的方法原来也不算笨。从此,一字不漏敲入一本书的程序成了我推荐别人学习语言的最好办法。

针对《Java程序设计》课程,我可以改写一下,实验证明:只有很少的同学会按照我说的敲入教材上的程序,而这部分人,却是学Java学得最好的人。我知道那些所谓“把书上代码都敲了,但还是搞不懂”的同学是怎么回事,所以我验收代码的第一个问题是“代码是自己敲的吗?”

好吧,我承认个别同学真的敲了代码还不明白怎么回事,问题出在敲代码没有积极主动上,为了让这部分同学掌握学习方法,我给出一个敲代码的例子。

教材P129有个StringBuffer的例子,代码如下:

1 public class StringBufferDemo{        
2   public static void main(String [] args){    
3       StringBuffer buffer = new StringBuffer();    
4       buffer.append('S');     
5       buffer.append("tringBuffer");     
6       System.out.println(buffer.charAt(1));     
7       System.out.println(buffer.capacity();     
8       System.out.println(buffer.indexOf("tring"));    
9       System.out.println("buffer = " + buffer.toString());    
10  }    
11}    

作为初学者的你们,在敲代码的时候肯定会遇到很多问题:大小写,丢字母,中英文字符,文件命名等,能让这个程序顺利编译就能学到不少知识。顺便说一下,上面的代码直接拷贝是不能合用javac StringBufferDemo.java直接编译成功的,你可以试一下。

程序编译通过后,如果直接用java StringBufferDemo运行一下程序,看一下运行结果,这样学不到太多。一种较好的做法是手动推导结果。

如果能想到StringBuilderString有什么不同,到网上找一下类《全面解释java中StringBuilder、StringBuffer、String类之间的关系》这类的文章看看就更积极主动了。

我们在实验二 Java面向对象程序设计中学习了单元测试和JUnit,使用JUnit改写教材上的例子是积极主动敲代码的好途径。

public class Score {

    private int No;          //学号
    private int score;        //成绩

    public ScoreClass() {    //无参数的构造方法

        No = 1000;
        score = 0;
    }

    public ScoreClass(int n, int s) {     //有两个参数的构造方法
        No = n;
        score = s;
    }

    public void setInfo(int n, int s) {      //设置成绩
        No = n;
        score = s;
    }

    public int getNo() {
        return No;     //获取学号
    }

    public int getScore() {
        return score;    //获取成绩
    }

    @Override
    public String toString() {
        return No + "\t" + score;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {   // 是否引用同一个对象
            return true;
        }
        if (obj == null) {   // 是否为空
            return false;
        }
        if (getClass() != obj.getClass()) {  // 是否属于同一个类型
            return false;
        }
        ScoreClass other = (ScoreClass) obj;
        if (other.No == No && other.score == score) {
            return true;
        } else {
            return false;
        }
    }
 }

当然,积极主动是一种学习态度,看看学姐在我另一门课如何积极主动学习的对atime、mtime和ctime的研究,我说多思考了吗?

欢迎关注“rocedu”微信公众号(手机上长按二维码)

做中教,做中学,实践中共同进步!

积极主动敲代码,使用Junit学习Java程序设计_第1张图片

  • 原文地址:http://www.cnblogs.com/rocedu/p/4837092.html

  • 推荐网站:博客园、新浪微博、扇贝背单词、DKY背单词小组、有道云笔记、豆瓣读书

  • 版权声明:自由转载-非商用-非衍生-保持署名| Creative Commons BY-NC-ND 3.0

你可能感兴趣的:(积极主动敲代码,使用Junit学习Java程序设计)