在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

芥子須彌----封裝(轉)

芥子須彌----封裝(轉)

更新時間:2022-04-27 文章作者:未知 信息來源:網絡 閱讀次數:

芥子須彌

----封裝

作者:HolyFire

說起面向對象OOP首先就有人大喊著封裝

究竟封裝是什么呢,為什么要封裝?

是的,本來并沒有封裝,封裝是由于人們的需要才產生的,就如同計算機來到人間,編程語言進入你的大腦,自然而然。

在沒有封裝的時候,人們一樣在編程,并沒有因為封裝的出現使得猿猴變成了人,所以封裝沒有那么神秘,可怕。

想象一下,我們生活里也有很多封裝:食品被放在袋子里,用來防止混入灰塵和昆蟲侵蝕;戴上太陽鏡,防止紫外線傷害眼睛;錢和貴重物品放在保險柜里,防止心術不正的人。

好了,我們看出一點,封裝的一個作用是保護我們的東西。

在生活中,有很多慣例,這里要提到一點,那就永真式,這是一個表示在無論什么情況下都為真的式子,當然這是一種理想的情況,但人們往往喜歡創造這樣的東西,就象“水往低處流” 。牛頓說“由于地球引力,所以蘋果是往地上掉的”幸虧有這樣的道理,我們才有水喝,有蘋果吃。當然了在地球上很難找出反例,所以我們無需考慮蘋果飛上天的可能性。又如人的聽覺范圍是2kHZ~~20kHZ,如果有人說地球上會有一個人的聽覺超出這個范圍,我一點異議都沒有,但是我還是把人的聽覺作為2kHZ~~20kHZ來處理,應為概率論上有一句,小概率的事是不會發生的,我不打算證實他,我只是想利用他,我只處理2kHZ~~20kHZ的聽覺范圍,在絕大多數領域里,這樣做足夠了,讓在這方面有特別要求的人掙扎去吧,少處理這些個別的人會帶來更多的好處。

我們又能發覺到,封裝的好處能降低復雜度。

我想沒有人會愚蠢到將一只羊和一只牛相加,得到兩只羊或兩只牛這樣的結果,但是兩只動物這樣的結果卻是可以接受的。

這樣看來,封裝他能夠降低出錯的可能性。

封裝所做的遠遠不是這些。

等等,各位心中是不是充滿了疑惑。

講了這么久,為什么不說明封裝到底是什么呢,文中并沒有提到啊。

聰明的朋友,封裝并不是什么東西,也不是什么方法,他是人們考慮和解決問題的思路,他就是你的思想,就是你的靈感一閃,就是你的錦囊妙計。封裝就是人們為了更好的管理和使用事物的方案,它可以讓你更方便,更安全的做你想做的事,長久以來,充滿智慧的杰出者們摸索出一些使用封裝來解決問題的辦法。

在編程的應用上,我們看看封裝給我們帶來的好處吧。

由于計算機里,一些都數字化了,所以信息都是存放在很多很多的存儲單元里的,由于硬件的限制,這些存儲單元都有確實的大小。

首先我們來談談保護我們的數據不被隨便訪問,這正是我提到的。

比如說一個員工可以看到自己的工資,但如果他能夠修改的話,只怕人人都想去這個公司工作了。修改工資的數據,萬萬不行,萬萬不行,但是如果人人都不能修改工資這一數據,那也不行啊,財會需要修改關于工資的數據。

這里我使用面向對象開發而設計的C++語言來實現他,因為他是為面向對象設計的,所以實現起來比較方便。沒學過C++的人先要看一看基本概念,至少要理解private,public,protected,friend等關鍵字的概念。

我們來理解一下我們要做的事,公司里有很多人,人人都有工資,一些是員工,員工用工號來區別,一些是財會,而財會也是員工,員工能察看工資,而財會還能修改工資。

我們有三個角色,人,員工,財會,要做兩件事,員工察看工資,財會修改工資,然后理清他們的關系

人有姓名,年齡,性別 這三樣是我們需要處理的,我們要做的是處理工資,一些無關的信息就可以省略,習慣上每個部門都需要人的這三個信息

人 = { 姓名 , 年齡 , 性別 }

員工是人,財會是人,財會是員工,員工有工資,為了區別員工每個員工有工號

員工察看工資,財會修改工資

員工 ={ 人 , 工資 ,工號 , 察看工資 }

財會 ={ 員工 , 修改工資 }

//下面三句代碼是使用標準函數庫,可以節省我們很多功夫,方便我們理解我們要理解的,略過繁枝小節

#include <iostream>

#include <string>

using namespace std;

class Man{

public:

 enum SexType { Mele , Female };//枚舉類型,性別只有男女兩種,這里不考慮人妖,如果輸入不是這樣種類型,編譯器會報警。類型轉換中如果不是者兩個值,也會報警,這樣我們減少了誤輸入引起的錯誤。

private: //變量不能亂操作,設定為私有,只有類的成員函數才能操作,起到保護作用

 string Name;//姓名,string是標準函數庫里提供的類,可以方便的處理字符串

 unsigned Age; //年齡,由于年齡不可能是負數,所以用unsigned表示,這樣可以防止邏輯錯誤

 SexType Sex;//性別

public: //對外的接口,當然要開放了

 string GetName( void ){ return Name; }//得到人的名字

 void SetName( string const& name )//改變人的名字,這里預先檢查了名字是否合法

{

if( str == "" )

 return;

Name = name;

}

 unsigned GetAge( void ){ return Age; }//得到人的年齡

 void SetAge( unsigned age )//改變人的年齡,由于員工50歲就退休了,所以50以下的才合法

{

if( age >= 50 )

 return;

Age = age;

}

 SexType GetSex( void ){ return Sex; } //得到人的性別

 Void SetSex( SexType sex ){ Sex = sex }//改變人的性別

};

class Accountant;

class Employee : public Man{

private:

 unsigned ID;//工號

protected://雖然要加以保護,但是他的后繼類財會要操作的

 unsigned Pay; //工資

public:

 unsigned GetID( void );//取得工號

 void SetID( unsigned );//改變工號

 unsigned GetPay( void ){ return Pay; }//察看工資

friend class Accountant;//由于財會能夠修改所有員工的工資,所以要將訪問權信托給財會

};

class Accountant : public Employee{

public:

 void SetPay( unsigned pay ){ Pay = pay; } //改變自己的工資

 void SetPay( Employee * man , unsigned pay ){ man->Pay = pay; }; //改變別人的工資

};

當然這是經過精心設計后的封裝,簡化了結構,正因為一開始細心的分析,才使得設計可以輕松自如,歸根結底是由于思想正確,好了,封裝是一種思想,我們現在將他體現了出來。

再看這個例子里,工資的類型是unsigned,非負整數,呵呵,大家都不愿意到工資為負的公司工作吧,這里簡化問題是從人們的慣例的角度出發的,如果你的老板考慮工資為負的情況,那么…^_^

現在一個粗心的財會不小心改錯了,他多敲了一個0,哇歐,請客請客,但這個財會可就慘了,這樣的好事不會發生,不準發生,老板青著臉狂吼著。

設計不得不加上一個工資的上限,沒辦法啦,現在國家規定的嗎。

class Accountant : public Employee{

 enum MaxPay{ MAXPAY = 8000 };

public:

 void SetPay( unsigned pay )

{

if( pay > MAXPAY )

 return;

Pay = pay;

}

 void SetPay( Employee * man , unsigned pay )

{

if( pay > MAXPAY )

 return;

man->Pay = pay;

}

};

可以看出封裝的作用就是減少出錯的可能,方便靈活的運用類型

在上面的例子里我們看到,類class是由一些變量和函數組成的,這些變量和函數是類的一部分,我們稱之為成員,變量就是成員變量,函數當然就叫成員函數了。為什么要這樣呢,我們考慮一下,事物是由物質和運動組成的,表現物質的一面我們通常描述他的一些屬性,即他擁有什么,表現一個運動我們通常使用一個過程,要將一個事物的信息描述清楚就需要這兩樣東西。在長期的實踐中程序員達成一個共識,將事物的特性(也就是它擁有的)稱之為屬性,他能夠產生的行為稱之為方法,數字化以后就是成員變量和成員函數,他們的組成的整體就是類(類型),這個類型將作為一個單獨的節點考慮,就像例子中的Man,我們不會說這是一個姓名,年齡等等的組合體,而是將他作為一個類--class Man考慮,從而簡化了問題。細小的事物組合成大的事物,大的事物組合成更大的事物,這樣下去,再大難題也可以化作小模塊來處理,這正是封裝誘人的地方和他的使命。

需要補充的是,既然我們把數據保護起來,那么如何讓用戶訪問這些數據就是一個問題了,在上面的例子中看出public:申明的方法,用戶是可以使用的,而我們正是通過這些方法將數據的信息告訴使用者,這里我們將描述方法的部分就叫做接口(在C++里,就是類中成員函數的聲明,用戶一般只對public:部分的接口感興趣,所以有人建議將public:部分的內容寫在顯眼的地方,比如靠類的頂部),也有人說是界面,也就是類和外界溝通和交流使用的渠道,所以接口是很重要的,他直接關系到你的類使用的方面。

而使用者使用類的某個接口的時候就象是通知這個類型使用某個行為,就象是傳遞一個消息給他一樣,我們把使用接口稱之為傳遞消息,而類被調用方法稱之為接受消息。

現在我們可以出定義:封裝就是將事物的內容和行為都隱藏在實現里,用戶不需要知道其內部實現,這是大量程序員反復勞動后得出的一致結論。這樣的好處就是使用方便,易于維護,任何一樣都可以使程序員為之心動。當然我們不能保證高效,但是不意味著使用封裝就沒有高效的可能,如果在封裝的基礎上保證高效的話,我實在找不出理由來拒絕他。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 一级做a免费视频| 男女视频网站在线观看| 91黄色小网站| 18禁网站免费无遮挡无码中文| a级黄色片网站| av磁力番号网| 日本精品福利视频| 国产片侵犯亲女视频播放| 四虎4hu永久免费入口| 成人黄色片免费| 国产制服91一区二区三区制服| 男人天堂成人网| 日本一本中文字幕| 日韩国产欧美亚洲| 国产又大又黄又粗的视频| 天天干天天爽天天射| 九九九九九九九九| 免费日韩在线观看| 人妻久久久一区二区三区| 成年人视频网站免费观看| 热久久精品免费视频| 天天干天天色天天干| 欧美日韩中文字幕在线播放| 国产午夜福利在线播放| 国产一线二线三线在线观看| 国产精品久久久久久9999| 黄色激情在线视频| 欧美成人黄色网址| 欧洲精品视频在线| 成人免费视频久久| 无码人妻aⅴ一区二区三区日本| 男人日女人视频网站| 成年网站免费在线观看| 久草视频国产在线| 黄大色黄女片18第一次| www.成年人视频| 欧美大尺度做爰床戏| 日韩精品福利片午夜免费观看| 欧美一区二区三区爽大粗免费| 亚洲欧美日韩综合网| 国产91xxx| 男同互操gay射视频在线看| 国产xxxxx视频| bt天堂新版中文在线地址| 午夜免费福利视频在线观看| 成人午夜免费在线视频| 日韩av在线中文| 美女福利视频在线| 久久99久久99精品| 黑人巨大国产9丨视频| 天天干天天干天天干天天干天天干| 免费在线黄网站| 久久久国产精华液999999 | 9191国产视频| 热久久久久久久久| 日韩免费高清在线| 91视频最新入口| 国产精品专区在线| 丁香花在线影院观看在线播放| 涩多多在线观看| 国产成人黄色网址| 91国产精品视频在线观看| 北条麻妃在线视频| 国产女女做受ⅹxx高潮| 日韩视频第二页| 欧美三级在线观看视频| 激情深爱综合网| 欧美黑人经典片免费观看| 日本中文字幕亚洲| 777777av| 国产精品igao| 爽爽爽在线观看| 免费不卡av网站| 视色,视色影院,视色影库,视色网| av亚洲天堂网| 日本三级中文字幕在线观看| 91嫩草国产丨精品入口麻豆| 成年丰满熟妇午夜免费视频| 人人妻人人澡人人爽欧美一区| 日韩国产小视频| 精品中文字幕av| 国内自拍视频网| 亚洲一区二区三区四区精品| 国产成人精品免费看在线播放| 色一情一乱一乱一区91| 缅甸午夜性猛交xxxx| 久久久精品三级| 日本黄色播放器| 91视频 -- 69xx| 三上悠亚在线一区二区| 日本一二三区视频在线| 欧美成人免费在线观看视频| 黄色一级二级三级| 中文字幕av导航| 国产女女做受ⅹxx高潮| 北条麻妃亚洲一区| 日本网站免费在线观看| 一级黄色高清视频| 香港三级韩国三级日本三级| 中文字幕66页| 国产最新免费视频| 91制片厂免费观看| 成人精品小视频| www插插插无码免费视频网站| 黄色一级二级三级| 日韩a∨精品日韩在线观看| 在线能看的av网站| 国产成人久久婷婷精品流白浆| 色呦色呦色精品| 免费成人在线视频网站| 国产三级中文字幕| www.日本xxxx| 少妇高潮毛片色欲ava片| 日韩视频在线观看一区二区三区| 国产男女免费视频| 日韩精品手机在线观看| 成人性生交视频免费观看| 三级4级全黄60分钟| 久久综合久久网| 欧美性受xxxx黒人xyx性爽| 亚洲国产精品久久久久婷蜜芽| 国产高清不卡无码视频| 婷婷激情5月天| 邪恶网站在线观看| 无码内射中文字幕岛国片| 亚洲国产成人精品无码区99| 免费观看黄色的网站| 五月天视频在线观看| 亚洲美女性囗交| 男人添女人下面免费视频| 久久久久久香蕉| 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 男人添女人下面高潮视频| 国产乱人伦精品一区二区三区| 亚洲一级片av| 一区二区三区日韩视频| 7777在线视频| 日本黄大片在线观看| 免费看黄在线看| 国精产品一区一区三区视频| 国产美女网站在线观看| 999香蕉视频| www.激情小说.com| 成人日韩在线视频| 欧美日韩一区二区三区电影| 热久久最新网址| 精品视频在线观看一区| 黄色片久久久久| 伊人色在线观看| 91成人在线视频观看| 人妻av中文系列| 美女一区二区三区视频| 思思久久精品视频| 91免费国产精品| 日本三区在线观看| 涩多多在线观看| 韩日视频在线观看| 黑鬼大战白妞高潮喷白浆| 看看黄色一级片| 亚洲色成人www永久在线观看 | 99精品视频在线看| 天天做天天干天天操| 日本福利视频一区| 小泽玛利亚视频在线观看| av磁力番号网| 国产v亚洲v天堂无码久久久| 欧美日韩精品区别| 久久艹国产精品| 永久免费黄色片| 国产l精品国产亚洲区久久| 久久黄色片网站| 国产精品丝袜久久久久久消防器材 | 伊人五月天婷婷| 青青草原av在线播放| 大陆极品少妇内射aaaaaa| 激情五月俺来也| 精品视频免费在线播放| 亚洲妇熟xx妇色黄蜜桃| 日韩一级在线免费观看| 97精品国产97久久久久久粉红| 国产一区亚洲二区三区| 国产 欧美 日本| 亚洲日本黄色片| 亚洲欧美另类动漫| 久久久久狠狠高潮亚洲精品| 国产乱子伦精品无码专区| 手机在线视频一区| 日韩大片一区二区| 99视频免费播放| 99色精品视频| 黄色av网址在线播放| 欧美久久久久久久久久久久久久| 在线一区二区不卡| 小明看看成人免费视频| 邪恶网站在线观看| 一区二区在线免费看| 性chinese极品按摩| 国产aaaaa毛片| 青青青国产在线视频| 天天爽人人爽夜夜爽|