讓儲存資料的類,僅用於資料的持有,除此之外,不向外界提供過多的修改介面(甚至是訪問介面),修改(有時是訪問)介面統一交由其控制類。舉乙個不恰當的例子,試卷類僅用於記錄成績,只有教師類(控制類)可對成績進行一系列的修改和訪問。
讓控制類(操縱資料的類),僅用於操作動作(而不儲存資料),操縱的方式主要有兩種:
這多少已經開始有點 mvc 的設計思想了。
「誰來監督監督者?」,也存在控制類的控制類,使更一層的抽象和提取。但「我附庸的附庸,不是我的附庸」,正如企業的董事長不會事無鉅細,直接管理流水線上的每乙個員工一樣,控制類的控制類也不直接運算元據,而是通過中間的橋梁和媒介,位於中間層的空間類。
所以 mvc 的設計思想,自然內嵌了一種分層的關係。
父類和子類(甚至爺類和孫類)之間的不同和差異能有多少?有時不需要很大,只需要重寫某一虛函式,甚至唯一的差異在私有成員的持有上,私有成員自然帶來建構函式的不同;
子模擬父類功能和屬性(成員函式和成員變數)上會只多不少,這裡的多
,意味著一種功能的拓展,「站在了巨人的肩膀人」。
在類的繼承層次較深時,如果繼承關係中的一層,給出了一種形式的構造(非空參構造)時,編譯器就不會為當前類再提供以呼叫當前類成員函式預設構造為職責的空參構造形式,底層類的建構函式在其初始化引數列表的位置就要顯式的給出其父類的實現。
所謂規則、所謂模式,都是有限狀態集,對有限狀態最有力的模擬型別即是列舉型別變數,我們定義這些狀態或規則所對應的列舉型別,以乙個該列舉型別變數作為該類的建構函式所需的引數(該類內部需維護乙個私有的該列舉型別變數),在相關的不同規則、模式下的處理函式時。
class model
; model(criterion criter):_criter(criter){}
void process()
}private:
const criterion _criter;
};
結構化設計與物件導向設計
上次例會我們就一直在討論到底是該用結構化分析方法還是物件導向分析方法,以下是他們的區別與優勢。結構化方法和物件導向方法對於不同的軟體系統各有優劣。結構化方法把解空間分資料和功能兩部分,可以更加清晰地進行需求分析和功能分解,資料流圖能夠細緻地說明資料在各個功能模組之間的流動和變化,更適於系統設計的前期...
物件導向設計與分析
在前面裝載的一遍文章 類的高階 初步總結了類的相關使用。在這段的時間工作中,又讓我加強了對類和物件的了解。看了 物件導向設計與分析 的第三章 類與物件,裡面描述類和物件的關係也比較清晰,所以發表博文總結一下。1 物件的本質 我們可以將乙個物件概括為乙個有狀態 行為 識別符號的實體。物件的狀態包括這個...
物件導向與面向過程設計思想
設計乙個下棋的遊戲 面向過程的解決方式是分析問題的步驟,然後每個步驟分別用函式來解決。物件導向的解決方式是將他們劃分為若干功能,而不是步驟。1.黑白雙方 2.棋盤系統 繪製棋盤 3.規則系統 判斷輸贏 類與物件的概念 類是對同一事物高度的抽象,類中定義了這一類物件所應具有的靜態屬性 屬性 和動態屬性...