961天 Mr.贰呆

唯一自信的就是自己的人品。
寻求王者玩家一起开黑净化峡谷环境​​

【java】中用面向对象思想简易描述打印机项目演示

发布于 / 660 次围观 / 0 条评论 / Java / 二呆 /

作为java程序员一定要适应面对客户频频更改项目的事实,这就要求必须具备面向对象的思想处理问题,这样才能顺利的按照频频改变的客户意向完成项目。下面以一个打印机的例子说明面向对象思想:

客户:开发一个打印机控制程序,要能够实现开机,关机和打印功能。

程序员:简单!

客户:我的办公室又增加了一台新的打印机,把你的程序修改一下,应该很简单吧!

程序员:你大爷!

1、首先面对这个项目,你在头脑中一定要按实际情况树立正确的思路。比如这个案例,客户让你设计打印机控制程序,你当然第一想到的是打印机这个实体,打印机它可以开机、打印、关机等。好的,现在先建立一个打印机Printer类,示例代码如下:

Printer.java

Printer{
    void open(){
        System.out.println("Open");
    }
    void close(){
        System.out.println("Close");
    }
    void print(String s){
        System.out.println("Print->"+s);
    }
}
2、经过你的努力,现在打印机Printer和开机、打印、关机的功能都有了,下面建立一个Test类,来测试一下客户给的功能能不能实现,示例代码如下:

Test.java

 Test{
    public static void main(String args[]){
        Printer printer=new Printer();
        printer.open();
        printer.print("abc");
        printer.close();
    }
}

3、这时你成功的完成了客户提出的要求,但几天后客户又来说增加了一台打印机,让你修改下程序,我们知道一台打印机的功能很多,现在又要增加一台,代码量势必会成倍增加而且还会有冗余。

    到这里,你应该用面向对象思想了,新增加的打印机它也是打印机,所以你应该把之前的打印机看做父类,新增加的打印机看做子类,如果新打印机的某些功能,在之前打印机上也有,那就不需要在做重复工作了,是不是简单多了?还有如果客户不断的增加打印机,你只需要再增加一个打印机子类,增加新的功能即可。

    简易描述就是这样的:

①原始打印机Printer不变,当做打印机父类;

②比如增加新打印机是惠普打印机HPPrinter和佳能打印机CanonPrinter;

③测试。

3、由第二步可以看出静态代码块是程序首先执行的,而且先执行父类再执行子类的,并且有几个对象只执行一次静态代码块。

其次是从程序主方法开始执行,再执行非静态代码块和无参构造函数,而且仍然是先执行父类再执行子类的。

如果子类含有有参的构造函数,那么执行子类的有参构造函数,就不执行子类的无参构造函数了,但同样要执行父类的无参构造函数。

看到这里你会发现,非静态代码块和静态代码块的区别在于非静态代码块和构造函数一样,需要创建一次对象就执行一次的。

随后执行子类的成员函数,如果子类的成员函数重写了父类的成员函数,则只执行子类的不执行父类的。

最后是主函数,因为主函数一个程序只有一个,所以只执行一次本程序的主函数。

4、经过前几步是不是对面向对象有了新的一些认识呢?其实上面还可以进行优化,如果你一开始就想到把Printer当做父类,那你就可以直接把客户的第一台打印机重新命名为XXXPrinter,这样很容易看明白。

    这个思路只是个简单描述,面向对象思想其实是让你先想到一个抽象的大类或者接口,然后再联系实际把许许多多的实体定义为子类,甚至还会定义子类的子类。

    就像本简易项目一样,它完美的用java中面向对象思想完成了简易打印机项目,从而让客户也能满意。

注意事项:

学习面向对象还是要不断熟悉实际的项目,多敲代码,Good Luck!

sitemap
共享域名