C 類設計思考(三) 類方法與實現函式

2021-05-23 07:02:50 字數 1172 閱讀 9345

實現函式是指單獨完成某種具體任務的函式,如向量的點積、差積,矩陣的行列式計算等。實現函式必須遵守以下原則:

1、單一職責原則: 函式只能擁有一種功能,不能包含多個功能,但可呼叫其它實現函式完成特定任務。常見的一種錯誤例項是對容器物件進行統計的實現,其**既包含了對容器子物件的遍歷,又包含對單個子物件的統計處理.

2、標準資料型別原則: 實現函式的引數型別必須為語言內建的標準資料型別,不可以為使用者自定義的資料型別.

3、外部零依賴原則: 實現函式不得依賴於任何外部變數、全域性變數、類成員變數以及其它全域性性函式等,它僅能依賴傳入的函式引數;函式的實現**如果需要處理錯誤,可在引數列表中指定錯誤處理函式指標。

4、契約式實現原則: 函式實現的入口必須提供前條件驗證,包括函式引數檢查,函式實現的出口必須提供後條件驗證。如果函式有輸出引數,在前條件驗證通過後,初始化所有輸出引數為相應的預設值(這樣可剔除結果的任意性);

排程函式是指使用實現函式或者其它排程函式完成特定任務的函式,排程函式的主要目的是提供實現函式所需要的執行場景。排程函式必須遵守以下原則:

1、零實現原則: 排程函式不允許包含任何實現,它僅能使用實現函式或者其它排程函式來完成特定任務;

2、層次排程原則: 排程函式只允許使用比自身低一層次的其它排程函式,而不允許跨層次排程.即國王排程城主,城主排程騎士,國王卻不可排程騎士。

c++類設計時首先需要遵守的原則是類方法及其實現的分離,即排程的不實現,實現的不排程(類的方法已經繫結到特定的類上,並依賴於特定的物件狀態,其**重用度必然較對應的實現函式小)。類方法屬於排程函式,同樣必須遵守排程函式的原則,類方法通過以物件狀態為場景並調應相應的實現函式來完成特定功能。

例項**:

template

inline const t vector2dotimpl(const t x0,const t y0,const t x1,const t y1)

return x0 * x1 + y0 * y1;

template

class cvector2

t dot(const cvector2& rhs) const

return vector2dotimpl(m_x,m_y,rhs.m_x,rhs.m_y);

t      m_x;

t     m_y;

胡樂秋2010/8/9

三類MySQL MySQL常用的三類函式

經常編寫程式或者使用資料庫的同學一定體會到函式的重要性,豐富的函式往往能使使用者的工作事半功倍。函式能幫助使用者做很多事情,比如說字串的處理 數值的運算 日期的運算等,在這方面mysql提供了多種內建函式幫助開發人員編寫簡單快捷的sql語句,其中常用的函式有字串函式 日期函式和數值函式。1 字串函式...

C 三 類與物件 上

1 類的引入 class為定義類的關鍵字,classname為類的名字,中為類的主體,注意類定義結束時後面分號。類中的元素稱為類的成員 類中的資料稱為類的屬性或者成員變數 類中的函式稱為類的方法或者成員函式。類的兩種定義方式 1 將類的成員函式 定義和宣告放在一起 在工程中,不會將函式的申明和定義全...

C 備考(三)類與物件

學習沒有捷徑,但考試有捷徑 常量 const 符號 字串常量 立即數 引用和指標 類的封裝和隱藏 靜態成員 友元函式 類的初始化 初始化方式和順序 類的繼承 繼承方式 構函列表 多繼承 類的多型性 函式過載 運算子過載 虛函式 虛函式表 類的作用域概念 類 使用者定義的新的複雜資料型別 將不同型別的...