2013-09-24 89 views
1

這可能是重複的問題,但我還沒有找到答案。封裝與數據隱藏?

Link 1

封裝:

封裝在一個類中的私有 製作領域,並通過公共方式提供接入領域的技術。如果某個字段 聲明爲private,它不能被任何人在類外訪問, 從而隱藏類中的字段。出於這個原因,封裝也被稱爲數據隱藏

Link 2

封裝:

「這[...]是指構建的膠囊,在的情況下的概念上的障礙,圍繞着一些東西的集合。「 — [夫斯-Brock等人,1990]

「作爲一個過程,封裝是指[...]的容器中。封裝內包圍一個或多個項目,作爲一個實體的行爲,是指一個包或包含(包含,封裝)一個或多個物品的外殼。「

「如果封裝與信息隱藏是'相同的事情',那麼人們可能會說'封裝的所有東西都被隱藏了。這顯然不是真的。「

我應該去哪一個?還是我誤解了這個定義?

回答

3

主要的一點是,它並沒有真正的問題。任何人都可以用一種稍微不同的方式來定義一個術語,並且通常各種作者都會根據他們使用這些術語的各種環境來調整意義。

你不會從試圖找出哪一個是「正確的」,哪一個是「錯」獲得任何啓示。從上下文中引用的行情特別沒有意義。

重要的是要了解基本的想法沒有提及用來指他們的詞彙。

1

第一個定義非常以Java爲中心。第二個是更通用的。兩者都是正確的。至於哪一個去,這是一個主觀問題。由於兩者都是正確的,我建議你喜歡的一個...

+0

+1以Java爲中心 – Rohit

2

去有意見分歧,封裝的定義是否應包括數據隱藏所以這將是一個嚴格的意見的答覆。我相信後面的定義更加正確,因爲數據隱藏並不是面向對象編程唯一的。它是一個獨立的功能,並不排除封裝是功能/方法與一組變量的綁定。實際上,數據隱藏是C語言和Pascal等語言中早期模塊化編程的標誌。

0

封裝不僅僅是數據隱藏。它將公開接口的內部數據表示解耦。由於封裝,只要你不打破接口契約,你可以改變內部實現,而不需要任何人知道。所以我會說封裝=數據隱藏+執行隱藏。