應用框架設計
Application Frameworks Design

南京大學
軟件學院 2006 課程備忘錄

侯捷

請注意:此為備忘錄,不是呈現完整教材或學習討論的地方。

誰適合聽這門課

能否旁聽這門課

2006-07-calendar.jpg (37232 bytes)

一月之跡(日誌)


主旨:Application Frameworks 幾乎是以 OO 技術所開發的軟件的最高層級。本課程以相對極短的時間,讓學員了解如此複雜的系統的架構與各項基礎建設。

說明:泛泛而談或純理論式教學,在大多數場合中容易種下教學失敗的因子。因此本課程以曾經廣被全球使用(目前也還有大量用戶)的 application framework 產品 MFC(Microsoft Foundation Classes)為具體對象,講解其中的各種 Infrastructure(基礎建設),為學生勾勒具體丘壑。

教材(1 為教材,其他為輔助資料或參考讀物):

  1. 上課投影片。以電子文件發給院方,由學生自行複印。
*2.《深入淺出MFC》2/e,  by 侯俊傑, 華中科技大學出版社 2001
*3.電子文檔 by侯捷(以下 pdf 共206頁,zip 為 pdf 文章中之程式碼)
http://www.jjhou.com/pic2-chap06-020222.pdf  
http://www.jjhou.com/mfclite3-020222.zip

日期 星期 時數 內容 備註
07/10 3 課程簡介,上課規則,書籍評介
複習 C++ virtual functions 和 Template Method。
說明MFCLite 的模組切割與 makefile。
CRuntimeClass 及 "類別型錄網"
 
07/11 3 示範 MFC applications 的生成和主結構。
複習 C++ 的 # operator 和 ## operator。
複習
const函式。
CRuntimeClass, CObject

檢討:
virtual CObject::GetRuntimeClass() const
{ return &(CObject->classCObject); }
不可改如下並從此被繼承:
non-virtual CObject::GetRuntimeClass() const
{ return &(this->classX); }

三大基礎建設 (Runtime Type Identification, Dynamic Creation, Serialization)

 
07/12 3 簡介 CArchive, CFile, SERIAL.
現場撰寫 simple test:
測試基礎設施並觀察 serialization format
 
07/13 3 繼續場撰寫 simple test:為 document 增加更多數據,觀察 serialization format,並對 obj.Serialize(ar); 和 ar << obj; 和 ar >> obj; 做出結論。

應用框架骨幹浮現
介紹 Win32 programming model
導入 message mapping.

 
07/14 3 訊息映射 (Message Mapping)
命令繞送 (Command Routing)
pointer to member function 的轉型
 
07/17 3 MVC (Model View Controller),
Document-Views
Document Templates
DocManager
補充 Iterator vs. POSITION, Observer
 
07/18 3 Object Persistence 深層探討
一個完整的 MFCLite 測試程式, mfclapp.cpp
 
07/19 3 以 VC++ 工具撰寫 MFC applications.
考試 (90 min.)
 
07/20 3 Documents 的清理與 Windows 的關閉
補充 CString, std::string, Reference Counting and Proxy
 


■誰適合聽這門課

本課程屬高階課程,適合對象:對軟件開發已有相當經驗、希望短時間內一窺複雜之 application framework 設計與實作,以求對此類系統之架構有大局性理解。

■能否旁聽這門課

我在大學開的課程,是正式學分課,面向該大學學生。作為老師,我歡迎旁聽,但首先應以修課同學的權益(座位、空間...等等)為優先。因此,能否旁聽,還請詢問學校相關單位(例如學院或系上辦公室)的態度。

-- the end