我学了C语言,他是面向过程的。
我在学习面向对象时,发现和面向过程思考问题很多地方不一样,考虑现实中的问题。
请大家说一下你们是怎么思考面向对象的问题。
谢谢大家
PHPz2017-04-17 13:40:42
C是過程導向的語言,在程式碼中定義的方法一般是一直呼叫;而在物件導向的語言(如Java)或基於物件導向的語言(如JavaScript),方法都定義在物件上或類別上(ps:js中對類別並沒有明確的說法)。譬如,有一個比較大小的方法:
int compare(int num1,int num2){
return num1>num2?num1:num2;
}
//调用
compare(1,2);
public class Compare{
private int num1;
private int num2;
public Compare(int num3,int num3){
this.num1=num3;
this.num2=num4;
}
public int com(){
return this.num1>this.num2?this.num1:this.num2;
}
}
//调用
Compare cpm = new Compare(5,6);
System.out.println(cpm.com());
上面一個簡單的範例,是為了區分一下過程導向和物件導向針對同一個問題的不同思維方式。雖然這裡看不出物件導向的突出點,但是在實際專案中,方法是非常多的,有很大的編碼量。在這種情況下,類別就能很好的對程式碼進行組織,譬如一個使用者有吃飯、走路、睡覺、娛樂等不同行為。
在C語言中,實作可能是這樣的:
void eating(){}
void walk(){}
void sleep(){}
void entertainment(){}
.......//定义其它方法
而在物件導向的語言中,實作可能是這樣的:
public User{
void eating(){}
void walk(){}
void sleep(){}
void entertainment(){}
....//其它方法
}
很明顯,物件導向對程式碼結構進行了很好的組裝,讓人更容易理解。酷殼有一篇關於理解物件導向的文章:
如此理解物件導向程式設計 ,希望對題主理解物件導向有幫助