封裝的概念

2022-07-21 01:30:21 字數 2743 閱讀 1829

對於乙個具有豐富結構化程式設計經驗的程式設計師來說,物件導向的程式設計可能會給他們帶來非常不自然的感覺。封裝是實現物件導向程式設計的第一步,封裝就是將資料或函式等集合在乙個個的單元中(我們稱之為類)。被封裝的物件通常被稱為抽象資料型別。在本文中,我們將詳細學習屬性的特性。

封裝的概念

可以把程式按某種規則分成很多「塊「,塊與塊之間可能會有聯絡,每個塊都有乙個可變部分和乙個穩定的部

分。我們需要把可變的部分和穩定的部分分離出來,將穩定的部分暴露給其他塊,而將可變的部分隱藏起來,以

便於隨時可以讓它修改。這項工作就是封裝.

例如:在用類實現某個邏輯的時候,類就是以上所說的塊,實現功能的具體**就是可變的部分,而public的

法或者屬性則是穩定的部分。

封裝的意義

封裝的意義在於保護或者防止**(資料)被我們無意中破壞。在物件導向程式設計中資料被看作是乙個中心的原素並且和使用它的函式結合的很密切,從而保護它不被其它的函式意外的修改。

封裝提供了乙個有效的途徑來保護資料不被意外的破壞。相比我們將資料(用域來實現)在程式中定義為公用的(public)我們將它們(fields)定義為私有的(privat)在很多方面會更好。

私有的資料可以用兩種方式來間接的控制。下面我們看一些c#例子來學習這兩種方法用以封裝資料。第一種方法,我們使用傳統的存、取方法。第二種方法我們用屬性(property)。無論我們使用哪種的方法,我們的目標是在使用資料的同時不能使它受到任何的破壞和改變。有如下好處

其一: 使用者只需要了解如何通過類的介面使用類,而不用關心類的內部資料結構和資料組織方法。

其二:高內聚,低耦合一直是我們所追求的,用好封裝恰恰可以減少耦合

其三:只要對外介面不改變,可以任意修改內部實現,這個可以很好的應對變化

其四:類具有了簡潔清晰的對外介面,降低了使用者的學習過程

用傳統的讀、寫方法封裝

讓我們來看乙個例子有乙個類department,為了操縱這個類中的資料(string departname)我們定義了乙個讀方法和乙個寫方法。

using system;

public class department

//寫方法

public void setdepartname( string a)

}通過上面的方法,我們可以保護私有資料不被外部程式所破壞。現在我們使用兩個不同的方法來寫和讀資料

public static int main(string args)

在上面的例子中,我們不能直接訪問類department的例項d中的私有資料(string departname),我們只能通過這兩個方法來訪問。

用屬性來實現封裝

屬性是c#引入的一種語言成分,只有很少的語言支援屬性。通過對屬性的讀和寫來保護類中的域。第一種方法體身也是一種好的方式,但用屬性來實現封裝會更方便。

現在我們來看乙個例子:

using system;

public class department

set}

}public class departmentmain

",d.departname);

return 0;}}

通過上面的例子,我們可以看到如何通過屬性來實現封裝。屬性具有兩種操作get和set。get用來返回屬性域的值。set通過value這個變數來給屬性域賦值。屬性可以設為唯讀的(read-only)。這只需屬性只具有乙個set操作。

唯讀屬性

using system;

public class readdepartment

public string departname}}

public class readdepartmain

",d.departname);

return 0;}}

在上面的例子中我們看到了如何來實現乙個唯讀的屬性。類readdepartment擁有乙個departname屬性只實現了get操作。它省略了寫操作。這個特別的類擁有乙個構造器,用來接受乙個字串變數。類readdepartmain中的main方法建立了乙個新的物件d。對像d的例項使用了類readdepartment帶有乙個字串引數的構造器。因為上面的屬性是唯讀的,所以我們不給給域departname賦值並且我們只側讀取此域中的值。當然屬性也可以是只寫的(write-only),這只需屬性只具有乙個get操作。

只寫屬性

using system;

public class writedepartment

",departname);}}

}public class writedepartmain

}在上面的例子中我們看到了如何來實現乙個只寫的屬性。類writedepartment擁有乙個departname屬性只實現了set操作。它省略了讀操作。

總結封裝是朝著物件導向程式設計邁出的第一步。本文向您展示了一些封裝的知識。用傳統的讀、寫兩種方法可以實現封裝,另一種實現封裝的方法是使用屬性。使用屬性的好處在於物件的使用者可以用一條語句來操作內部的資料。

基本概念 封裝

封裝的概念 封裝是把乙個物件的外部特徵和內部實現細節分離開來,其它物件可以訪問該物件的外部特徵,但不能訪問其內部實現細節。物件的封裝是一種資訊隱藏技術,其目的是將物件的使用者與設計者分開。在程式設計中,封裝是指將乙個資料和與這個資料有關的操作集合在一起,形成乙個能動的實體 物件,使用者不必知道物件行...

PHP 封裝概念1

燕十八 公益php講堂 論 壇 微 博 yy頻道 88354001 筆記部分 繼續來看封裝,在方法上的體現 部分 class human public function send much else if much this money else public function showmoney ...

15 類與封裝的概念

類通常分為兩個部分 當使用類時,不需要關心其實現細節 當建立類時,才需要考慮其內部實現細節。封裝的基本概念 c 中類的封裝 public 成員變數和成員函式可以在類的內部和外界訪問和呼叫 private 成員變數和成員函式只能在類的內部被訪問和呼叫 範例 類成員的訪問屬性 include inclu...