面向对象VS面向过程,到底好在哪里?

public test(){
    CodeGenerate cg=new CodeGenerate(12,true,false,false);
    //生成3个密码
    String a,b,c ;
    a=cg.generate();
    b=cg.generate();
    c=cg.generate();
}

先看一个需求,假如有一个需求,要生成一个随机密码。要求能指定密码长度,密码的字符种类。

如果用面向过程的方法,定义一个函数来实现.

String generatePassword(int length,boolean includeNumber,boolean includeSymbol,boolean include caps)

调用时:

//生成3个10位包含大小写字符、数字和符号的字符串密码,则需要如下调用三次
String a,b,c ;
a=generatePassword(10,true,true,true)
b=generatePassword(10,true,true,true)
c=generatePassword(10,true,true,true)

面向对象的实现.

public class CodeGenerate
    private int length;
    private boolean includeNumber,includeCaps,includeSymbol
    public CodeGenerate(boolean includeNumber,boolean includeCaps,boolean includeSymbol){
        this.includeNumber = includeNumber;
        this.includeCaps = includeCaps;
        this.includeSymbol = includeSymbol;
    }
    public String generatePassword(){
       //....
    }
}

调用时

//生成3个10位包含大小写字符、数字和符号的字符串密码,则需要如下调用三次
String a,b,c ;
CodeGenerate cg = new CodeGenerate(10,true,true,true)
a=cg.generatePassword();
b=cg.generatePassword();
c=cg.generatePassword();

 调用时,需要更少的参数,有些参数已经作为对象的属性保存在对象中。面向对象编程,对象中保存了一些状态值,有了这些状态值,函数调用时,可以减少参数传递。更重要是,运用面向对象的思维方法,更容易将现实世界映射到程序代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值