物件導向和Windows編程

來源:互聯網
上載者:User

 物件導向技術是目前流行的系統設計開發技術,它包括物件導向分析和物件導向程式設計。物件導向程式設計技術的提出,主要是為瞭解決傳統程式設計方法——結構化程式設計所不能解決的代碼重用問題。

  結構化程式設計從系統的功能入手,按照工程的標準和嚴格的規範將系統分解為若干功能模組,系統是實現模組功能的函數和過程的集合。由於使用者的需求和軟、硬體技術的不斷髮展變化,按照功能劃分設計的系統模組必然是易變的和不穩定的。這樣開發出來的模組可重用性不高。

  物件導向程式設計從所處理的資料入手,以資料為中心而不是以服務(功能)為中心來描述系統。它把編程問題視為一個資料集合,資料相對於功能而言,具有更強的穩定性。

  物件導向程式設計同結構化程式設計相比最大的區別就在於:前者首先關心的是所要處理的資料,而後者首先關心的是功能。

  物件導向程式設計是一種圍繞真實世界的概念來組織模型的程式設計方法,它採用對象來描述問題空間的實體。關於對象這一概念,目前還沒有統一的定義。一般的認為,對象是包含現實世界物體特徵的抽象實體,它反映了系統為之儲存資訊和(或)與它互動的能力。它是一些屬性及服務的一個封裝體,在程式設計領域,可以用“對象=資料+作用於這些資料上的操作”這一公式來表達。

  類是具有相同操作功能和相同的資料格式(屬性)的對象的集合。類可以看作抽象資料類型的具體實現。抽象資料類型是資料類型抽象的表示形式。資料類型是指資料的集合和作用於其上的操作的集合,而抽象資料類型不關心操作實現的細節。從外部看,類型的行為可以用新定義的操作加以規定。類為對象集合的抽象,它規定了這些對象的公用屬性和方法;對象為類的一個執行個體。蘋果是一個類,而放在桌上的那個蘋果則是一個對象。對象和類的關係相當於一般的程式設計語言中變數和變數類型的關係。

  訊息是向某對象請求服務的一種表達方式。對象內有方法和資料,外部的使用者或對象對該對象提出的服務要求,可以稱為向該對象發送訊息。合作是指兩個對象之間共同承擔責任和分工。

  物件導向的編程方法具有四個基本特徵:

1.抽象:
  抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算瞭解全部問題,而只是選擇其中的一部分,暫時不用部分細節。比如,我們要設計一個學產生績管理系統,考察學生這個對象時,我們只關心他的班級、學號、成績等,而不用去關心他的身高、體重這些資訊。抽象包括兩個方面,一是過程抽象,二是資料抽象。過程抽象是指任何一個明確定義功能的操作都可被使用者看作單個的實體看待,儘管這個操作實際上可能由一系列更低級的操作來完成。資料抽象定義了資料類型和施加於該類型對象上的操作,並限定了對象的值只能通過使用這些操作修改和觀察。

2.繼承:
  繼承是一種連接類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的衍生類別(子類),而原始類稱為新類的基類(父類)。衍生類別可以從它的基類那裡繼承方法和執行個體變數,並且類可以修改或增加新的方法使之更適合特殊的需要。這也體現了大自然中一般與特殊的關係。繼承性很好的解決了軟體的可重用性問題。比如說,所有的Windows應用程式都有一個視窗,它們可以看作都是從一個視窗類別派生出來的。但是有的應用程式用於文文書處理,有的應用程式用於繪圖,這是由於派生出了不同的子類,各個子類添加了不同的特性。

3.封裝:
  封裝是物件導向的特徵之一,是對象和類概念的主要特性。封裝是把過程和資料包圍起來,對資料的訪問只能通過已定義的介面。物件導向計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的介面訪問其他對象。一旦定義了一個對象的特性,則有必要決定這些特性的可見度,即哪些特性對外部世界是可見的,哪些特性用於表示內部狀態。在這個階段定義對象的介面。通常,應禁止直接存取一個對象的實際表示,而應通過操作介面訪問對象,這稱為資訊隱藏。事實上,資訊隱藏是使用者對封裝性的認識,封裝則為資訊隱藏提供支援。封裝保證了模組具有較好的獨立性,使得程式維護修改較為容易。對應用程式的修改僅限於類的內部,因而可以將應用程式修改帶來的影響減少到最低限度。

4. 多態性:
  多態性是指允許不同類的對象對同一訊息作出響應。比如同樣的加法,把兩個時間加在一起和把兩個整數加在一起肯定完全不同。又比如,同樣的選擇編輯-粘貼操作,在文書處理程式和繪圖程式中有不同的效果。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行為共用、代碼共用的優勢,很好的解決了應用程式函數同名問題。

  物件導向程式設計具有許多優點:

  • 開發時間短,效率高,可靠性高,所開發的程式更強壯。由於物件導向編程的可重用性,可以在應用程式中大量採用成熟的類庫,從而縮短了開發時間。

  • 應用程式更易於維護、更新和升級。繼承和封裝使得應用程式的修改帶來的影響更加局部化。

  Windows的最初開發是在80年代早期,在C++出現之前,但是當時已經提出了物件導向式的程式設計思想。Windows的開發人員們已經意識到將介面上不同的項看作對象的好處,但是他們仍然被迫採用傳統的C語言來處理這些對象。在Windows的介面設計和軟體開發環境中,可以說處處貫穿著物件導向的思想。

  在Windows中,程式的基本單位不是過程和函數,而是視窗。一個視窗是一組資料的集合和處理這些資料的方法和視窗函數。從物件導向的角度來看,視窗本身就是一個對象。Windows程式的執行過程本身就是視窗和其他對象的建立、處理和消亡過程。Windows中的訊息的發送可以理解為一個視窗對象向別的視窗對象請求對象的服務過程。因此,用物件導向方法來進行Windows程式的設計與開發是極其方便的和自然的。

  採用物件導向的方法來進行Windows程式設計還可以簡化對資源的管理。當我們將資源地圖成一個C++對象時,對資源的使用可以翻譯成以下C++順序:

1.建立一個對象:如定義一個畫筆對象

2.使用對象:用畫筆繪圖

3.撤消該對象

  一個對象的建立是對一個對象的定義過程,可以由對象的建構函式處理對資源的請求過程。當某一個對象退出活動範圍時,它的撤消可以由編譯器來自動管理。各種資源和Windows結構都能以這種方式處理,如裝置上下文、畫筆、字型、畫刷等等。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.