物件導向是解決或減化軟體複雜度的一種方法,或者說,一種哲學,她的專論已遠遠的超過我們要討論的範圍,我們將只介紹我們將用到的 PME 模型。所謂 PME 是指”性質”(property),”方法”(Method),”事件”(Event)。PME 是 BCB 的視覺化元件程式庫 VCL (Visual Component Library) 中建立物件所用模型。 一般物件模型為資料成員(data member),和函式成員(function member)。”性質” 可說是資料成員,但是和一般資料成員不一樣的是,”性質” 是可以控制 讀(read),寫( write) 的方法及參考對象。”性質” 並不是標準的C++,而是 BCB 中 C++的方言,因為 VCL 是從 Delphi 移植過來的,而 Delphi 是 Objective Pascal,許多設計(如單線繼承)是和 C++ 不一樣的,所以 BCB 必須有這些方言才能將 VCL 移植過來,最好的證明是 BCB 中使用「虛擬建構子」(Virtual Constructor),而稍微知道 C++ 的人都知道只有虛擬解構子(Virtual Destructor),沒有所謂的"Virtual Constructor"。而這一部分,Borland 以特別的命令(directive) 來達成實作。
“性質” 的使用方法形式如下[5]:
__property type name={read=name1,write=name2,default=name3};
例如:__ property bool ReadOnly={read=FReadOnly};
以上命令即指 ReadOnly 這個 “性質” 只能讀,不能寫;讀取時是參考到變數 FReadOnly的值。值得注意的是 FReadOnly 也可以是一沒有傳入值而傳回值為 bool 的成員函式。而”方法”的觀念和一般的函式成員的概念是相當的,較不一樣的地方是 VCL 中用到的特別的函式指標,稱為”閉合” (closure) 。一般的指標為 32bits 長,意義為位址(address)。”閉合”包括了該物件例的位址及方法函式的位址,共 64bits 長。”事件”是一種特殊的”閉合”之“性質”,在於 Windows 及 VCL 本身訊息傳遞(message dispatch)機構中,用於和訊息對應及訊息轉向用。當訊息傳到物件時,對物件而言是發生某”事件”,而物件由”事件”決定要作出何種反應,或者選定不反應。
於是就有兩點必須考慮:(1)如何攔下某訊息並指定給某事件 (2)事件如何指定行為。對於(1)我們以 Windows 丟出訊息為例[6],我們要將她攔下並指定給某函式,並在函式中呼叫”事件”所指的”方法” (因為”事件”為”閉合”)。於是在(2)時我們只要改”事件”的值可達到行為轉向。BCB 已幫我們處理大部分的訊息及反應,我們只需將要自定的部分加以修改,並選定一個適當的類別加以繼承即可,這也是物件導的目的之一。