C++中封裝與信息隱藏的詳解及其作用介紹
概述
封裝是面向?qū)ο缶幊讨械陌褦?shù)據(jù)和操作數(shù)據(jù)的函數(shù)綁定在一起的一個(gè)概念. 這樣能避免受到外界干擾和誤用.

數(shù)據(jù)隱藏包括數(shù)據(jù)封裝和數(shù)據(jù)抽象兩部分. 數(shù)據(jù)封裝是一種把數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)捆綁在一起的機(jī)制. 數(shù)據(jù)抽象是一種僅向用戶暴露接口而把具體的實(shí)現(xiàn)細(xì)節(jié)隱藏起來(lái)的機(jī)制.

類的公用接口
C++ 通過(guò)類來(lái)實(shí)現(xiàn)封裝性, 把數(shù)據(jù)和與這些數(shù)據(jù)有關(guān)的操作封裝在一個(gè)類中. 在聲明了一個(gè)類以后, 用戶主要是通過(guò)調(diào)用公用的成員函數(shù)來(lái)實(shí)現(xiàn)類提供的功能, 稱為消息傳遞.
公用成員函數(shù)是用戶使用類的公用接口 (public interface), 或者說(shuō)是類的對(duì)外接口. 在類外不能直接訪問私有數(shù)據(jù)成員, 但可以通過(guò)調(diào)用公用成員函數(shù)來(lái)引用甚至修改私有數(shù)據(jù)成員.

類的私有實(shí)現(xiàn)
用戶不必關(guān)系這些功能實(shí)現(xiàn)的細(xì)節(jié), 而只需要知道調(diào)用哪個(gè)函數(shù)會(huì)得到什么結(jié)果, 實(shí)現(xiàn)什么功能即可. 通過(guò)成員函數(shù)對(duì)數(shù)據(jù)成員進(jìn)行操作稱為類的實(shí)現(xiàn). 實(shí)現(xiàn)的細(xì)節(jié)對(duì)用戶是隱蔽的. (信息隱藏)
類中被操作的數(shù)據(jù)是私有的, 實(shí)現(xiàn)的細(xì)節(jié)對(duì)用戶是隱蔽的. 這稱為私有實(shí)現(xiàn). (private implementation)

類的公用接口與私有實(shí)現(xiàn)的分離形成了信息隱蔽. 將接口與實(shí)現(xiàn)分離是軟件工程的一個(gè)最基本的原則.
優(yōu)點(diǎn):
- 如果想擴(kuò)充累的功能, 只需要修改本類中有關(guān)的數(shù)據(jù)成員和它有關(guān)的成員函數(shù). 程序中類外的部分可以不必修改
- 如果在編譯時(shí)發(fā)現(xiàn)類中的數(shù)據(jù)讀寫有錯(cuò), 不必檢查整個(gè)程序. 只需檢查本類中訪問這些數(shù)據(jù)的少數(shù)成員函數(shù)
方法與消息
方法 (method) 指類的成員函數(shù)在面向?qū)ο蟪绦蚶碚撝斜环Q為方法, 是指對(duì)數(shù)據(jù)的操作. 一個(gè) “方法” 對(duì)應(yīng)一種操作. 只有被聲明為公用的方法才能被外界所激活.
消息指對(duì)公用函數(shù)的調(diào)用. 外界是通過(guò)發(fā) “消息” 來(lái)激活有關(guān)方法的. 調(diào)用對(duì)象的成員函數(shù), 就是向?qū)ο蟀l(fā)出的一個(gè) “消息”. 通知它執(zhí)行其中的方法.
面向?qū)ο蟮奶攸c(diǎn):
- 封裝性: 各個(gè)對(duì)象間相對(duì)獨(dú)立
- 抽象性: 類是對(duì)象的抽象, 對(duì)象是類的實(shí)例
- 繼承性: 解決重用問題
- 多態(tài)性: 由繼承產(chǎn)生的相關(guān)的不同的類. 其對(duì)象對(duì)同一消息會(huì)做出不同的響應(yīng)
到此這篇關(guān)于C++中封裝與信息隱藏的詳解及其作用介紹的文章就介紹到這了,更多相關(guān)C++ 封裝 信息隱藏內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++中map和vector作形參時(shí)如何給定默認(rèn)參數(shù)?
今天小編就為大家分享一篇關(guān)于C++中map和vector作形參時(shí)如何給定默認(rèn)參數(shù)?,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04
淺析Boost智能指針:scoped_ptr shared_ptr weak_ptr
雖然通過(guò)弱引用指針可以有效的解除循環(huán)引用,但這種方式必須在程序員能預(yù)見會(huì)出現(xiàn)循環(huán)引用的情況下才能使用,也可以是說(shuō)這個(gè)僅僅是一種編譯期的解決方案,如果程序在運(yùn)行過(guò)程中出現(xiàn)了循環(huán)引用,還是會(huì)造成內(nèi)存泄漏的2013-09-09
基于C++實(shí)現(xiàn)一個(gè)日期計(jì)算器
這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)一個(gè)簡(jiǎn)單的日期計(jì)算器,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2022-10-10
C語(yǔ)言實(shí)現(xiàn)圖書管理系統(tǒng)開發(fā)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)圖書管理系統(tǒng)開發(fā),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
C++ Opencv imfill孔洞填充函數(shù)的實(shí)現(xiàn)思路與代碼
在Matlab下,使用imfill可以很容易的完成孔洞填充操作,下面這篇文章主要給大家介紹了關(guān)于C++ Opencv imfill孔洞填充函數(shù)的實(shí)現(xiàn)思路與代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09
使用Qt開發(fā)實(shí)現(xiàn)字幕滾動(dòng)效果
我們經(jīng)常能夠在外面看到那種滾動(dòng)字幕,那么就拿qt來(lái)做一個(gè)吧,文章通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有有一定的參考價(jià)值,需要的朋友可以參考下2023-11-11

