1. 程式人生 > >面系那個物件開發原則.高內聚.低耦合+Python安裝詳細教程+print輸出帶顏色的方法

面系那個物件開發原則.高內聚.低耦合+Python安裝詳細教程+print輸出帶顏色的方法

面系那個物件開發原則.高內聚.低耦合

軟體設計中通常用耦合度和內聚度作為衡量模組獨立程度的標準。劃分摸塊的一個準則就是高內聚低耦合。

這是軟體工程中的概念,是判斷設計好壞的標準,主要是面向OO的設計,主要是看類的內聚性是否高,偶合度是否低.

每一個類完成特定的獨立的功能,這個就是高內聚。耦合就是類之間的互相呼叫關係,如果耦合很強,互相牽扯呼叫很多,那麼會牽一髮而動全身,不利於維護和擴充套件。

類之間的設定應該要低耦合,但是每個類應該要高內聚.耦合是類之間相互依賴的尺度.如果每個物件都有引用其它所有的物件,那麼就有高耦合,這是不合乎要求的,因為在兩個物件之間,潛在性地流動了太多資訊.低耦合是合乎要求的:它意味著物件彼此之間更獨立的工作.低耦合最小化了修改一個類而導致也要修改其它類的”連鎖反應”. 內聚是一個類中變數與方法連線強度的尺度.高內聚是值得要的,因為它意味著類可以更好地執行一項工作.低內聚是不好的,因為它表明類中的元素之間很少相關.成分之間相互有關聯的模組是合乎要求的.每個方法也應該高內聚.大多數的方法只執行一個功能.不要在方法中新增’額外’的指令,這樣會導致方法執行更多的函式.

推廣開來說,這個思想並不限於類與類之間的關係。模組和模組,子系統之間也都要遵守這個原則,才可以設計出延展性比較強的系統。

什麼是耦合

定義

耦合性也稱塊間聯絡。指軟體系統結構中各模組間相互聯絡緊密程度的一種度量。模組之間聯絡越緊密,其耦合性就越強,模組的獨立性則越差。模組間耦合高低取決於模組間介面的複雜性、呼叫的方式及傳遞的資訊。

耦合度就是某模組(類)與其它模組(類)之間的關聯、感知和依賴的程度,是衡量程式碼獨立性的一個指標,也是軟體工程設計
及編碼質量評價的一個標準。耦合的強度依賴於以下幾個因素:
(1)一個模組對另一個模組的呼叫;
(2)一個模組向另一個模組傳遞的資料量;
(3)一個模組施加到另一個模組的控制的多少;

(4)模組之間介面的複雜程度。

耦合分類

耦合按從強到弱的順序可分為以下幾種型別:
a)非直接耦合:兩模組間沒有直接關係,之間的聯絡完全是通過主模組的控制和呼叫來實現的   
b)資料耦合:指兩個模組之間有呼叫關係,傳遞的是簡單的資料值,相當於高階語言的值傳遞; 
c)標記耦合:指兩個模組之間傳遞的是資料結構,如高階語言中的陣列名、記錄名、檔名等這些名字即標記,其實傳遞的是這個資料結構的地址;  
d)控制耦合:一指一個模組呼叫另一個模組時,傳遞的是控制變數(如開關、標誌等),被調模組通過該控制變數的值有選擇地執行塊內某一功能; 
e)外部耦合:一組模組都訪問同一全域性簡單變數而不是同一全域性資料結構,而且不是通過引數傳遞該全域性變數的資訊   

f)公共耦合:一組模組都訪問同一個公共數
據環境。該公共資料環境可以是全域性資料結構、共享的通訊區、記憶體的公共覆蓋區等。   
g)內容耦合:這是最高程度的耦合,也是最差的耦合。當一個模組直接使用另一個模組的內部資料,或通過非正常入口而轉入另一個模組內部。

為什麼要低耦合(解耦合)

  在面向物件程式設計中,物件自身是內聚的,是保管好自己的資料,完成好自己的操作的,而對外界呈現出自己的狀態和行為。但是,沒有絕對的自力更生,對外開放也是必要的!一個物件,往往需要跟其他物件打交道,既包括獲知其他物件的狀態,也包括仰賴其他物件的行為,而一旦這樣的事情發生時,我們便稱該物件依賴於另一物件。只要兩個物件之間存在一方依賴一方的關係,那麼我們就稱這兩個物件之間存在耦合。 比如媽媽和baby,媽媽要隨時關注baby的睡、醒、困、哭、尿等等狀態,baby則要仰賴媽媽的餵奶、哄睡、換紙尿褲等行為,從程式的意義上說,二者互相依賴,因此也存在耦合。首先要說,耦合是必要的。

  耦合的程度就是耦合度,也就是雙方依賴的程度。上文所說的媽媽和baby就是強耦合。而你跟快遞小哥之間則是弱耦合。一般來說耦合度過高並不是一件好事。就拿作為IT精英的你來說吧,上級隨時敦促你的工作進度,新手頻繁地需要你指導問題,隔三差五還需要參加酒局飯局,然後還要天天看領導的臉色、關注老婆的心情,然後你還要關注程式碼中的bug 、bug、bug,和需求的變化、變化、變化,都夠焦頭爛額了,還猝不及防的要關注眼睛、頸椎、前列腺和頭髮的狀態,然後你再炒個股,這些加起來大概就是個強耦合了。從某種意義上來說,耦合天生就與自由為敵,無論是其他物件依賴於你,還是你依賴其他物件。比如有人嗜煙、酗酒,你有多依賴它們就有多不自由;比如有人家裡生了七八個娃,還有年邁的父母、岳父母,他們有多依賴你,你就有多不自由。所以老子這樣講:“五音令人耳聾,五色令人目盲,馳騁狩獵令人心發狂,難得之貨令人行妨。”盧梭也是不無悲涼的說“人生而自由,卻又無往而不在枷鎖中”。因此,要想自由,就必須要降低耦合,而這個過程就叫做解耦和。

  耦合度很高的情況下,維護程式碼時修改一個地方會牽連到很多地方,如果修改時沒有理清這些耦合關係,那麼帶來的後果
可能會是災難性的,特別是對於需求變化較多以及多人協作開發維護的專案,修改一個地方會引起本來已經執行穩定的模組錯誤,嚴重時會導致惡性迴圈,問題永遠改不完,開發和測試都在各種問題之間奔波勞累,最後導致專案延期,使用者滿意度降低,成本也增加了,這對使用者和開發商影響都是很惡劣的,各種風險也就不言而喻了。

如何降低耦合(解耦合)

  1. 少使用類的繼承,多用介面隱藏實現的細節。 Java面向物件程式設計引入介面除了支援多型外, 隱藏實現細節也是其中一個目的。
  2. 模組的功能化分儘可能的單一,道理也很簡單,功能單一的模組供其它模組呼叫的機會就少。(其實這是高內聚的一種說法,高內聚低耦合一般同時出現,為了限制篇幅,我們將在以後的版期中討論)。
  3. 遵循一個定義只在一個地方出現。
  4. 少使用全域性變數。
  5. 類屬性和方法的宣告少用public,多用private關鍵字,
  6. 多用設計模式,比如採用MVC的設計模式就可以降低介面與業務邏輯的耦合度。
  7. 儘量不用“硬編碼”的方式寫程式,同時也儘量避免直接用SQL語句操作資料庫。
  8. 最後當然就是避免直接操作或呼叫其它模組或類(內容耦合);如果模組間必須存在耦合,原則上儘量使用資料耦合,少用控制耦合,
    限制公共耦合的範圍,避免使用內容耦合。

什麼是內聚

  內聚,通俗的來講,就是自己的東西自己保管,自己的事情自己做。每個模組儘可能獨立完成自己的功能,不依賴於模組外部的程式碼。

  物件是什麼?物件就是保管好自己的東西,做好自己的事情的程式模組——這就是內聚!當然,物件的內聚只是內聚的一個層次,在不同的尺度下其實都有內聚的要求,比如方法也要講內聚,架構也要講內聚。

內聚: 內聚性又稱塊內聯絡。指模組的功能強度的度量,即一個模組內部各個元素彼此結合的緊密程度的度量。若一個模組內各元素(語名之間、程式段之間)聯絡的越緊密,則它的內聚性就越高。

高內聚:類與類之間的關係而定,高,意思是他們之間的關係要簡單,明瞭,不要有很強的關係,不然,執行起來就會出問題。一個類的執行影響到其他的類。由於高內聚具備魯棒性,可靠性,可重用性,可讀性等優點,模組設計推薦採用高內聚。

內聚度是指內部各元素之間聯絡的緊密程度,模組的內聚種類通常可分為7種,按其內聚度從低
到高的次序依此為:偶然內聚、邏輯內聚、瞬時內聚、過程內聚、通訊內聚、順序內聚、功能內聚。

1 偶然內聚: 指一個模組內的各處理元素之間沒有任何聯絡。
2 邏輯內聚: 指模組內執行幾個邏輯上相似的功能,通過引數確定該模組完成哪一個功能。
3 時間內聚: 把需要同時執行的動作組合在一起形成的模組為時間內聚模組。
4 通訊內聚: 指模組內所有處理元素都在同一個資料結構上操作(有時稱之為資訊內聚),或者指各處理使用相同的輸入資料或者產生相同的輸出資料。
5 順序內聚: 指一個模組中各個處理元素都密切相關於同一功能且必須順序執行,前一功能元素輸出就是下一功能元素的輸入。
6 功能內聚: 這是最強的內聚,指模組內所有元素共同完成一個功能,缺一不可。與其他模組的耦合是最弱的。

例子:

有個例子很容易明白:一個程式有50個函式,這個程式執行得非常好;然而一旦你修改其中一個函式,其他49個函式都需要做修改,這就是高耦合的後果。
一旦你理解了它,你編寫概要設計的時候設計類或者模組自然會考慮到“高內聚,低耦合”。

可能也可以這樣理解:
高內聚相對的是方法的獨立性,減少外部(全域性引數)的影響。低耦合相對的是方法的依賴性低,可用搭積木的方式構建程式。內聚類似積木,耦合類似蓋房子,而高內聚低耦合的方式是比較效率並個性化構建房屋的方式。

Python安裝詳細教程

以windows版本舉例:

1、首先去Pycharm官網,或者直接輸入網址:http://www.jetbrains.com/pycharm/download/#section=windows,下載PyCharm安裝包,根據自己電腦的作業系統進行選擇,對於windows系統選擇下圖的框框所包含的安裝包。

2,雙擊下載的安裝包,進行安裝,然後會彈出介面:

3,選擇安裝目錄,Pycharm需要的記憶體較多,建議將其安裝在D盤或者E盤,不建議放在系統盤C盤:

4,點選Next,進入下圖的介面:

Create Desktop Shortcut建立桌面快捷方式,一個32位,一個64位,小編的電腦是64位系統,所以選擇64位。

勾選Create Associations是否關聯檔案,選擇以後開啟.py檔案就會用PyCharm開啟。

5,點選Next,進入下圖(預設安裝即可):

6,耐心的等待兩分鐘左右,如下圖:

7,之後就會得到下面的安裝完成的介面:

8,選擇Accept,進入下一步:

9,進入啟用介面,選擇第二個License server,如下圖所示:

之後在License server address中隨意輸入下面兩個註冊碼中的任意一個即可,Pycharm新註冊碼1:http://idea.liyang.io或pycharm新註冊碼2:http://xidea.online,之後點選OK,便可以啟用Pycharm了。

如果還不行,那麼點選圖片中的 ,複製貼上以下驗證碼:

View Code

10,Pycharm啟用後:

啟用之後會自動跳轉到下圖介面,選擇IDE主題與編輯區主題:

11,可以選擇主題風格:

12,之後進入介面:

13,建立py檔案:

14,最終書寫程式碼並執行:

print輸出帶顏色的方法

書寫格式: 開頭部分:\033[顯示方式;前景色;背景色m + 結尾部分:\033[0m

​ 注意:開頭部分的三個引數:顯示方式,前景色,背景色是可選引數,可以只寫其中的某一個;另外由於表示三個引數不同含義的數值都是唯一的沒有重複的,所以三個引數的書寫先後順序沒有固定要求,系統都能識別;但是,建議按照預設的格式規範書寫。

​ 對於結尾部分,其實也可以省略,但是為了書寫規範,建議\033[***開頭,\033[0m結尾。

-------------------------------------------
-------------------------------------------
字型色     |       背景色     |      顏色描述
-------------------------------------------
30        |        40       |       黑色
31        |        41       |       紅色
32        |        42       |       綠色
33        |        43       |       黃色
34        |        44       |       藍色
35        |        45       |       紫紅色
36        |        46       |       青藍色
37        |        47       |       白色
-------------------------------------------
-------------------------------
顯示方式     |      效果
-------------------------------
0           |     終端預設設定
1           |     高亮顯示
4           |     使用下劃線
5           |     閃爍
7           |     反白顯示
8           |     不可見
-------------------------------

數值表示的引數含義:

顯示方式: 0(預設值)、1(高亮)、22(非粗體)、4(下劃線)、24(非下劃線)、 5(閃爍)、25(非閃爍)、7(反顯)、27(非反顯)
前景色: 30(黑色)、31(紅色)、32(綠色)、 33(黃色)、34(藍色)、35(洋 紅)、36(青色)、37(白色)
背景色: 40(黑色)、41(紅色)、42(綠色)、 43(黃色)、44(藍色)、45(洋 紅)、46(青色)、47(白色)

常見開頭格式:
\033[0m 預設字型正常顯示,不高亮
\033[32;0m 紅色字型正常顯示
\033[1;32;40m 顯示方式: 高亮 字型前景色:綠色 背景色:黑色
\033[0;31;46m 顯示方式: 正常 字型前景色:紅色 背景色:青色

舉例說明:

1,

print('\033[1;35;0m字型變色,但無背景色 \033[0m')  # 有高亮 或者 print('\033[1;35m字型有色,但無背景色 \033[0m')
print('\033[1;45m 字型不變色,有背景色 \033[0m')  # 有高亮
print('\033[1;35;46m 字型有色,且有背景色 \033[0m')  # 有高亮
print('\033[0;35;46m 字型有色,且有背景色 \033[0m')  # 無高亮

結果:

2,

print('\033[0;36m床前明月光,')
print('疑是地上霜。')
print('舉頭望明月,')
print('低頭思故鄉。\033[0m')

結果:

相關推薦

那個物件開發原則..耦合+Python安裝詳細教程+print輸出顏色方法

面系那個物件開發原則.高內聚.低耦合 軟體設計中通常用耦合度和內聚度作為衡量模組獨立程度的標準。劃分摸塊的一個準則就是高內聚低耦合。 這是軟體工程中的概念,是判斷設計好壞的標準,主要是面向OO的設計,主要是看類的內聚性是否高,偶合度是否低. 每一個類完成特定的獨立的功能,這個就是高內聚。耦合就是類之間的互相呼

面向對象原則:耦合

擴展性 影響 來看 訪問 成員 排列 功能 之一 新增 實際上,大多數框架都替我們考慮了這些問題,這就是為什麽我們在框架規範的要求下寫出的代碼更流暢(至少以前給我的感覺是這樣),言歸正傳。 高內聚、低耦合的定義: 內聚:每個模塊盡可能獨立完成自己的功能,不依賴於模塊外部的代

java設計原則——耦合

高內聚低耦合 二者的定義如下: 內聚性:又稱塊內聯絡。指模組的功能強度的度量,即一個模組內部各個元素彼此結合的緊密程度的度量。若一個模組內各元素(語名之間、程式段之間)聯絡的越緊密,則它的內聚性就越高。 耦合性:又稱塊間聯絡。指軟體系統結構中各模組間相互聯

設計思想之耦合

判斷 表現 一個 span 改變 get 什麽是 軟件 高內聚低耦合 1.什麽是高內聚? 內聚針對的是模塊內部關系,指的是模塊各構成要素間的聯系,高內聚說明各構成要素間聯系緊密。 2.高內聚的優點 各構成要素間聯系緊密,說明各構成要素是實現模塊功能充分的存在,沒

耦合

模塊 聯系 通信 bsp 高程 同時 其他 之間 概要設計 什麽是高內聚、低耦合? 起因:模塊獨立性指每個模塊只完成系統要求的獨立子功能,並且與其他模塊的聯系最少且接口簡單,兩個定性的度量標準――耦合性和內聚性。 耦合性也稱塊間聯系。指軟件系統結構中各模

代碼賦值 耦合

聚合 頁面 承擔 系統數據庫 過多 span 松耦合 字段 小寫 約定大於規則:字段、方法、空間名稱、大小寫一直、什麽方法是公用的。 “公文管理”系統字段命名:hpId hpID 有的頁面大寫,有的小寫,導致提取公共js

Java編碼思想之什麽是耦合

什麽是 外部 style 標準 方式 中一 pyw 信息 思想 分別描述的是模塊內部特征,和模塊外部引用關系。內聚就是一個模塊內各個元素彼此結合的緊密程度,高內聚就是一個模塊內各個元素彼此結合的緊密程度高。 內聚是就其中任何一個模塊的內部特征而言的。 耦合是就多

軟件設計之——“耦合

font 道理 即使 可靠 標準 沒有 增加 關系 環境 耦合度 一、什麽是耦合度 軟件設計中通常用耦合度和內聚度作為衡量模塊獨立程度的標準。劃分摸塊的一個準則就是高內聚低耦合。 耦合度(Coupling)是對模塊間關聯程度的度量。耦合的強弱取決與模塊間接口的復雜性、調用模

四、耦合

什麽 耦合 pos 內聚 同時 class 是否 改變 根據 1.為什麽高內聚低耦合? 為了降低復雜度。如何去降低?首先看低內聚,高耦合是什麽樣的。 1.低內聚 一個低內聚的模塊,會存在一些職責之間沒有關聯的方法。它內部的每個職責都會有對應的

軟體設計之—— 耦合

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

白話總結耦合

  高內聚:(模組內部高內聚)     1、確定模組要完成的功能點,只完成本質功能,不提供多餘功能。(理解為責任分離,單一責任原則) 即是在一個模組內部功能也要獨立,不能散亂,故名為內聚。   2、程式碼責任單一,可讀     3、高內聚的程式碼,功能獨立,可複用。   4、

C語言耦合 摘錄1

程式碼的高內聚低耦合是評判程式碼的很重要的標準,但是如何才能實現程式碼的高內聚低耦合可以說多是書本理論,如何才能使自己寫出來的程式碼能實現這種效果,必須要看一下大專案的原始碼,看看一些晶片廠商給的庫檔案,慢慢感受,慢慢學習,今天網上搜索一段比較簡潔的規則,特記錄

軟體工程中的耦合

定義 高內聚低耦合,是軟體工程中的概念,是判斷設計好壞的標準,主要是面向物件的設計,主要是看類的內聚性是否高,耦合度是否低。 概念 耦合性:也稱塊間聯絡。指軟體系統結構中各模組間相互聯絡緊密程度的一種度量。模組之間聯絡越緊密,其耦合性就越強,模組的獨立性則越

【軟工】軟體工程(五)——耦合

一、前言       模組獨立是指每個模組完成一個相對獨立的特定子功能,並且與其他模組之間的聯絡簡單。而衡量模組獨立的標準就是:耦合性和內聚性。我們要做到模組間的高內聚和低耦合。 二、耦合    

耦合的特點

 所以:   為什麼要高內聚?  模組之間的關係越緊密,出錯就越少!   為什麼要低耦合?  子程式間的關係越複雜,就會產生更多的意想不到的錯誤!會給以後的維護工作帶來很多麻煩! 如圖所示: 詳細介紹: 內聚是從功能角度來度量模組內的聯絡,一個好的內聚模組應當恰好做一件事。它描述的是模組內的功能聯絡; 

C++效能系列之耦合的設計模式

高內聚低耦合模式應用MVC設計模式的解決方案是:service提供的功能是controller其中的部分給外部使用的功能。當不存在對外提供的服務的時候,controller不必實現service介面。

軟體開發技術: (high cohesion)

高內聚是指程式碼只完成一個定義清晰的任務。對函式,高內聚是一個函式只完成一個運算邏輯;對於類,高內聚就是一個類只完成此一個業務邏輯;對於庫和包,高內聚是隻對應一個業務領域。 實際上,高內聚只是單一責任

面向物件三大特性五大原則 + 耦合

面向物件的三大特性是"封裝、"多型"、"繼承",五大原則是"單一職責原則"、"開放封閉原則"、"里氏替換原則"、"依賴倒置原則"、"介面分離原則"。 什麼是面向物件 面向物件(Object Oriented,OO)是軟體開發方法。面向物件的概念和應用已超越了程式

面向物件原則耦合。多聚合、少繼承

面向物件的基本原則:多聚合,少繼承。低耦合,高內聚.【高內聚、低耦合】    內聚:每個模組儘可能獨立完成自己的功能,不依賴於模組外部的程式碼。    耦合:模組與模組之間介面的複雜程度,模組之間聯絡越複雜耦合度越高,牽一髮而動全身。    目的:使得模組的“可重用性”、“

什麽是耦合

通過 理解 程序 操作 輸出 必須 似的 並且 增加 起因:模塊獨立性指每個模塊只完成系統要求的獨立子功能,並且與其他模塊的聯系最少且接口簡單,兩個定性的度量標準――耦合性和內聚性。    耦合性也稱塊間聯系。指軟件系統結構中各模塊間相互聯系緊密程度的一種度量。模塊之