物件是什么?
物件就是現實世界存在的任何事物都可以稱之為物件,有著位元組獨特的個性
物件由方法和屬性組成
物件的模板就是類
面向物件的三大特性
封裝 繼承 多型
面向物件的六大原則
單一職責原則:每一個類應該專注于做一件事情,即高內聚,低耦合,類的功能要單一,體積不要過于龐大,
開閉原則:一個物件對擴展開發,對修改關閉,即:對類的改動是通過增加代碼進行的,而不是修改現有代碼,一個模塊在擴展性方面應該是開放的,而在更改性方面應該是封閉的,比如:一個網路模塊,原來只提供服務端功能,而現在要加入客戶端功能,name應當在不用修改服務端功能的代碼前提下,就能夠增加客戶端功能的實作代碼,這要求在設計之初,就應當將服務端和客戶端分開,公共部分抽象出來,
里氏替換原則:在任何父類出現的地方都可以用它的子類來替代,子類應當可以替換父類并出現父類能夠出現的任何地方,比如,公司搞年度晚會,所有員工可以參加抽獎,那么不管是老員工還是新員工,也不管是總部員工還是外派員工,都應當可以參加抽獎,否則公司就不和諧了,
依賴倒置原則:要依賴于抽象,不要依賴于具體實作,
介面隔離原則:應當為客戶提供盡可能小的單獨的介面,而不是提供大的總的介面,介面的定義的標準盡可能單一,致力于對介面的多實作,介面規模不要臃腫,
迪米特原則:一個物件應當盡量少的與其他物件之間發生相互作用,是得系統功能模塊相對獨立,降低耦合
組合/聚合復用原則:盡量使用組合/聚合的方式,而不是使用繼承,降低耦合度
簡單來說:軟體工程中物件之間的耦合度就是物件之間的依賴性,指導使用和維護物件的主要問題是物件之間的多重依賴性,物件之間的耦合越高,維護成本越高,因此物件的設計應使類和構件之間的耦合最小,有軟硬體的耦合,還有軟體各模塊之間的耦合,
總的來說:耦合是影響軟體復雜程度和設計質量的一個重要因素,在設計上我們應采用以下原則:
如果模塊間必須存在耦合,就盡量使用資料耦合,少用控制耦合,限制公共耦合的范圍,盡量避免使用內容耦合,
面向程序與面向物件的優缺點(摘抄自https://blog.csdn.net/jerry11112/article/details/79027834)
面向程序的方法寫出來的程式是一份蛋炒飯,而用面向物件寫出來的程式時一份蓋澆飯,所謂蓋澆飯,北京叫蓋飯東北叫燴飯,廣東叫碟頭飯,就是在一碗白米飯上面澆上一份蓋菜,你喜歡什么菜,你就澆上什么菜,我覺得這個比喻還是比較貼切的,
蛋炒飯的好處就是入味均勻,吃起來香,如果恰巧你不愛吃雞蛋,只愛吃青菜的話,那么唯一的辦法就是全部倒掉,重新做一份青菜炒飯,蓋澆飯就沒這么多麻煩,你只需要把上面的蓋菜撥掉,更換一份蓋菜就可以了,蓋澆飯的缺點是入味不均,可能沒有蛋炒飯那么香,
蓋澆飯的好處就是菜,飯分離,從而提高了制作蓋澆飯的靈活性,飯不滿意就換飯,菜不滿意就換菜,用軟體工程的專業術語就是可維護性比較好,飯和菜的耦合度比較低,蛋炒飯將"蛋”“飯"攪和在一起,想換"蛋”"飯"中任何一種都很困難,耦合度很高,以至于"可維護性"比較差,軟體工程追求的目標之一就是可維護性,可維護性主要表現在3個方面:可理解性、可測驗性和可修改性,面向物件的好處之一就是顯著的改善了軟體系統的可維護性,
面向程序
優點: 性能比面向物件高,因為類呼叫時需要實體化,開銷比較大,比較消耗資源,比如單片機,嵌入式開發,Linux/Unix等一般采用面向程序開發,性能是最重要的因素,
缺點:沒有面向物件易維護,易復用,易擴展
從名字中就可以看出來,比較注重程序,解決某個問題,面向程序會把事情拆分成一個個函式和資料(函式的引數),按照一定的順序執行完這些方法,事情就解決了,例如 你要洗衣服 1、執行加洗衣粉方法;2、執行加水方法;3、執行洗衣服方法;4、執行清洗方法; 5、執行烘干方法;這就是將問題拆成一個個方法,
面向物件
優點: 易維護,易復用,易擴展,由于面向物件有封裝,繼承,多型性的特性,可以設計出低耦合的系統,使系統更加靈活,更加易于維護,
缺點:性能比面向程序低
使用面向程序洗衣服,可以將洗衣服分成兩個物件,人和洗衣機,人用來放洗衣粉和加水, 洗衣機用來洗衣服,至于那些方法,就是在類中實作,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/100313.html
標籤:Python
