什么是面向对象?
从学习VB开始,就一直在说面向对象,面向对象。。!@¥@#%¥@!。。说了多少遍,在软工之前,也一直没有接触到一个明确的定义。
在软件工程中,Coad和Yourdon给出了一个定义:
面向对象=对象+类+继承+通信
如果一个软件系统是使用这样4个概念设计和实现的,则我们认为这个软件系统是面向对象的。
如图,对象a为类a的一个实例,类a没有方法b,但是如果某种程序设计语言支持多重继承的话,那么,对象a可以从对象b继承方法b,从而简化了代码。另外,对象和对象之间还存在着通信,消息是一个对象与另一个对象的通信单元。
例如:
public class Account { private String no; private String password; private int balance; public Account(String accounts,String pw,int num) { no=new String(accounts); password=new String(pw); balance=(num>0?num:0); } public String getNo(){ return no; } public int getBalance() { return balance; } public int putMoney(int num) { if(num>0) { balance+=num; return num; } return 0; } public int getMoney(int num) { if(num<=0) return 0; if(num>balance) return 0; balance-=num; return num; } public boolean setPassword(String pw) { password=new String(pw); return true; } public boolean check(String accounts,String pw) { if(no.equals(accounts)&&password.equals(pw)) return true; else return false; } }
如上图,这是ATM机中的一段代码,这段代码定义了一个账户,这个账户有三个属性:no,password,balance.后面的Account(Stringaccounts,String pw,int num)是这个类的构造方法,构造方法后面是这个类的方法,通过这些方法,可以实现对对象属性值的修改。
当在ATM机中,可以用Account 我的账户=new Account("a","1",100),来实例化一个新的账户对象。然后对新对象的使用就像使用VB中的对象那样,直接对属性进行操作就行。
感觉面向对象的编程和面向过程的编程最大的不同就是数据都封装在了对象里面,没有了独立的过程和函数;通过继承和接口来实现代码的复用。。。。(还在感觉中。。)