C#2.0學習3--面向對象基本概念

C#面向對象概念

 

一、面向對象的概念:

以接近現實的處理手法來處理項目中的設計。一個例子:

請描述一下森林中一隻獅子捕食一隻兔子的場景。

 

用結構化編程實現

用面向對象方式實現

strut Lion

{

int lId;

string name;

}

strut Rubbit{

int 1Id;

string name;

}

定義函數:

void lionRunning(Lion);

void lionCatch(Lion,Rubbit)

void lionEating(Lion,Rubbit )

void lionHappy(Lion);

void rubbitCrying(Rubbit)

void rubbitRunning(Rubbit)

bool rubbitIsDead(Rubbit);

Class Lion

{

 int lIdl

string name;

public void Running(){};

public void Catch(Rubbit);

public void Eating(Rubbit);

public void Happy();

}

class Rubbit

{

int rId;

string name;

public void Running()

public void Crying()

public bool Isdead()

}

主程序:

Lion fatty;

Rubbit may;

lionRunning(fatty);

rubbitRunning(may);

lionCatch(fatty,may);

rubbitCrying(may);

lionEating(fatty,may);

if (rubbitIsDead(may))

   lionHappy(fatty);

主程序

Lion fatty=new Lion();

Rubbit may = new Rubbit();

Fatty.Running();

May.Running();

Fatty.Catch(may);

May.Crying();

Fatty.Eating(may);

If (may.IsDead())

   Fatty.Happy();

 

1.從左邊的設計,我們看出代碼是一系列的函數構成,有以下幾點:

不直觀,程序的組織性不強,函數調用時不容易確定具體調用哪一個

要傳的參數太多

       2.右邊代碼,看起來要好一些,函數的參數少,而且都被組織到類的內部,要調用函數時只要確定是哪一個對象要調用,就很容易找到,從程序調用來進右邊的主程序更接近現實世界的處理方式

 

二、面向對象的特點

1.  封裝

從上表右邊看來,函數代碼寫在類的內部,只能被類的對象所調用,別人不可隨便訪問,這樣可以保護你的代碼,而且函數與對象相關,方便調用

2.  繼承

從代碼重用方面,我們可以把共性的特徵,和行爲抽象出來,比如,程序的需求要我們實現所有的食肉動物都能捕食食草類動物,對於上表左邊程序,我們要全面修改代碼,而對於右邊的程序我們可做如下抽象:

Class Carnivore

{

int aId;

string name;

public void running()

public void Catching(Vegetarian)

public void Eating(Vegetarian);

public void Happy();

}

class Vegetarian

{

int aId;

string name;

public void running()

public void crying()

public bool Isdead()

}

然後,我們使用繼承 class Lion : Carnivore

Class Rubbit : Vegetarian

這樣,我們不用構造兩個類,就能使用它們公共的特徵和函數了

這樣一來,我們可以完成所有食肉動物與食草動物的捕食關係了

如果,我們要實現老虎捕食獵物,那也很容易了,

我們只要定義下面代碼:

Class Tigger : Carnivore

就可以了

3.  多態

從上面的繼承中我們可以看出,實現一個新的類是那麼容易,

但大家想一個問題,老虎與獅子,畢竟不是一種動物,那們的方法不可能完全相同,針對不同的子類,它的方法也不可能相同。比如它們的happy方法可能是這樣的

public void happy()

{

Console.WriteLine(“我高興,所以我發出虎嘯”);  //如果是獅子,就可能發出的是獅吼

}

這個問題我們放在下一課中祥細討論

三、面向對象設計程序的作用

1.  重用代碼

2.  可維護性高

3.  可插入性(這個特點與多態相關,下次課重點講述)

意爲:程序不需修改或少做修改,就可實現用戶提出的新的問題

如上面

4.  直觀,更接近現實

5.  方便調用

四、綜合

 對象是什麼

從概念層面講,對象是某種擁有責任的抽象。(職能)

從規格層面講,對象是一系列可以被其他對象使用的公共接口。(對象交互)

從語言實現層面來看,對象封裝了代碼和數據。(數據和程序)

 

 
發佈了27 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章