1.對(duì)象(object)
1.一切皆是對(duì)象。如下圖:
- ·女人是一個(gè)對(duì)象
- ·鞋子是一個(gè)對(duì)象
- ·包包是一個(gè)對(duì)象
- ·衣服是一個(gè)對(duì)象
- ·褲子是一個(gè)對(duì)象
- ·手鏈?zhǔn)且粋€(gè)對(duì)象
- …
2.對(duì)象由對(duì)象組成.
這里人這個(gè)對(duì)象,由鞋子、包包、衣服、 褲子、手鏈等對(duì)象組成。
3.每個(gè)對(duì)象都有:
- a)數(shù)據(jù)(描述對(duì)象的屬性)
- b)函數(shù)(行為操作代碼)
2.類(class)
- ·具有相同屬性和行為的對(duì)象,我們可以把它抽象為類。
- ·類是對(duì)象的抽象
- ·對(duì)象是類的特例
.
3.面向?qū)ο蟮某绦蛟O(shè)計(jì)(OOP)
·面向過程的程序設(shè)計(jì)(Process oriented programming)
在面向過程時(shí),我們重點(diǎn)圍繞功能,用一個(gè)函數(shù)去實(shí)現(xiàn)一個(gè)功能。
·面向?qū)ο蟮某绦蛟O(shè)計(jì)(Object oriented programming)
在面向?qū)ο髸r(shí),我們重點(diǎn)去描述對(duì)象的數(shù)據(jù)和功能。
a)設(shè)計(jì)所需的各種類。
b)定義各種各樣的對(duì)象。
c)向相關(guān)的對(duì)象發(fā)送消息,完成具體的任務(wù)。
4.類的聲明和對(duì)象的定義
1.設(shè)計(jì)類
關(guān)鍵字class
- ·數(shù)據(jù)成員
- ·成員函數(shù)
- 訪問權(quán)限
private
–私有的 私有的成員只能在類的內(nèi)部訪問public
–公有的 公有的成員才可以在類的外部使用protected
–受保護(hù)的 先放一放。繼承
為了考慮到封裝和信息隱藏
,我們一般的使用原則是:
數(shù)據(jù)成員 都用private
成員函數(shù) 都用public
- ·更加常用的方式
1.只在類的內(nèi)部聲明數(shù)據(jù)成員和成員函數(shù)。
2.在類的外部定義類的成員函數(shù)。
3.記得加上類的作用域。
class和struct的區(qū)別
class 的默認(rèn)權(quán)限是private
struct的默認(rèn)權(quán)限是public
2.定義對(duì)象
·先聲明類 再定義對(duì)象
·聲明類的同時(shí),定義對(duì)象
·省略類名 直接定義對(duì)象
3.訪問對(duì)象的函數(shù)
對(duì)象名.函數(shù)名;
4.命名規(guī)范
·類名首字母大寫
·對(duì)象名首字母小寫
5.并非所有的成員函數(shù)都必須是公有的
!
如果一個(gè)成員函數(shù),它只需要在類的內(nèi)部使用,也就是這個(gè)函數(shù)只被類中的其他成員函數(shù)調(diào)用,而不需要再類的外部使用,那我們將它作為私有的成員函數(shù)。
5.類的成員函數(shù)
1.訪問權(quán)限:
·一般將需要被外界調(diào)用的成員函數(shù)指定為public,這是類對(duì)外的接口。
·若函數(shù)只在類的內(nèi)部調(diào)用,用來完成其他成員函數(shù)的功能,應(yīng)該指定為private。
·成員函數(shù)可以訪問本類中任何的成員,無論他是私有的還是公有的。
2.inline成員函數(shù) 內(nèi)置函數(shù)
內(nèi)聯(lián)函數(shù):
·使用內(nèi)聯(lián)函數(shù)節(jié)省時(shí)間,增加目標(biāo)程序的長(zhǎng)度。
·將規(guī)模很小,使用頻繁的函數(shù)聲明為內(nèi)聯(lián)函數(shù)。
·內(nèi)聯(lián)函數(shù)不能包含復(fù)雜的循環(huán)語句和switch語句。
·inline只是程序員對(duì)編譯系統(tǒng)的建議。
inline成員函數(shù):
·在類的內(nèi)部直接定義的函數(shù)將被隱式地指定為內(nèi)聯(lián)函數(shù)。
·在類的外部顯式地聲明內(nèi)聯(lián)函數(shù)。聲明 定義 inline
對(duì)象的存儲(chǔ)方式:
- ·各個(gè)數(shù)據(jù)分開存儲(chǔ)。
- ·成員函數(shù)共享內(nèi)存。
- ·跟訪問權(quán)限無關(guān)。
6.訪問對(duì)象成員
·私有成員只能在成員函數(shù)中引用。直接使用成員名即可。
·公有數(shù)據(jù)成員可以在類外訪問public,但是考慮到封裝和信息隱藏。不要這樣做。
·公有成員函數(shù)可以在類外訪問,這是類對(duì)外的接口。
1.訪問對(duì)象中成員的3種方法:
·對(duì)象名+成員運(yùn)算符
·指向?qū)ο蟮闹羔?+ 指向運(yùn)算符
·對(duì)象的引用變量 + 成員運(yùn)算符
2.私有數(shù)據(jù)成員如何訪問?
私有數(shù)據(jù)成員,只能通過成員函數(shù)
訪問。
如果要獲取私有數(shù)據(jù)成員的值。
返回值:
指針:
引用:
這種set和get函數(shù)去設(shè)置和獲取私有數(shù)據(jù)成員是很多設(shè)計(jì)者常用的方法。幾乎已經(jīng)成為慣例。
7.類的封裝與信息隱藏
函數(shù)的原型:
函數(shù)的封裝性:
1.函數(shù)的功能是什么?
2.函數(shù)的名字是什么?
3.函數(shù)有幾個(gè)參數(shù)?
4.每一個(gè)參數(shù)的類型是什么?
5.函數(shù)的返回值是什么?
函數(shù)的內(nèi)部:
1.采用什么樣的計(jì)算方法?
2.采用什么樣的程序結(jié)構(gòu)?
3.怎樣得到計(jì)算結(jié)果?
4.怎么返回?cái)?shù)據(jù)?
5.性能如何保證?
這樣的話,有些人專注于函數(shù)內(nèi)部的具體實(shí)現(xiàn)。有些人則只需要知道函數(shù)怎么用就可以了。對(duì)于一個(gè)開發(fā)團(tuán)隊(duì)來講,這樣的設(shè)計(jì)絕對(duì)是恰到好處的。
對(duì)于類來說也是同樣的道理:
·C++通過類來實(shí)現(xiàn)封裝性,把數(shù)據(jù)和跟數(shù)據(jù)相關(guān)的函數(shù)封裝在類中。
·聲明一個(gè)類之后,用戶只需要調(diào)用類的公用接口
來實(shí)現(xiàn)具體的功能—消息傳遞
·用戶不必關(guān)心功能是如何實(shí)現(xiàn)的,只需要知道用哪一個(gè)函數(shù)可以實(shí)現(xiàn)什么樣的功能–信息隱藏
·類中被操作的數(shù)據(jù)是私有的,函數(shù)的實(shí)現(xiàn)細(xì)節(jié)是隱蔽的–私有實(shí)現(xiàn)
補(bǔ)充2個(gè)概念:
方法:類的成員函數(shù)
消息:對(duì)公有成員函數(shù)的調(diào)用
如果在一個(gè)項(xiàng)目開發(fā)里面涉及到很多個(gè)類,可能幾百上千個(gè)類,那么類和類之間的關(guān)系式錯(cuò)綜復(fù)雜的,如果在設(shè)計(jì)這樣的程序里面,我要把每一個(gè)類里面的細(xì)節(jié)都搞清楚,這樣的認(rèn)知成本就太高了。而現(xiàn)在有了封裝和信息隱藏,在整個(gè)團(tuán)隊(duì)里面,我們只需要知道類的公用接口就可以了,而不需要知道它的私有實(shí)現(xiàn)。分工明確,開發(fā)效率高。
面向?qū)ο蟮某绦蛟O(shè)計(jì)特性:
封裝性
將數(shù)據(jù)和相關(guān)的代碼封裝在一個(gè)對(duì)象中。各個(gè)對(duì)象之間相對(duì)獨(dú)立,互不干擾。
將對(duì)象的數(shù)據(jù)隱藏,隱藏內(nèi)部實(shí)現(xiàn)的細(xì)節(jié),只留下一部分接口。
抽象性
類是對(duì)象的抽象,對(duì)象是類的特例。
繼承性
把最重要的特征,解決軟件的重用。
多態(tài)性
由繼承性產(chǎn)生相關(guān)不同的類。不同的對(duì)象,對(duì)象對(duì)同樣的消息會(huì)做出不一樣的反應(yīng)。文章來源:http://www.zghlxwxcb.cn/news/detail-411053.html
基于對(duì)象的程序設(shè)計(jì): 封裝 抽象
面向?qū)ο蟮某绦蛟O(shè)計(jì):封裝 抽象 繼承 多態(tài).文章來源地址http://www.zghlxwxcb.cn/news/detail-411053.html
到了這里,關(guān)于C++類和對(duì)象基礎(chǔ)知識(shí)詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!