面向對象程序設計方法資料_第1頁
面向對象程序設計方法資料_第2頁
面向對象程序設計方法資料_第3頁
全文預覽已結束

下載本文檔

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

文檔簡介

1、2面向對象程序設計的基本概念面向對象程序設計中的概念主要包括:對象、類、數據抽象、繼承、動態綁定、數據封裝、多態性、消息傳遞。通過這些概念面向對象的思想得到了具體的體現。1)對象對象是運行期的基本實體,它是一個封裝了數據和操作這些數據的代碼的邏輯實體。2)類類是具有相同類型的對象的抽象。一個對象所包含的所有數據和代碼可以通過類來構造。3)封裝封裝是將數據和代碼捆綁到一起,避免了外界的干擾和不確定性。對象的某些數據和代碼可以是私有的,不能被外界訪問,以此實現對數據和代碼不同級別的訪問權限。4)繼承繼承是讓某個類型的對象獲得另一個類型的對象的特征。通過繼承可以實現代碼的重用:從已存在的類派生出的一

2、個新類將自動具有原來那個類的特性,同時,它還可以擁有自己的新特性。5)多態多態是指不同事物具有不同表現形式的能力。多態機制使具有不同內部結構的對象可以共享相同的外部接口,通過這種方式減少代碼的復雜度。6)動態綁定綁定指的是將一個過程調用與相應代碼鏈接起來的行為。動態綁定是指與給定的過程調用相關聯的代碼只有在運行期才可知的一種綁定,它是多態實現的具體形式。7)消息傳遞對象之間需要相互溝通,溝通的途徑就是對象之間收發信息。消息內容包括接收消息的對象的標識,需要調用的函數的標識,以及必要的信息。消息傳遞的概念使得對現實世界的描述更容易。3面向對象語言一個語言要稱為面向對象語言必須支持幾個主要面向對象

3、的概念。根據支持程度的不同,通常所說的面向對象語言可以分成兩類:基于對象的語言,面向對象的語言。基于對象的語言僅支持類和對象,而面向對象的語言支持的概念包括:類與對象、繼承、多態。舉例來說, Ada 就是一個典型的基于對象的語言,因為它不支持繼承、多態,此外其他基于對象的語言還有Alphard 、CLU 、 Euclid 、 Modula 。面向對象的語言中一部分是新發明的語言,如Smalltalk 、 Java,這些語言本身往往吸取了其他語言的精華,而又盡量剔除他們的不足,因此面向對象的特征特別明顯,充滿了蓬勃的生機;另外一些則是對現有的語言進行改造,增加面向對象的特征演化而來的。如由Pas

4、cal發展而來的ObjectPascal,由 C 發展而來的 Objective-C ,C+ ,由 Ada 發展而來的 Ada 95 等,這些語言保留著對原有語言的兼容,并不是純粹的面向對象語言,但由于其前身往往是有一定影響的語言,因此這些語言依然寶刀不老,在程序設計語言中占有十分重要的地位。4面向對象程序設計的優點面向對象出現以前,結構化程序設計是程序設計的主流,結構化程序設計又稱為面向過程的程序設計。在面向過程程序設計中,問題被看作一系列需要完成的任務,函數(在此泛指例程、函數、過程)用于完成這些任務,解決問題的焦點集中于函數。其中函數是面向過程的,即它關注如何根據規定的條件完成指定的任務

5、。在多函數程序中,許多重要的數據被放置在全局數據區,這樣它們可以被所有的函數訪問。每個函數都可以具有它們自己的局部數據。下圖顯示了一個面向過程程序中函數和數據的關系。圖 1 面向過程程序設計中函數和數據的關系示例這種結構很容易造成全局數據在無意中被其他函數改動,因而程序的正確性不易保證。面向對象程序設計的出發點之一就是彌補面向過程程序設計中的一些缺點:對象是程序的基本元素,它將數據和操作緊密地連結在一起,并保護數據不會被外界的函數意外地改變。下圖顯示了一個面向對象程序中對象與函數和數據的關系。圖 2 面向對象程序設計中函數和數據的關系示例比較面向對象程序設計和面向過程程序設計,還可以得到面向對

6、象程序設計的其他優點:1)數據抽象的概念可以在保持外部接口不變的情況下改變內部實現,從而減少甚至避免對外界的干擾;2)通過繼承大幅減少冗余的代碼,并可以方便地擴展現有代碼,提高編碼效率,也減低了出錯概率,降低軟件維護的難度;3)結合面向對象分析、面向對象設計,允許將問題域中的對象直接映射到程序中,減少軟件開發過程中中間環節的轉換過程;4)通過對對象的辨別、劃分可以將軟件系統分割為若干相對為獨立的部分,在一定程度上更便于控制軟件復雜度;6)以對象為中心的設計可以幫助開發人員從靜態(屬性)和動態(方法)兩個方面把握問題,從而更好地實現系統;7)通過對象的聚合、聯合可以在保證封裝與抽象的原則下實現對

7、象在內在結構以及外在功能上的擴充,從而實現對象由低到高的升級。面對對象的程序設計方法在數據輸入模塊內部設計中,采用面向對象的設計方法。6 面向對象的基本概念如下:對象:對象是要研究的任何事物。從一本書到一家圖書館,單的整數到整數列龐大的數據庫、極其復雜的自動化工廠、航天飛機都可看作對象,它不僅能表示有形的實體,也能表示無形的(抽象的)規則、計劃或事件。對象由數據(描述事物的屬性)和作用于數據的操作(體現事物的行為)構成一獨立整體。從程序設計者來看,對象是一個程序模塊,從用戶來看,對象為他們提供所希望的行為。在對內的操作通常稱為方法。類:類是對象的模板。即類是對一組有相同數據和相同操作的對象的定

8、義,一個類所包含的方法和數據描述一組對象的共同屬性和行為。類是在對象之上的抽象,對象則是類的具體化,是類的實例。類可有其子類,也可有其它類,形成類層次結構。消息:消息是對象之間進行通信的一種規格說明。一般它由三部分組成:接收消息的對象、消息名及實際變元。面向對象主要特征:封裝性:封裝是一種信息隱蔽技術,它體現于類的說明,是對象的重要特性。封裝使數據和加工該數據的方法(函數)封裝為一個整體,以實現獨立性很強的模塊,使得用戶只能見到對象的外特性(對象能接受哪些消息,具有那些處理能力),而對象的內特性(保存內部狀態的私有數據和實現加工能力的算法)對用戶是隱蔽的。封裝的目的在于把對象的設計者和對象者的

9、使用分開,使用者不必知曉行為實現的細節,只須用設計者提供的消息來訪問該對象。繼承性:繼承性是子類自動共享父類之間數據和方法的機制。它由類的派生功能體現。一個類直接繼承其它類的全部描述,同時可修改和擴充。繼承具有傳遞性。繼承分為單繼承(一個子類只有一父類)和多重繼承(一個類有多個父類)。類的對象是各自封閉的,如果沒繼承性機制,則類對象中數據、方法就會出現大量重復。繼承不僅支持系統的可重用性,而且還促進系統的可擴充性。多態性:對象根據所接收的消息而做出動作。同一消息為不同的對象接受時可產生完全不同的行動,這種現象稱為多態性。利用多態性用戶可發送一個通用的信息,而將所有的實現細節都留給接受消息的對象

10、自行決定,如是,同一消息即可調用不同的方法。例如:Print 消息被發送給一圖或表時調用的打印方法與將同樣的Print 消息發送給一正文文件而調用的打印方法會完全不同。多態性的實現受到繼承性的支持,利用類繼承的層次關系,把具有通用功能的協議存放在類層次中盡可能高的地方,而將實現這一功能的不同方法置于較低層次,這樣,在這些低層次上生成的對象就能給通用消息以不同的響應。在 OOPL 中可通過在派生類中重定義基類函數(定義為重載函數或虛函數)來實現多態性。綜上可知,在面對對象方法中,對象和傳遞消息分別表現事物及事物間相互聯系的概念。類和繼承是是適應人們一般思維方式的描述范式。方法是允許作用于該類對象

11、上的各種操作。這種對象、類、消息和方法的程序設計范式的基本點在于對象的封裝性和類的繼承性。通過封裝能將對象的定義和對象的實現分開,通過繼承能體現類與類之間的關系,以及由此帶來的動態聯編和實體的多態性,從而構成了面向對象的基本特征。面向對象設計是一種把面向對象的思想應用于軟件開發過程中,指導開發活動的系統方法,是建立在象”概念基礎上的方法學。對象是由數據和容許的操作組成的封裝體,與客觀實體有直接對應關系,一個對象類定義了具有相似性質的一組對象。而每繼承性是對具有層次關系的類的屬性和操作進行共享的一種方式。所謂面向對象就是基于對象概念,以對象為中心,以類和繼承為構造機制,來認識、理解、刻畫客觀世界和設計、構建相應的軟件系統。按照 Bjarne STroustRUP 的說法,面向對象的編程范式:“對l 決定你要的類;2 給每個類提供完整的一組操作;3 明確地使用繼承來表現共同點。由這個定義,我們可以看出:面向對象設計就是 “根據需求決定所需的類、類的操作以及類之間關聯的過程”。面向對象設計方法的特點和面臨的問題面向對象設計方法以對象為基礎,利用特定的軟件工具直接完成從對象客體的描述到軟件結構之間的轉換。這是面向對象設計方法最主要的特點和成就。面向對象設計方法的應用解決了傳統結構化開發方法中客觀世界描述工具與軟件結構的不一致性問題,縮短了開發周期,解決了從分析和設計到軟件模塊結構之

溫馨提示

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

評論

0/150

提交評論