freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

第八章:應用框架(完整版)

2025-11-18 13:26上一頁面

下一頁面
  

【正文】 三、應用框架的特點 反向調用 我們知道抽象類是框架技術的主角,應用框架中一個重要的令人著迷的地方是:框架里的函數能調用應用程序的函數,這是框架與一般類庫(或鏈接庫)的極重要區(qū)別。 面向對象的操作系統本身就是可修正、有彈性的,而不是像Windows 、 DOS 是固定的。 ◎ 對象常含預設計行為 , 預設行 ● 對象的行為都是固定的 , 無法修正 。 然而 ,現在的框架 ,不只含抽象類 ,且含有具體類、 函數 、 及對象 。 應用框架強調的是軟件的設計重用性和系統的可擴充性 ,以縮短大型應用軟件系統的開發(fā)周期 , 提高開發(fā)質量 。第八章:應用框架 面向對象分析與設計 一、框架概述 二、應用框架應用 三、應用框架的特點 四、應用框架設計方法 五、實際應用 基于 UML描述的應用框架模型 一、框架概述 ? 應用框架就是:某特定應用領域 (Domain)中,程序間的共同結構。 與傳統的基于類庫的面向對象重用技術比較 , 應用框架更注重于面向專業(yè)領域的軟件重用 。 實際上 , 框架已涵括了傳統類庫的功能 ,使得大家不易區(qū)分框架與類庫之差別了 。 為可讓應用程序員修正 。這種操作系統提供了支持性的框架,讓人們不但能使用操作系統的 API 函數,也可以修正之,使它符合客戶的需要。使用一般鏈接庫時,程序中的函數調用了現成的庫函數,但庫函數不能反過來,調用您所寫的函數。 三、應用框架的特點 三、應用框架的特點 抽象類 抽象一詞常令人覺得那是難以體會的事 。 然而軟件中 , 對抽象類采取較嚴格的定義 。 抽象類 也得注意:子類并不見得是具體類 , 例如: class Person { public: virtual void Display()=0。 class Customer : public Person { public: virtual void Display() { cout Customer: name endl。 例如 , include class Company { Person president。 } 這含有兩個錯誤:指令 ── ● Person 無法派生自動對象 x。 } 就可以了 。 ( Linda )。 } void main() { Customer cust。 例如 , include // class Person and Customer Person* sub() { Customer* pc = new Customer()。 由于引用與指針是一體的兩面 , 引用的本質是指針 , 所以 C++ 允許: ◎ 聲明抽象類的引用 。 sub(cust).Display()。 strcpy( tel, t )。 例如 , 假設框架中增加了Product服務類如下: class Product { protected: int pno。 pcDisplay()。 } }。 (vp)。 ⊙ 由于框架掌握主控權 , 復雜的指令都擺在框架中 , 其大幅簡化了應用程序 。 由于 TV的 Print() 及 VIP 類的 Display() 都是虛擬函數 , 所以框架中的 Inquire() 能調用它們 。 ☆ Print() 必須是 虛擬函數 , 才能確保 Inquire() 會反向調用到該對象的 Print() , 亦即調用到 TV類的 Print() 。 public: TV( int no, double pr ) : Product( no ) { price = pr。 此時 , ☆ VIP 必須是具體類才能派生對象 。 因此 , 設計 Product 類的時候 ,VIP 類尚未派生 。 App 是 CWinApp的對象 , 這對象派生時 , 框架中有個指針 ──appCurrentWinApp會指向它 。 也就是調用了 CWinApp 類的 InitInstance()函數 。 } } 五、實戰(zhàn)錦囊 由此可知 , 框架和應用程序的 調用關系圖示如下: 五、實戰(zhàn)錦囊 請看看 Run() 的內容 。 五、實戰(zhàn)錦囊 class YApp : public CWinApp { virtual BOOL InitInstance() { m_pMainWnd = new YWindow。例如, CWnd類含有 OnPaint() 預設函數,而您可定義新 OnPaint() 來取代預設函數。 pwShowWindow( m_nCmdShow )。 例如 , 當 Windows 傳來 WM_PAINT 消息時 , 就反向調用到 YWindow 的 OnPaint() , 在窗口里顯示出 Hello!! 字符串 。 五、實戰(zhàn)錦囊 其中 , OnPaint() 和 OnClose() 不是虛擬函數 , 為什么仍進行反向調用呢 ? 答案是:MFC 自己建立消息 ╱ 函數表 ( Message Map) 來進行反向調用 。 return 1。 } afx_msg void OnPaint() { CPaintDC dc( this )。 return 1。 。 } 這預設函數并未做什么事 , 但它是虛擬函數 , 您可定義新函數來取而代 。 例如指令 ── AfxGetApp()Run(), 就調用了 App 對象的 Run() 函數 。 首先 , 為框架增加一個函數如下: void DoInquire( Product* p ) { pInquire()。 ☆ 由 pc所指向之對象來調用 Display() 函數 。 } }。 例如 , include class Product { int pno。 為什么 Product 的 Inquire() 能調用 TV 的 Print() 函數呢 ? 萬一 TV類并無Print() 時 , 怎么辦呢 ? 答案很簡單: ☆ TV必須定義 Print(
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1