c#
物件導向概念 一、
物件導向的概念:
以接近現實的處理手法來處理專案中的設計。乙個例子:
請描述一下森林中乙隻獅子捕食乙隻兔子的場景。
用結構化程式設計實現
用物件導向方式實現
strut lion
strut rubbit
定義函式:
void lionrunning(lion);
void lioncatch(lion,rubbit)
void lioneating(lion,rubbit )
void rubbitcrying(rubbit)
void rubbitrunning(rubbit)
bool rubbitisdead(rubbit);
class lion
;public void catch(rubbit);
public void eating(rubbit);
}class rubbit
主程式:
lion fatty;
rubbit may;
lionrunning(fatty);
rubbitrunning(may);
lioncatch(fatty,may);
rubbitcrying(may);
lioneating(fatty,may);
if (rubbitisdead(may))
主程式
lion fatty=new lion();
rubbit may = new rubbit();
fatty.running();
may.running();
fatty.catch(may);
may.crying();
fatty.eating(may);
if (may.isdead())
1
.從左邊的設計,我們看出**是一系列的函式構成,有以下幾點:
不直觀,程式的組織性不強,函式呼叫時不容易確定具體呼叫哪乙個
要傳的引數太多
2.右邊**,看起來要好一些,函式的引數少,而且都被組織到類的內部,要呼叫函式時只要確定是哪乙個物件要呼叫,就很容易找到,從程式呼叫來進右邊的主程式更接近現實世界的處理方式 二、
物件導向的特點
1.封裝
從上表右邊看來,函式**寫在類的內部,只能被類的物件所呼叫,別人不可隨便訪問,這樣可以保護你的**,而且函式與物件相關,方便呼叫
2.繼承
從**重用方面,我們可以把共性的特徵,和行為抽象出來,比如,程式的需求要我們實現所有的食肉動物都能捕食食草類動物,對於上表左邊程式,我們要全面修改**,而對於右邊的程式我們可做如下抽象:
class c
arnivore
class v
egetarian
然後,我們使用繼承
class lion : c
arnivore
class rubbit :v
egetarian
這樣,我們不用構造兩個類,就能使用它們公共的特徵和函式了
這樣一來,我們可以完成所有食肉動物與食草動物的捕食關係了
如果,我們要實現老虎捕食獵物,那也很容易了,
我們只要定義下面**:
class tigger : c
arnivore
就可以了
3.多型
從上面的繼承中我們可以看出,實現乙個新的類是那麼容易,
但大家想乙個問題,老虎與獅子,畢竟不是一種動物,那們的方法不可能完全相同,針對不同的子類,它的方法也不可能相同。比如它們的
方法可能是這樣的
這個問題我們放在下一課中祥細討論
三、物件導向設計程式的作用
1.重用**
2.可維護性高
3.可插入性(這個特點與多型相關,下次課重點講述)
意為:程式不需修改或少做修改,就可實現使用者提出的新的問題
如上面4.直觀,
更接近現實
5.方便呼叫
四、綜合
物件是什麼
從概念層面講,物件是某種擁有責任的抽象。(職能)
從規格層面講,物件是一系列可以被其他物件使用的公共介面。(物件互動)
從語言實現層面來看,物件封裝了**和資料。(資料和程式)
物件導向 基本概念
物件 由其責任定義的,能夠自己負責自己,從而簡化了使用物件的控制程式的任務。將責任轉移到更區域性的層次。類 class 根據物件所具有的責任定義物件的型別。責任 行為或狀態,這些分別是由方法和或資料實現的。具體類 concrete cass 實現抽象類某一特定型別行為的類,具體類是乙個概念特定不變的...
物件導向基本概念
物件導向是相對面向過程而言 物件導向和面向過程都是一種思想 面向過程強調的是功能 行為 物件導向 將功能封裝進物件,強調具備了功能的物件 物件導向是基於面向過程的 類的概念 具有相同屬性的一類事物 物件的概念 就是對這乙個類的具體的描述 比如人類就是抽象的類,具體的某乙個人就是物件,對人這個類的具體...
C 物件導向程式設計基本概念
繼承與派生 都是針對同一種技術現象的不同角度說法 子類繼承父類,父類派生出子類 繼承 乙個新類從已有的類那裡獲得其已有特性,這種現象稱為類的繼承。派生 從已有的類產生乙個新的子類 或稱為基類和派生類 多重繼承 乙個派生類有兩個或多個基類。派生類是基類的具體化,而基類是派生類的抽象。注 多重繼承的構造...