1、面向對象思想的相關概念

一、綜述

       在計算機科學中,對象(Object)通常是問題域或實現域中某些事物的一個抽象,它反映此事物在系統中需要保存的信息和發揮的作用;它是一組屬性和有權對這些屬性進行操作的一組服務的封裝體。對象是一個黑盒子,他是用來接收和發送消息;一個對象實體中,通常包括有數據和程序兩部分。使用該對象的用戶也不需要知道對象中具體的數據和程序情況,只需要瞭解該對象的接口,及接收什麼樣的消息和會反饋什麼就可以了。

那麼,到底什麼是面面對象呢?從本質上說,面向對象既是一種思想,也是一種技術,它是過程式程序設計方法的一個高級層次。面向對象思想利用對問題的高度抽象來提升代碼的可重用性,從而提高生產力。尤其是在較爲複雜的規模較大的系統實現中,面向對象通常比傳統的過程式方法產生更高的效能。而且,隨着軟件規模的增大,面向對象相對於傳統的過程式的優勢就更加凸現。可以說,是軟件產業化最終促進了面向對象技術的產生和發展。

面向對象有三大基本機制:封裝、繼承、多態,稱一個編程或程序構建是面向對象的,首先他要具有這幾個特點。在面向對象的編程和設計中,以類和對象來刻畫客觀世界。面向對象技術就是針對現實思維方式而產生的,繼承和抽象,歸納和演繹是面向對象技術中常用的方法學和思維模式。面向對象技術是一種按照人們對現實世界習慣的認識論和思維方式來研究和模擬客觀世界的方法學。

“Why all this concern for being able to change software? Because experience has taught 

us that software changes. A popular adage is that "software is not written, 

it is re-written".”

二、面向對象的相關概念

1、對象:是人們要進行研究的事物,從最簡單的整數到複雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規則、計劃或事件。

2、類:具有相同或相似性質的對象的抽象就是類。類中操作的實現過程叫做方法。對象之間進行通信的結構叫做消息。

3、抽象:抽象是從衆多的事物中抽取出共同的、本質性的特徵,而捨棄其非本質的特徵。例如蘋果、香蕉、生梨、葡萄、桃子等,它們共同的特性就是水果。得出水果概念的過程,就是一個抽象的過程。要抽象,就必須進行比較。抽象化主要是爲了使複雜度降低,以得到論域中較簡單的概念,好讓人們能夠控制其過程或以綜觀的角度來了解許多特定的事態。

4、思維:思維是人腦對客觀事物的本質屬性和事物之間內在聯繫的規律性所作出的概括與間接的反映。抽象思維憑藉科學的抽象概念對事物的本質和客觀世界發展的深遠過程進行反映,使人們通過認識活動獲得遠遠超出靠感覺器官直接感知的知識。科學的抽象是在概念中反映自然界或社會物質過程的內在本質的思想,它是在對事物的本質屬性進行分析、綜合、比較的基礎上,抽取出事物的本質屬性,撇開其非本質屬性,使認識從感性的具體進入抽象的規定,形成概念。科學的、合乎邏輯的抽象思維是在社會實踐的基礎上形成的。思維是建立在人們對現存事物的充分認識基礎之上,經過大腦對這些現存事物的感性認識、理解、分析、總結等邏輯思考過程,從而對其本質屬性做出內在的、聯繫的、間接的、概括的反映;而設計則是通過一定的手段創造性地改變這些事物的性質,形成可以具備價值的物品的活動。

5、多態性:多態性就是多種表現形式,即同樣的消息被不同的對象所接受將會產生不同的結果。當然,也有"一個對外接口,多個內在實現方法"的情況。舉一個例子,計算機中的堆棧可以存儲各種格式的數據,包括整型,浮點或字符。不管存儲的是何種數據,堆棧的算法實現是一樣的。針對不同的數據類型,編程人員不必手工選擇,只需使用統一接口名,系統可自動選擇。

6、封裝:封裝就是將抽象得到的數據和行爲(或功能)相結合,形成一個有機的整體,即將數據與操作數據的源代碼進行有機的結合,形成“類”,其中數據和函數都是類的成員。封裝的目的是增強安全性和簡化編程,使用者不必瞭解具體的實現細節,而只是要通過外部接口,一特定的訪問權限來使用類的成員。

7、繼承:繼承是指一個對象直接使用另一對象的屬性和方法。其本質是從現在的類生成新類。繼承關係是靜態關係。包括靜態繼承和動態繼承;靜態繼承是在父類的基礎上通過增加數據成員和方法成員而構成子類的過程,而動態繼承是以父類的實例作爲子類的數據成員而存在的一種方法。動態繼承是傳統意義上的組合,或稱爲聚合,類似於C語言中的結構體成員是結構變量。靜態繼承中的父類和子類之間是一種泛化-特化的關係,動態繼承中的父類和子類之間是一種整體-部分的關係。

8、重載:在一個類定義中,可以編寫幾個同名的方法,但是隻要它們的簽名參數列表不同。重載只是一種語言特性,與多態無關,與面向對象也無關。

9、覆蓋:覆蓋是指子類重新定義父類的虛函數。

10、歸納:從許多個別的事物中概括出一般性概念,原則,或結論的思維方法。

11、演繹:從普遍性結論或一般性事理推導出個別性結論的論證方法。

12、泛化:當某一反應與某種刺激形成條件聯繫後,這一反應也會與其它類似的刺激形成某種程度的條件聯繫,這一過程稱爲泛化,即模板化。

13、特化:將模板對應於某一特定類型進行特別的聲明或定義。

14、聚合:是關聯的一種形式,代表兩個類之間的整體和局部關係。聚合暗示着整體在概念上處於比局部更高的一個級別,而關聯暗示兩個類在概念上位於相同的級別。

15、接口:在C++中,一個類被允許繼承多個類。但是在Java以後的語言不被允許。這樣,如果想繼承多個類時便非常困難。所以開發方想出了新辦法:接口。一個接口內,允許包含變量、常量等一個類所包含的基本內容。但是,接口中的函數不允許設定代碼,也就意味着不能把程序入口放到接口裏。由上可以理解到,接口是專門被繼承的。接口存在的意義也是被繼承。和C++裏的抽象類裏的純虛函數類似,不能被實例化。

16、複用:複用就是指“利用現成的東西”。把複用的思想用於軟件開發,稱爲軟件複用。

17、構件:是一個物理的、可替換的系統組成部分,它包裝了實現體且提供了對一組接口的實現方法。是面向軟件體系結構的可複用軟件模塊。未來軟件開發的過程就是構件組裝的過程,維護的過程就是構件升級、替換和擴充的過程。其優點是構件組裝模型導致了軟件的複用,提高了軟件開發的效率。

18、面向對象設計的準則:模塊化、抽象、信息隱藏、低耦合、高內聚。面向對象的三特點:封裝、繼承、多態。面向對象的三大要素:抽象、封裝性(信息隱藏)、共享性。

19、方法:指人們爲了達到某種目的而採取的手段、途徑和行爲方式中所包含的可操作的規則或模式。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章