讓我們來談一些關於物件導向理論的有趣的話題。正方形和矩形的故事正方形是一個特殊的矩形。 ----《幾何》在物件導向理論的討論中,有一個很令人不解的問題,就是為什麼正方形不能從矩形派生?因為從幾何數學的定義出發,正方形就是一個矩形,一個特殊的矩形。首先,我們要看看矩形的封裝。我們這裡有很多種矩形的封裝。Code highlighting produced by Actipro CodeHighlighter
Windows有一個叫機制可以協助我們自動觸發 任意可執行檔 的debug操作,可以看考http://blogs.msdn.com/b/greggm/archive/2005/02/21/377663.aspx 注意這段: “On Win 64, there are two copies of HKEY_LOCAL_MACHINE/Software (one for 32-bit apps, and one for 64-bit apps), and therefore there are
繼承繼承是物件導向中擴充項物件的一種方法。子類通過繼承父類,以獲得父類的屬性和方法。我們通常稱子類也為衍生類別,而稱父類為基類。下面的代碼中,Button類就是繼承關係中的基類,ImageButton類派生自Button類,於是,Button就是ImageButton類的父類(基類)。ImageButton就是Button類的一個衍生類別。Code highlighting produced by Actipro CodeHighlighter
多態多態是物件導向理論中至關重要的概念。它關注的是對象行為方面的問題,在派生關係中的對象的行為發生變化,這就是所謂的多態性。我們本節的代碼基本用C++代碼作為例子(因為我們有機會深入到虛表去論證一些重要的問題,儘管也許沒有這個必要),而對於Java開發人員或是C#的開發人員來說,也都是可以理解和接受的。我們依然以Button作為例子:class Button{public: virtual void OnDraw() { /* code for drawing a B
面向介面編程(A)前面的章節對於本篇來說,只是基礎和鋪墊,而且講的很簡單,因為那些很容易理解。我們從這個章節開始,用大量的代碼的配合,來闡述面向介面編程。介面的演化形式現在我們回顧一下繼承相關的知識。我們現在給出一組新的繼承體系。它們是和圖形相關的,我們可以假設這樣的一種需求,就是我們要實現一個畫圖板(例如Windows的畫圖板),至少要能在上面繪製幾個圓形和矩形。於是,我們很自然底定義了如下的classes。Code highlighting produced by Actipro
EXCEPTION HANDLING:A FALSE SENSE OF SECURITYby Tom Cargill This article first appeared in C++ Report, Volume 6, Number 9, November-December 1994. I suspect that most members of the C++ community vastly underestimate the skills needed to program
對象的粒度粒度的變化對象關係的演化我們依然用Button作為例子來說明對象關係中粒度的變化。我們在ImageButton的OnDraw方法中加入了許多的代碼,這些代碼完成了一個按鈕的繪製工作,可能要繪製按鈕的3D邊框,或者表明的漸層色,以及上面的文本,比如OK或者Cancel,此外還有一個Icon,這裡我們就認定它為一個 Image。Code highlighting produced by Actipro CodeHighlighter