封裝的意義和操作過程

封裝

面向對象的程序設計中,某個類把所需要的數據(也可以說是類的屬性)和對數據的操作(也可以說是類的行為)

全部都封裝在類中,分別稱為類的成員變量和方法(或成員函數)。這種把成員變量和成員函數封裝在一起的編程

特性稱為封裝。

類由屬性和方法組成,類的屬性是對數據的封裝,而類的方法是對類的行為的封裝。

抽象的實現并不一定必須是一張表或映射表的數據結構,選擇哪種方式對契約進行實現并不重要,對象的抽象優于它

的實現決定。外部視圖不關心內部具體如何實現的。

抽象和封裝是互補的概念,抽象關注對象的可觀察到的行為(外部),而封裝關注的是行為的實現。封裝通常是通過

信息隱藏來實現的。信息隱藏是將那些不涉及對象本質特征的秘密都隱藏起來的過程。“復雜系統的每部分都不應該依

賴于其他部分的內部細節”,抽象“幫助人們思考他們做什么”,而封裝“讓程序可以借助最少的工作進行可靠的修改”。

封裝在不同的抽象自己提供了明確的邊界,因此導致了清晰的分離關注。如:表現層中,我們通常只關注業務層提供

了那些接口,而不會關注接口具體是如何實現的一樣。較高抽象層次上的對象看不到較低抽象層次的實現細節。

平時,我們為類定義兩個部分:一個接口和一個實現。類的接口描述了它的外部視圖,包含了這個類所有實例的共同

行為的抽象。類的實現包含抽象的表示以及實現期望的行為的機制。通過類的接口,我們能知道客戶可以對這個類的

所有實例所作出的假定。而客戶不能對這個類的細節做任何假定。

“封裝是一個過程,它分隔構成抽象的結構和行為的元素。封裝的作業是分離抽象的概念接口與實現。”

類的方法也分為公有方法和私有方法。

類的私有方法只能通過對象名(在類內部也就是self)在類的內部進行訪問。

而公有方法可以在類的外部通過對象名進行訪問。

和屬性不同的是,一般意義上的類方法屬于對象,也就是說只有通過對象才可以進行調用,不能直接通過類名進行調用。

一般類方法的第一個參數必須是代指類對象本身的(一般我們常用self,實際上可以是任何自定義的名字,只不過self是

大家約定俗成的用法,在下面介紹的類方法中,大家一般用cls,因為那里更多地標識的是一個類),可以通過self訪問

類對象的成員函數和數據。

同樣,公有的成員函數和私有的成員函數也是通過名字來區分的,雙下劃線‘__’開頭的函數是私有成員函數。


class MsgManagerment:

? ? ?def __send_vlidate_code(self, code):

? ? ? ? ? print("發送驗證碼...%s" % code)

? ? ?def send_msg(self, type, code):

? ? ? ? ?if type == "1":# 優化監控部

? ? ? ? ? ? ? ?print("*********")

? ? ? ? ? ? self.__send_vlidate_code(code)

? ? ? ? ? ? ?return 0

? ? ? ? ?else:

? ? ? ? ? ?return "沒有權限"

m = MsgManagerment()

res = m.send_msg("1", "abc")

print(res)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容