首頁(yè) 考試吧論壇 Exam8視線(xiàn) 考試商城 網(wǎng)絡(luò )課程 模擬考試 考友錄 實(shí)用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱(chēng)英語(yǔ) | 商務(wù)英語(yǔ) | 公共英語(yǔ) | 托福 | 雅思 | 專(zhuān)四專(zhuān)八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語(yǔ) | 成人英語(yǔ)三級 | 申碩英語(yǔ) | 攻碩英語(yǔ) | 職稱(chēng)日語(yǔ) | 日語(yǔ)學(xué)習 | 法語(yǔ) | 德語(yǔ) | 韓語(yǔ)
計算機等級考試 | 軟件水平考試 | 職稱(chēng)計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
華為認證 | Java認證
公務(wù)員 | 報關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問(wèn) | 導游資格
報檢員 | 教師資格 | 社會(huì )工作者 | 外銷(xiāo)員 | 國際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價(jià)格鑒證師
人力資源 | 管理咨詢(xún)師考試 | 秘書(shū)資格 | 心理咨詢(xún)師考試 | 出版專(zhuān)業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡(luò )編輯
衛生資格 | 執業(yè)醫師 | 執業(yè)藥師 | 執業(yè)護士
會(huì )計從業(yè)資格考試會(huì )計證) | 經(jīng)濟師 | 會(huì )計職稱(chēng) | 注冊會(huì )計師 | 審計師 | 注冊稅務(wù)師
注冊資產(chǎn)評估師 | 高級會(huì )計師 | ACCA | 統計師 | 精算師 | 理財規劃師 | 國際內審師
一級建造師 | 二級建造師 | 造價(jià)工程師 | 造價(jià)員 | 咨詢(xún)工程師 | 監理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產(chǎn)估價(jià)師 | 土地估價(jià)師 | 巖土師
設備監理師 | 房地產(chǎn)經(jīng)紀人 | 投資項目管理師 | 土地登記代理人 | 環(huán)境影響評價(jià)師 | 環(huán)保工程師
城市規劃師 | 公路監理師 | 公路造價(jià)師 | 安全評價(jià)師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
繽紛校園 | 實(shí)用文檔 | 英語(yǔ)學(xué)習 | 作文大全 | 求職招聘 | 論文下載 | 訪(fǎng)談 | 游戲
您現在的位置: 考試吧(Exam8.com) > 計算機等級考試 > 計算機二級 > Delphi > 復習資料 > 正文

2011計算機等考Delphi:Delphi自定義部件開(kāi)發(fā)

在本章中將闡述如何為Delphi應用程序編寫(xiě)部件。

  19.2.1.5 編寫(xiě)部件的面向對象技術(shù)

  部件使用者在Delphi環(huán)境中開(kāi)發(fā),將遇到在包含數據和方法的對象。他們將在設計階段和運行階段操作對象,而編寫(xiě)部件將比他們需要更多的關(guān)于對象的知識,因此,你應當熟悉Delphi的面向對象的程序設計。

  1. 建立部件

  部件用戶(hù)和部件編寫(xiě)者最基本的區別是用戶(hù)處理對象的實(shí)例,而編寫(xiě)者創(chuàng )建新的對象類(lèi)型。這個(gè)概念是面向對象程序設計的基礎。例如,用戶(hù)創(chuàng )建了一個(gè)包含兩個(gè)按鈕的窗體,一個(gè)標為OK,另一個(gè)標為Cancel,每個(gè)都是TButton的實(shí)例,通過(guò)給Text、default和Cancel等屬性賦不同的值,給OnClick事件賦予不同的處理過(guò)程,用戶(hù)產(chǎn)生了兩個(gè)不同的實(shí)例。

  建立新部件一般有兩個(gè)理由

  ● 改變類(lèi)型的缺省情況,避免反復

  ● 為部件增加新的功能

  目的都是為了建立可重用對象。如果從將來(lái)重用的角度預先計劃和設計,能節省一大堆將來(lái)的工作。

  在程序設計中,避免不必要的重復是很重要的。如果發(fā)現在代碼中一遍又一遍重寫(xiě)相同的行,就應當考慮將代碼放在子過(guò)程或函數中,或干脆建立一個(gè)函數庫。

  設計部件也是這個(gè)道理,如果總是改變相同的屬性或相同的方法調用,那應創(chuàng )建新部件。

  創(chuàng )建新部件的另一個(gè)原因是想給已有的部件增加新的功能。你可以從已有部件直接繼承(如ListBox)或從抽象對象類(lèi)型繼承(如TComponent,TControl)。你雖然能為部件增加新功能,但不能將原有部件的屬性移走,如果要這樣做的話(huà),就從該父對象的祖先對象繼承。

  2. 控制部件的訪(fǎng)向

  Object Pascal語(yǔ)言為對象的各部分提供了四個(gè)級別的訪(fǎng)問(wèn)控制。訪(fǎng)問(wèn)控制讓你定義什么代碼能訪(fǎng)問(wèn)對象的哪一部分。通過(guò)描述訪(fǎng)問(wèn)級別,定義了部件的接口。如果合理安排接口,將提高部件的可用性和重用性。

  除非特地描述,否則加在對象里的域、方法和屬性的控制級別是published,這意味著(zhù)任何代碼可以訪(fǎng)問(wèn)整個(gè)對象。

  下表列出各保護級別:

  表19.2 對象定義中的保護級別

  ━━━━━━━━━━━━━━━━━━━

  保護級 用處

  ───────────────────

  private 隱藏實(shí)現細節

  protected 定義開(kāi)發(fā)者接口

  public 定義運行時(shí)接口

  published 定義設計時(shí)接口

  ━━━━━━━━━━━━━━━━━━━

  所有的保護級都在單元級起作用。如果對象的某一部分在庫單元中的一處可訪(fǎng)向,則在該庫單元任意處都可訪(fǎng)向。

 、 隱藏實(shí)現細節

  如果對象的某部分被聲明為private,將使其它庫單元的代碼無(wú)法訪(fǎng)問(wèn)該部分,但包含聲明的庫單元中的代碼可以訪(fǎng)問(wèn),就好象訪(fǎng)問(wèn)public一樣,這是和C++不同的。

  對象類(lèi)型的private部分對于隱藏詳細實(shí)現是很重要的。既然對象的用戶(hù)不能訪(fǎng)問(wèn),private部分,你就能改變對象的實(shí)現而不影響用戶(hù)代碼。

  下面是一個(gè)演示防止用戶(hù)訪(fǎng)問(wèn)private域的例子:

  unit HideInfo;

  interface

  uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms,

  Dialogs;

  type

  TSecretForm = class(TForm) { 聲明新的窗體窗口 }

  procedure FormCreate(Sender: TObject);

  private { declare private part }

  FSecretCode: Integer; { 聲明private域 }

  end;

  var

  SecretForm: TSecretForm;

  implementation

  procedure TSecretForm.FormCreate(Sender: TObject);

  begin

  FSecretCode := 42;

  end;

  end.

  unit TestHide; { 這是主窗體庫單元 }

  interface

  uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms,

  Dialogs, HideInfo; { 使用帶TSecretForm聲明的庫單元 }

  type

  TTestForm = class(TForm)

  procedure FormCreate(Sender: TObject);

  end;

  var

  TestForm: TTestForm;

  implementation

  procedure TTestForm.FormCreate(Sender: TObject);

  begin

  SecretForm.FSecretCode := 13; {編譯過(guò)程將以"Field identifier expected"錯誤停止}

  end;

  end.

 、 定義開(kāi)發(fā)者接口

  將對象某部分聲明為protected,可使在包含該部件聲明的庫單元之外的代碼無(wú)法訪(fǎng)問(wèn),就象private部分。protected部分的不同之處是,某對象繼承該對象,則包含新對象的庫單元可以訪(fǎng)問(wèn)protected部分,你能使用protected聲明定義開(kāi)發(fā)者的接口。也就是說(shuō)。對象的用戶(hù)不能訪(fǎng)向protected部分,但開(kāi)發(fā)者通過(guò)繼承就可能做到,這意味著(zhù)你能通過(guò)protected部分的可訪(fǎng)問(wèn)性使部件編寫(xiě)者改變對象工作方式,而又不使用戶(hù)見(jiàn)到這些細節。

 、 定義運行時(shí)接口

  將對象的某一部分定義為public可使任何代碼訪(fǎng)問(wèn)該部分。如果你沒(méi)有對域方法或屬性加以private、protected、public的訪(fǎng)問(wèn)控制描述。那么該部分就是published。

  因為對象的public部分可在運行時(shí)為任何代碼訪(fǎng)問(wèn),因此對象的public部分被稱(chēng)為運行接口。運行時(shí)接口對那些在設計時(shí)沒(méi)有意義的項目,如依靠運行時(shí)信息的和只讀的屬性,是很有用的。那些設計用來(lái)供用戶(hù)調用的方法也應放在運行時(shí)接口中。

  下例是一個(gè)顯示兩個(gè)定義在運行時(shí)接口的只讀屬性的例子:

  type

  TSampleComponent = class(TComponent)

  private

  FTempCelsius: Integer; { 具體實(shí)現是private }

  function GetTempFahrenheit: Integer;

  public

  property TempCelsius: Integer read FTempCelsius; { 屬性是public }

  property TempFahrenheit: Integer read GetTempFahrenheit;

  end;

  function GetTempFahrenheit: Integer;

  begin

  Result := FTempCelsius * 9 div 5 + 32;

  end;

  既然用戶(hù)在設計時(shí)不能改變public部分的屬性的值,那么該類(lèi)屬性就不能出現在Object Inspector窗口中。

 、 定義設計時(shí)接口

  將對象的某部分聲明為published,該部分也即為public且產(chǎn)生運行時(shí)類(lèi)型信息。但只有published部分定義的屬性可顯示在Object Inspector窗口中。對象的published部分定義了對象的設計時(shí)接口。設計時(shí)接口包含了用戶(hù)想在設計時(shí)定制的一切特征。

  下面是一個(gè)published屬性的例子,因為它是published,因此可以出現在Object Inspector窗口:

  TSampleComponent = class(TComponent)

  private

  FTemperature: Integer; { 具體實(shí)現是 private }

  published

  property Temperature: Integer read FTemperature write FTemperature; { 可寫(xiě)的 }

  end;

  3. 派送方法

  派送(Dispatch)這個(gè)概念是用來(lái)描述當調用方法時(shí),你的應用程序怎樣決定執行什么樣的代碼,當你編寫(xiě)調用對象的代碼時(shí),看上去與任何其它過(guò)程或函數調用沒(méi)什么不同,但對象有三種不同的派送方法的方式。

  這三種派送方法的類(lèi)型是:

  ● 靜態(tài)的

  ● 虛擬的

  ● 動(dòng)態(tài)的

  虛方法和動(dòng)態(tài)方法的工作方式相同,但實(shí)現不同。兩者都與靜態(tài)方法相當不同。理解各種不同的派送方法對創(chuàng )建部件是很有用的。

上一頁(yè)  1 2 3 4 5 6 7 8 9 10  ... 下一頁(yè)  >> 
  相關(guān)推薦:2010年9月計算機等級考試試題及答案解析專(zhuān)題
       預告:名師解析2010年9月計算機等級考試試題答案
       2010年9月計算機等級考試成績(jì)查詢(xún)時(shí)間及入口
       2010年9月計算機等考成績(jì)查詢(xún)短信免費提醒開(kāi)通
文章搜索
版權聲明:如果計算機等級考試網(wǎng)所轉載內容不慎侵犯了您的權益,請與我們聯(lián)系800@exam8.com,我們將會(huì )及時(shí)處理。如轉載本計算機等級考試網(wǎng)內容,請注明出處。
午夜夜伦鲁鲁片免费无码_亚洲国产男人本色在线观看的a站_国产极品粉嫩馒头一线天免费_亚洲А∨天堂2021无码