面向對象技術的概念與方法(共11頁)_第1頁
面向對象技術的概念與方法(共11頁)_第2頁
面向對象技術的概念與方法(共11頁)_第3頁
面向對象技術的概念與方法(共11頁)_第4頁
面向對象技術的概念與方法(共11頁)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上面向對象技術的概念與方法1 面向對象的基本概念 本節(jié)著重介紹面向對象的基本概念,也對相應的面向對象的技術方法的一些基本概念和方法做些說明和解釋。  1.1  面向對象方法學的基本原則  面向對象方法學認為:客觀世界是由各種“對象”所組成的,任何事物都是對象,每一個對象都有自己的運動規(guī)律和內部狀態(tài),每一個對象都屬于某個對象“類”,都是該對象類的一個元素。復雜的對象可以是由相對比較簡單的各種對象以某種方式組成的。不同對象的相互作用就構成了我們要研究、分析和構造的客觀系統(tǒng)。 面向對象方法學認為:通過類比,

2、發(fā)現(xiàn)對象間的相似性,即對象間的共同屬性,這就是構成對象類的根據(jù)。 面向對象方法學認為:對于已分成類的各個對象,可以通過定義一組“方法”來說明該對象的功能,也即是:允許作用于該對象上的各種操作。對象間的相互聯(lián)系是通過傳遞“消息”來完成的。 面向對象方法學比較自然地模擬了人類認識客觀世界的方法。即應使描述問題的問題空間和解決問題的方法空間在結構上盡可能地一致。我們分析、設計和實現(xiàn)一個系統(tǒng)的方法盡可能接近我們認識一個系統(tǒng)的方法。   1.2 對象  面向對象技術是基于對象概念的。在現(xiàn)代漢語詞典中,對象是行動或思考時作為目

3、標的人或事物。 在思維科學中,對象是客觀世界中具有可區(qū)分性的、能夠唯一標識的邏輯單元。對象所代表的本體可能是一個物理存在,也可能是一個概念存在。  “面向對象”是計算機科學中的一個技術名詞,具有其特定的技術含義。從面向對象的觀點來看,現(xiàn)實世界是由各式各樣獨立的、異步的、并發(fā)的實體對象組成,每個對象都有各自的內部狀態(tài)和運動規(guī)律,不同對象之間或某類對象之間的相互聯(lián)系和作用,就構成了各式不同的系統(tǒng)。    面向對象方法是基于客觀世界的對象模型化的軟件開發(fā)方法。在面向對象程序設計中,所謂對象,就是一個屬性集及其操作的封裝體。作為計算

4、機模擬真實世界的抽象,一個對象就是一個實際問題論域,一個物理的實體或邏輯的實體。在計算機程序中,可視為一個“基本程序模塊”,因為它包含了數(shù)據(jù)結構和所提供的相關操作功能。  我們把客觀世界的實體稱之為問題空間的對象,任何事物都是對象。我們用計算機解題是借助某種語言規(guī)定對計算機實體施加某種動作,以此動作的結果去映射解,我們把計算機實體稱之解空間的對象。在面向對象的程序設計中,“對象”是系統(tǒng)中的基本運行實體。即對象是具有特殊屬性(數(shù)據(jù))和行為方式(方法)的實體。 從動態(tài)的觀點看,對象的操作就是對象的行為。問題空間對象的行為是極其豐富的,而解空間對象的行為是極其死板的。因

5、此,只有借助于極其復雜的算法才能操縱解空間對象而得到解。面向對象語言提供了“對象”概念,這樣,程序員就可以定義解空間對象。從存儲的角度來看,“對象”是一片私有存儲,其中有數(shù)據(jù)也有方法。其它對象的方法不能直接操縱該對象的私有數(shù)據(jù),只有對象私有的方法才可以操縱它。從對象的實現(xiàn)來看,“對象”是一臺自動機,其中私有數(shù)據(jù)表示了對象的狀態(tài),該狀態(tài)只能由私有的方法改變它。每當需要改變對象的狀態(tài)時,只能由其它對象向該對象發(fā)送消息,對象響應消息后按照消息模式找出匹配的方法,并執(zhí)行該方法。   對象的屬性是指描述對象的數(shù)據(jù),可以是系統(tǒng)或用戶定義的數(shù)據(jù)類型,也可以是一個抽象的數(shù)據(jù)類型,

6、對象屬性值的集合稱為對象的狀態(tài)。 對象的行為是定義在對象屬性上的一組操作方法的集合。方法是響應消息而完成的算法,表示對象內部實現(xiàn)的細節(jié),對象的方法集合體現(xiàn)了對象的行為能力。 對象的屬性和行為是對象定義的組成要素,有人把它們統(tǒng)稱為對象的特性。一般具有以下特征: (1)具有一個狀態(tài),由與相關聯(lián)的屬性值集合所表征。(2)具有唯一標識名,可以區(qū)別于其他對象。 (3)有一組操作方法,每個操作決定對象的一種行為。 (4)對象的狀態(tài)只能被自身的行為所改變。 (5)對象的操作包括自操作和它操作 (6)對象之間以消息傳遞的方式進行通信。

7、60;(7)一個對象的成員仍可以是一個對象。 其中,前3 條是對象的基本特征,后4條是屬于特征的進一步定義說明。  有的書上又這樣寫關于對象的特征:(1)模塊性:一個對象是一個可以獨立存在的實體。從外部看這個模塊,只了解這個模塊具有哪些功能,模塊的內部狀態(tài)以及如何實現(xiàn)這些功能的細節(jié)都是“隱蔽”在??斓膬炔康?。(2)繼承性和類比性:人們是通過對客觀世界中的各種對象進行分類及合并等方法來認識世界的,每個具體的對象都是在它所屬的某一類對象(類)的層次結構中占據(jù)一定的位置。下一層次的對象繼承了上一層次對象的某些屬性。另一方面,不同的對象具有某些相同的屬性時,也常

8、常把它們歸并成一類。(3)動態(tài)連接性:我們把對象和對象間所具有的統(tǒng)一、方便、動態(tài)地連接和傳遞消息的能力與機制稱之為動態(tài)連接性。(4)易維護性:在面向對象系統(tǒng)中,人們的注意力集中于具有相同特性的一類對象,抽象出這樣一類對象共同的結構和行為,進行一般描述,從而避免數(shù)據(jù)的冗余?!拔镆灶惥邸?,分類、類比、類型、同類,等等,是人們歸納客觀事物的方法。1.3 類類是對象的抽象及描述,是具有共同屬性和操作的多個對象的相似特性的統(tǒng)一描述體。類也是對象,是一種集合對象,稱之為對象類,簡稱為類,以有別于基本的實例對象。 在類的描述中,每個類要有一個名字,要表示一組對象的共同特征,還必須給出一個生成對象實

9、例的具體方法。類中的每個對象都是該類的對象實例,即系統(tǒng)運行時通過類定義屬性初始化可以生成該類的對象實例。實例對象是描述數(shù)據(jù)結構,每個對象都保存其自己的內部狀態(tài),一個類的各個實例對象都能理解該所屬類發(fā)來的消息。類提供了完整的解決特定問題的能力,因為類描述了數(shù)據(jù)結構(對象屬性)、算法(方法)和外部接口(消息協(xié)議)。類由方法和數(shù)據(jù)組成,它是關于對象性質的描述,包括外部特性和內部實現(xiàn)兩個方面。類通過描述消息模式及其相應的處理能力來定義對象的外部特性,通過描述內部狀態(tài)的表現(xiàn)形式及固有處理能力的實現(xiàn)來定義對象的內部實現(xiàn)。一個類實際上定義的是一種對象類型,它描述了屬于該類型的所有對象的性質。對象是在執(zhí)行過程

10、中由其所屬的類動態(tài)生成的,一個類可以生成多個不同的對象。同一個類的對象具有相同的性質。一個對象的內部狀態(tài)只能由其自身來修改。因此,同一個類的對象雖然在內部狀態(tài)的表現(xiàn)形式上相同,但可有不同的內部狀態(tài)。從理論上講,類是一個抽象數(shù)據(jù)類型的實現(xiàn)。一個類的上層可以有超類,下層可以有子類,形成一種類層次結構。這種層次結構的一個重要特點是繼承性,一個類繼承其超類的全部描述。這種繼承具有傳遞性。所以,一個類實際上繼承了層次結構中在其上面的所有類的全部描述。因此,屬于某個類的對象除具有該類所描述的特性外,還具有層次結構中該類上面所有類描述的全部特性。抽象類是一種不能建立實例的類。抽象類將有關的類組織在一起,提供

11、一個公共的根,其它的子類從這個根派生出來。抽象類刻畫了公共行為的特性并將著些特征傳給它的子類。通常一個抽象類只描述與這個類有關的操作接口,或是這些操作的部分實現(xiàn),完整的實現(xiàn)被留給一個或幾個子類。抽象類已為一個特定的選擇器集合定義了方法,并且有些方法服從某種語義,所以,抽象類的用途是用來定義一些協(xié)議或概念。綜上所述,類是一組對象的抽象,它將該種對象所具有的共同特征集中起來,由該種對象所共享。在系統(tǒng)構成上,則形成了一個具有特定功能的模塊和一種代碼共享的手段。在一個有效率的面向對象系統(tǒng)中,是沒有完全孤立的對象的,對象的相互作用的模式是采用消息傳送來進行的。 1.4 消息消息是面向對象系統(tǒng)中

12、實現(xiàn)對象間的通信和請求任務的操作。消息傳遞是系統(tǒng)構成的基本元素,是程序運行的基本處理活動。 一個對象所能接受的消息及其所帶的參數(shù),構成該對象的外部接口。對象接受它能識別的消息,并按照自己的方式來解釋和執(zhí)行。一個對象可以同時向多個對象發(fā)送消息,也可以接受多個對象發(fā)來的消息。消息只反映發(fā)送者的請求,由于消息的識別、解釋取決于接受者,因而同樣的消息在不同對象中可解釋成不同的行為。 對象間傳送的消息一般由三部分組成,即接受對象名、調用操作名和必要的參數(shù)。 在C+中,一個對象的可能消息集是在對象的類描述中說明,每個消息在類描述中由一個相應的方法給出,即使用函數(shù)定義操作。向對

13、象發(fā)送一個消息,就是引用一個方法的過程。實施對象的各種操作,就是訪問一個或多個在類對象中定義的方法。 消息協(xié)議是一個對象對外提供服務的規(guī)定格式說明,外界對象能夠并且只能向該對象發(fā)送協(xié)議中所提供的消息,請求該對象服務。在具體實現(xiàn)上,是將消息分為公有消息和私有消息,而協(xié)議則是一個對象所能接受的所有公有消息的集合。前面講過,對象間的相互聯(lián)系是通過傳遞消息來實現(xiàn)的。消息用來請求對象執(zhí)行某一處理或回答某些信息的要求,消息統(tǒng)一了數(shù)據(jù)流和控制流,程序的執(zhí)行是靠在對象間傳遞消息來完成的。發(fā)送消息的對象稱為發(fā)送者,接受消息的對象稱為接受者。消息中只包含發(fā)送者的要求,消息完全由接受者解釋,接受者獨立決定

14、采用什么方式完成所需的處理。一個對象能接受不同形式不同內容的多個消息,相同形式的消息可以送往不同的對象,不同的對象對于形式相同的消息可以有不同的解釋,能夠做出不同的反映。對于傳來的消息,對象可以返回響應的回答信息,但這種返回并不是必修的。消息的形式用消息模式刻畫,一個消息模式定義了一類消息,它可以對應內容不同的消息。對于同一消息模式的不同消息,同一個對象所做的解釋和處理都是相同的,只是處理的結果可能不同。對象固有處理能力按消息分類,一個消息模式定義對象的一種處理能力。所以,只要給出對象的所有消息模式及相應于每一個模式的處理能力,也就定義了一個對象的外部特征。消息模式不僅定義了對象所能受理的消息

15、,而且還定義了對象的固有處理能力。  2方法把所有對象分成各種對象類,每個對象類都定義一組所謂的“方法”,它們實際上可視為允許作用于各對象上的各種操作。   2.1 封裝性 在上述面向對象的基本概念的基礎上,將就所有面向對象程序設計都具有的3個共同特性進行分析說明,使我們對面向對象的概念和原理能夠有進一步的認識和理解封裝是一種信息隱蔽技術,用戶只能見到對象封裝界面上的信息,對象內部對用戶是隱蔽的。封裝的目的在于將對象的使用者和對象的設計者分開,使用者不必知道行為實現(xiàn)的細節(jié),只需用設計者提供的消息來訪問該對象。 封裝

16、性是面向對象具有的一個基本特性,其目的是有效地實現(xiàn)信息隱藏原則。這是軟件設計模塊化、軟件復用和軟件維護的一個基礎。 封裝是一種機制,它將某些代碼和數(shù)據(jù)鏈接起來,形成一個自包含的黑盒子(即產生一個對象)。一般地講,封裝的定義為: (1)一個清晰的邊界,所有的對象的內部軟件的范圍被限定在這個邊界內。封裝的基本單位是對象; (2)一個接口,這個接口描述描述該對象與其他對象之間的相互作用; (3)受保護的內部實現(xiàn),提供對象的相應的軟件功能細節(jié),且實現(xiàn)細節(jié)不能在定義該對象的類之外。 面向對象概念的重要意義在于,它提供了較為令人滿意的軟件構造的封裝和組織方

17、法:以類/對象為中心,既滿足了用戶要求的模塊原則和標準,又滿足代碼復用要求??陀^世界的問題論域及具體成分,在面向對象系統(tǒng)中,最終只表現(xiàn)為一系列的類/對象。 對象的組成成員中含有私有部分、保護部分和公有部分,公有部分為私有部分提供了一個可以控制的接口。也就是說,在強調對象的封裝性時,也必須允許對象有不同程序的可見性??梢娦允侵笇ο蟮膶傩院头赵试S對象外部存取和引用的程度。 面向對象程序設計技術鼓勵人們把問題論域分解成幾個相互關聯(lián)的子問題,每個子類都是一個自包含對象。一個子類可以繼承父類的屬性和方法,還可以擁有自己的屬性和方法,子類也能將其特性傳遞給自己的下一級子類,這種對象的

18、封裝、分類層次和繼承概念,與人們在對真實世界認識的抽象思維中運用聚合和概括相一致。面向對象的語言以對象協(xié)議或規(guī)格說明作為對象的外界面。協(xié)議指明該對象所接受的消息,在對象的內部,每個消息響應一個方法,方法實施對數(shù)據(jù)的運算。對數(shù)據(jù)方法的描述是協(xié)議的實現(xiàn)部分或叫類體。顯式地將對象的定義和對象的實現(xiàn)分開是面向對象系統(tǒng)的一大特色。封裝本身即模塊性,把定義模塊和實現(xiàn)模塊分開,就使得用面向對象技術所開發(fā)設計的軟件的維護性、修改性在為改善。2.2 繼承性  繼承性是面向對象技術中的另一個重要概念和特性,它體現(xiàn)了現(xiàn)實中對象之間的獨特關系。既然類是對具體對象的抽象,那么就可以有不同級別的抽象,

19、就會形成類的層次關系。若用結點表示類對象,用連接兩結點的無向邊表示其概括關系,就可用樹形圖表示類對象的層次關系。繼承關系可分為以下幾種:一代或多代繼承、單繼承和多繼承。子類僅對單個直接父類的繼承叫做單繼承。子類對多于一個的直接父類的繼承叫多繼承。就繼承風格而言,還有全部繼承、部分繼承,等等。一般的面向對象系統(tǒng),在不同程度上支持如下四種類型的繼承: (1)替代繼承,如果能夠對類T的對象比類E的對象實施更多的操作,就說類T繼承類E,即在類E的對象處能夠用類T的對象來替代。這種繼承是基于方法而非值。 (2)包含繼承,如果類T的每個對象也是類E的對象,則說類T是類E的子對象。這種繼

20、承是基于結構而非操作。 (3)限制繼承,如果類E包括滿足某種已知限定條件的類T的所有對象,則類T是類E的一個子類。這是包含繼承的特殊情形。 (4)特化繼承,如果類E的對象是類T的對象,而T帶有更多特殊信息,則類T是類E的子類。繼承性允許程序設計人員在設計新類時,只須考慮與父類所不同的特性部分,而繼承父類的內容為自己的組成部分。如果父類中某些行為不適用于子類,則程序設計人員可在子類中重寫方法的實現(xiàn)。因此繼承機制不僅除去基于層次聯(lián)系的類的共性的重復說明,提高代碼復用率,而且能使開發(fā)者的大部分精力用于系統(tǒng)中新的或特殊的部分設計,便于軟件的演進和增量式擴充。繼承性是自動的共享類、子

21、類和對象中的方法和數(shù)據(jù)的機制。每個對象都是某個類的實例,一個系統(tǒng)中類對象是各自封閉的。如果沒有繼承機制,則類對象中數(shù)據(jù)和方法就可能出現(xiàn)大量的重復。繼承性是實現(xiàn)從可重用成分構造軟件系統(tǒng)的最有效的特征,它不僅支持系統(tǒng)的可重用性,而且還促進系統(tǒng)的可擴充性。2.3 多態(tài)性  面向對象技術的第3個特性是多態(tài)性。多態(tài)性原意是指一種具有多種形態(tài)有事物,這里是指同一消息為不同的對象所接受時,可導致不同的行為。多態(tài)性支持“同一接口,多種方法”,使重要算法只寫一次而在低層可多次復用。面向對象的多種多態(tài)性方法的使用,如動態(tài)綁定、重載等,提高了程序設計的靈活性和效率。所謂多態(tài)即一名字可具有多種語義

22、。在面向對象的語言中,多態(tài)引用表示可引用多個類的實例。由于多態(tài)具有可表示對象的多個類的能力,因而,它既與動態(tài)類型有關又與靜態(tài)類型有關。  在C+中,利用多態(tài)性概念,使用函數(shù)名和參數(shù)類別來實現(xiàn)功能重載,即使用不同參數(shù)就可以使之同各個對象相結合,分別實現(xiàn)相應的任務。  3常用術語簡釋和定義 從面向對象方法學原理出發(fā),對上述的有關術語可以進一步地做如下的簡要釋義: 信息:是對事物的一種表示和描述。 軟件:是描述信息處理的信息。 對象:是一個由信息及有關對它進行處理的描述所組成的包。 對象可以定義如下:OBJ:=

23、<ID,MS,DS,MI>。其中ID是對象標識或名稱;DS是屬性數(shù)據(jù);MS是對象受理的操作集合(方法);MI是對象處理的消息集。 消息:是對某種對象處理的說明。消息可以定義為MSG:=<MN,ARG>。其中MN是消息名;ARG是變元組。 類:是對一個或幾個相似對象的描述;類可以定義為一個四元組: CLS:=<ID,INH,DD,OP,ITF>其中,ID是類的標識或稱為名字;INH是類的繼承性描述;DD是屬性數(shù)據(jù);OP是操作集合,即方法集;ITF是統(tǒng)一的對外接口或協(xié)議。 繼承是類的特性,即子類可以繼承父類的特性??捎靡粋€偏序關系定

24、義繼承的特性:INH=<C,>=)。其中,C為處于繼承鏈上所有的類,>=表示繼承關系 繼承是有傳遞性的,即IF(C2,>=C1)&(C3>=C2) THEN C3>=C1 。在對繼承作了以上定義后,還可以對類作重新的定義。類n:=<類n的ID,類i本身的數(shù)據(jù)結構描述,類i本身的操作實現(xiàn),類i本身的對外接口>(i=1,2,n)。其中類1到類n是屬于同一類鏈的,且,類i繼承類i+1的特性。  元類:當某個類的單個實例本身就是一個類時,這個類就稱為元類。 子類:是在共享其他類

25、的描述后,再對這個描述做某些修改而構成的類。 實例:是被某個類所描述的對象中的一個具體對象。對象實例可以定義為一個三元組: OB:=<OID,ODY,CID>。其中,OID是對象名或標識;ODY是對象實例的描述;CID是對象所屬類的標識。 方法:是關于對象在接受到消息后所采取的一系列操作的描述,是對象對消息的響應。 方法字典:是消息選擇符和方法之間的一個相聯(lián)集合。 面向對象方法: 是一種運用對象、類、消息傳遞、繼承、封裝、聚合、多態(tài)性等概念來構造軟件系統(tǒng)的軟件開發(fā)方法。  4概念內涵的區(qū)別 在面向對象的

26、基本概念中,有兩對表達形式相似而內涵不同的術語,在此也做一些比較和說明。 類型:在面向對象系統(tǒng)中,類型概括了具有相同特性的一組對象的特征,是抽象數(shù)據(jù)類型的概念。它由接口和實現(xiàn)兩部分組成,接口對用戶是可見的,而實現(xiàn)部分只有設計人員可見。接口部分包括一組操作及用法說明,實現(xiàn)部分數(shù)據(jù)(是對象內部結構的描述)和操作(實現(xiàn)接口部分的過程)。C+等系統(tǒng)是支持類型概念的。 類:類的說明與類型相同,但概念上有所不同,類以方法表現(xiàn)出其動態(tài)性,并且包含了“對象生成器”和“對象存儲器”的概念。 “類型”在常規(guī)程序設計語言中的作用主要體現(xiàn)在數(shù)據(jù)描述上,作為保證程序正確性檢查和提高程序效率的工具。而類的作用在于作為模擬手段,以統(tǒng)一的方式構造現(xiàn)實世界模型,因而提高屬于系統(tǒng)的最高層,并且可在運行時刻操作。 關于消息傳遞和過程調用,形式上相似,但有3點本質不同: (1)消息傳遞必須給出關于通道信息,即要顯示地指明接受方,而過程調用的信道則是隱含的,其適用范圍取決于變元; (2)消息傳遞接受方是一實體,具有保持狀態(tài)的能力,而過程調用則沒有此要求; (3)消息傳遞可以是異步的,因而是并發(fā)的,過程調用的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論