C 物件導向設計

2022-09-15 06:18:13 字數 2124 閱讀 9525

一. 組合(復合),繼承,委託

1.composition(組合)has-a

1.1 組合舉例:(adapter 設計模式)

關係:利用deque功能實現所有queue功能

template 

class

queue

size_type size()

const

reference front()

reference back()

void push(const value_type&x)

void

pop()

};

1.2 構造與析構

構造由內而外:

container的建構函式先呼叫component的預設建構函式,再執行自己

如果預設建構函式不符合要求,需自己在外部建構函式寫明呼叫哪個內部建構函式

析構由外而內:

container的析構函式先執行自己,再呼叫component的析構函式

2. delegation(委託): composition by reference

以handle/body(pimpl)設計模式為例

關係圖: 

存指向另乙個物件的指標,composition by reference 

;}3 繼承 (is-a)

3.1 舉例:

struct

_list_node_base

;template

struct

_list_node

: public

_list_node_base

;

3.2 構造與析構

建構函式由內而外,析構函式由外而內;

derived的建構函式先呼叫base的預設建構函式,再執行自己

derived的析構函式先執行自己,再呼叫base的析構函式

base的析構函式必須為virtual,否則可能出現只呼叫基類析構函式,而未呼叫派生類析構函式的情況

二 虛函式與多型

1. 虛函式

函式的繼承,繼承的是呼叫權。

非虛函式:不希望子類重新定義(override 複寫)它

虛函式:希望子類重新定義(override)它

純虛函式:希望子類一定要重新定義它,你對他無定義。

class

shape ;

class rectangle: public

shape ;

class ellipse: public shape ;

2 以開檔案為例

共有部分在設計父類時事先實現;其他無法決定其定義的(如本例中如何讀檔案內容)

serialize宣告為虛函式,使其延緩到子類再重新定義,決定其具體的實現。

子類物件呼叫父類函式,流程如圖中所示

上述過程模擬**:

#include using

namespace

std;

class

cdocument

virtual

void

serialize(){};

}; class cmydoc : public

cdocument

};int

main()

C 物件導向設計

一.組合 復合 繼承,委託 1.composition 組合 has a 1.1 組合舉例 adapter 設計模式 關係 利用deque功能實現所有queue功能 template class queue size type size const reference front reference...

物件導向設計

物件導向設計 object oriented design,ood 方法是oo方法中乙個中間過渡環節。其主要作用是對ooa分析的結果作進一步的規範化整理,以便能夠被oop直接接受。物件導向設計 ood 是一種軟體設計方法,是一種工程化規範。這是毫無疑問的。按照bjarne stroustrup的說法...

物件導向設計

1 物件導向的三要素 1.1 封裝 encapsulation a 封裝 合理的隱藏資料的隱藏 隱藏在方法背後 實現的隱藏 隱藏在介面背後 變化的隱藏 隱藏在抽象背後 b 封裝能夠提高物件的復用性 減低物件的耦合度c 良好的封裝 物件的高內聚 1.2 繼承 inheritance a 基於差異式程式...