class calculater
if(c==
'-')
if(c==
'*')
if(c==
'/')
}如果我再想加入 % 功能,則需要修改 calculate 方法, 得修改源**
};
class calculater
class plus:public calculater
}class subtrct:public calculater
}class multiply:public calculater
}class devide:public calculater
}這時候如果想新增功能就直接 再繼承乙個抽象類,不用修改其他**
錯誤的做法
class car
;class tuolaji : public car};
class person : public tuolaji //繼承,這樣就能使用其中方法};
intmain()
正確的做法
class car
;class tuolaji : public car};
class person
void
party()
string name;
car* car;
// 作為成員:類的組合 ,而不是繼承};
intmain()
情況1:呼叫者直接對每個類進行操作,需要了解每個類的細節
情況2:呼叫者通過中介對類abc進行操作,並不去了解類abc的細節,只操作中介提供的介面
物件導向七大設計原則
乙個軟體實體如類 模組和函式應該對擴充套件開放,對修改關閉。用抽象構建框架,用實現擴充套件細節。提高軟體系統的可復用性及可維護性。高層模組不應該依賴底層模組,二者都應該依賴其抽象 抽象不應該依賴細節 細節應該依賴抽象 針對介面程式設計,不要針對實現程式設計 應用層 高層 應用層的呼叫依賴低層的實現。...
物件導向七大設計原則
1 開閉原則 ocp open closed principle 核心 對擴充套件開放,對修改關閉。即在設計乙個模組的時候,應當使這個模組可以在不被修改的前提下被擴充套件。根據開閉原則,在設計乙個軟體系統模組 類,方法 的時候,應該可以在不修改原有的模組 修改關閉 的基礎上,能擴充套件其功能 擴充套...
物件導向的三大特性和五大設計原則
solid 設計原則 其他設計原則 物件導向的 solid 原則 隱藏物件的屬性和實現細節,通過對外暴露的介面控制程式中屬性的讀寫。封裝需要把所有屬性私有化,對每個屬性提供 getter 和 setter 方法。如果有乙個帶參的建構函式的話,還需要寫乙個不帶參的建構函式。通過繼承可以實現 的復用。缺...