當前位置:編程學習大全網 - 編程語言 - 面向對象程序設計的架構介紹

面向對象程序設計的架構介紹

面向對象程序設計中的概念主要包括:對象、類、數據抽象、繼承、動態綁定、數據封裝、多態性、消息傳遞。通過這些概念面向對象的思想得到了具體的體現。

1)對象(Object) 可以對其做事情的壹些東西。壹個對象有狀態、行為和標識三種屬性。

2)類(class) 壹個***享相同結構和行為的對象的集合。

類(Class)定義了壹件事物的抽象特點。通常來說,類定義了事物的屬性和它可以做到的(它的行為)。舉例來說,“狗”這個類會包含狗的壹切基礎特征,例如它的孕育、毛皮顏色和吠叫的能力。類可以為程序提供模版和結構。壹個類的方法和屬性被稱為“成員”。

3)封裝(encapsulation): 第壹層意思:將數據和操作捆綁在壹起,創造出壹個新的類型的過程。

第二層意思:將接口與實現分離的過程。

4)繼承 類之間的關系,在這種關系中,壹個類***享了壹個或多個其他類定義的結構和行為。繼承描述了類之間的“是壹種”關系。子類可以對基類的行為進行擴展、覆蓋、重定義。

5)組合 既是類之間的關系也是對象之間的關系。在這種關系中壹個對象或者類包含了其他的對象和類。

組合描述了“有”關系。

6)多態 類型理論中的壹個概念,壹個名稱可以表示很多不同類的對象,這些類和壹個***同超類有關。因此,這個名稱表示的任何對象可以以不同的方式響應壹些***同的操作集合。

7)動態綁定 也稱動態類型,指的是壹個對象或者表達式的類型直到運行時才確定。通常由編譯器插入特殊代碼來實現。與之對立的是靜態類型。

8)靜態綁定 也稱靜態類型,指的是壹個對象或者表達式的類型在編譯時確定。

9)消息傳遞 指的是壹個對象調用了另壹個對象的方法(或者稱為成員函數)。

10)方法 也稱為成員函數,是指對象上的操作,作為類聲明的壹部分來定義。方法定義了可以對壹個對象執行那些操作。 壹種語言要稱為面向對象語言,必須支持面向對象幾個主要的概念。根據支持程度的不同,通常所說的面向對象語言可以分成兩類:基於對象的語言和面向對象的語言。

基於對象的語言

基於對象的語言僅支持類和對象,舉例來說,Ada就是壹個典型的基於對象的語言,因為它不支持繼承、多態,此外其他基於對象的語言還有Alphard、CLU、Euclid、Modula。

面向對象的語言

面向對象的語言支持的概念包括:類與對象、繼承、多態。

面向對象的語言中壹部分是新發明的語言,如Smalltalk、Java,這些語言本身往往吸取了其他語言的精華,而又盡量剔除他們的不足,因此面向對象的特征特別明顯,充滿了蓬勃的生機;另外壹些則是對現有的語言進行改造,增加面向對象的特征演化而來的。如由Pascal發展而來的Object Pascal,由C發展而來的Objective-C,C++ ,由Ada發展而來的Ada 95等,這些語言保留著對原有語言的兼容,並不是純粹的面向對象語言,但由於其前身往往是有壹定影響的語言,因此這些語言依然寶刀不老,在程序設計語言中占有十分重要的地位。 面向對象出現以前,結構化程序設計是程序設計的主流,結構化程序設計又稱為面向過程的程序設計。在面向過程程序設計中,問題被看作壹系列需要完成的任務,函數(在此泛指例程、函數、過程)用於完成這些任務,解決問題的焦點集中於函數。其中函數是面向過程的,即它關註如何根據規定的條件完成指定的任務。

在多函數程序中,許多重要的數據被放置在全局數據區,這樣它們可以被所有的函數訪問。每個函數都可以具有它們自己的局部數據。

這種結構很容易造成全局數據在無意中被其他函數改動,因而程序的正確性不易保證。面向對象程序設計的出發點之壹就是彌補面向過程程序設計中的壹些缺點:對象是程序的基本元素,它將數據和操作緊密地連結在壹起,並保護數據不會被外界的函數意外地改變。

比較面向對象程序設計和面向過程程序設計,還可以得到面向對象程序設計的其他優點:

1)數據抽象的概念可以在保持外部接口不變的情況下改變內部實現,從而減少甚至避免對外界的幹擾;

2)通過繼承大幅減少冗余的代碼,並可以方便地擴展現有代碼,提高編碼效率,也減低了出錯概率,降低軟件維護的難度;

3)結合面向對象分析、面向對象設計,允許將問題域中的對象直接映射到程序中,減少軟件開發過程中中間環節的轉換過程;

4)通過對對象的辨別、劃分可以將軟件系統分割為若幹相對為獨立的部分,在壹定程度上更便於控制軟件復雜度;

5)以對象為中心的設計可以幫助開發人員從靜態(屬性)和動態(方法)兩個方面把握問題,從而更好地實現系統;

6)通過對象的聚合、聯合可以在保證封裝與抽象的原則下實現對象在內在結構以及外在功能上的擴充,從而實現對象由低到高的升級。

  • 上一篇:如何在vb,vc和?網?
  • 下一篇:什麽需要文網文呢?
  • copyright 2024編程學習大全網