99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線(xiàn)電話(huà):13121318867

登錄
2022-01-25 閱讀量: 603
面向?qū)ο?/div>

/www.cnblogs.com/ideal-20/p/11050146.html

1. 類(lèi)和對(duì)象

1.1 什么是面向過(guò)程?什么又是面向?qū)ο螅?/h3>

面向過(guò)程——步驟化

  • 面向過(guò)程就是分析出實(shí)現(xiàn)需求所需要的步驟,通過(guò)函數(shù)(方法)一步一步實(shí)現(xiàn)這些步驟,接著依次調(diào)用即可

面向?qū)ο蟆袨榛?/strong>(概念相對(duì)抽象,可結(jié)合下面的例子理解)

  • 面向?qū)ο笫前颜麄€(gè)需求按照特點(diǎn)、功能劃分,將這些存在共性的部分封裝成類(lèi)(類(lèi)實(shí)例化后才是對(duì)象),創(chuàng)建了對(duì)象不是為了完成某一個(gè)步驟,而是描述某個(gè)事物在解決問(wèn)題的步驟中的行為

回到頂部

1.1.1 能舉個(gè)例子談?wù)勀銓?duì)面向過(guò)程和面向?qū)ο蟮睦斫鈫?/h4>

例如我們?cè)O(shè)計(jì)一個(gè)桌球游戲(略過(guò)開(kāi)球,只考慮中間過(guò)程)

A:面向過(guò)程方式思考:

把下述的步驟通過(guò)函數(shù)一步一步實(shí)現(xiàn),這個(gè)需求就完成了。(只為演示概念,不細(xì)究邏輯問(wèn)題)。

① palyer1 擊球 —— ② 實(shí)現(xiàn)畫(huà)面擊球效果 —— ③ 判斷是否進(jìn)球及有效 —— ④ palyer2擊球

⑤ 實(shí)現(xiàn)畫(huà)面擊球效果 —— ⑥ 判斷是否進(jìn)球及有效 —— ⑦ 返回步驟 1—— ⑧ 輸出游戲結(jié)果

B:面向?qū)ο蠓绞剿伎迹?/strong>

經(jīng)過(guò)觀察我們可以看到,其實(shí)在上面的流程中存在很多共性的地方,所以我們將這些共性部分全集中起來(lái),做成一個(gè)通用的結(jié)構(gòu)

  1. 玩家系統(tǒng):包括 palyer1 和 palyer2

  2. 擊球效果系統(tǒng):負(fù)責(zé)展示給用戶(hù)游戲時(shí)的畫(huà)面

  3. 規(guī)則系統(tǒng):判斷是否犯規(guī),輸贏等

我們將繁瑣的步驟,通過(guò)行為、功能,模塊化,這就是面向?qū)ο?,我們甚至可以利用該程序,分別快速實(shí)現(xiàn)8球和斯諾克的不同游戲(只需要修改規(guī)則、地圖和球色即可,玩家系統(tǒng),擊球效果系統(tǒng)都是一致的)

回到頂部

1.1.2 面向過(guò)程和面向?qū)ο蟮膬?yōu)缺點(diǎn)

A:面向過(guò)程

優(yōu)點(diǎn):性能上它是優(yōu)于面向?qū)ο蟮模驗(yàn)轭?lèi)在調(diào)用的時(shí)候需要實(shí)例化,開(kāi)銷(xiāo)過(guò)大。

缺點(diǎn):不易維護(hù)、復(fù)用、擴(kuò)展

用途:?jiǎn)纹瑱C(jī)、嵌入式開(kāi)發(fā)、Linux/Unix等對(duì)性能要求較高的地方

B:面向?qū)ο?/strong>

優(yōu)點(diǎn):易維護(hù)、易復(fù)用、易擴(kuò)展,由于面向?qū)ο笥?strong style="margin: 0px; padding: 0px;">封裝繼承、多態(tài)性的特性,可以設(shè)計(jì)出低耦合的系統(tǒng),使系統(tǒng)更加靈活、更加易于維護(hù)

缺點(diǎn):一般來(lái)說(shuō)性能比面向過(guò)程低

低耦合:簡(jiǎn)單的理解就是說(shuō),模塊與模塊之間盡可能的獨(dú)立,兩者之間的關(guān)系盡可能簡(jiǎn)單,盡量使其獨(dú)立的完成成一些子功能,這避免了牽一發(fā)而動(dòng)全身的問(wèn)題。這一部分我們會(huì)在面向?qū)ο髮W(xué)習(xí)結(jié)束后進(jìn)行系統(tǒng)的整理和總結(jié)。

總結(jié):只通過(guò)教科書(shū)后的例題是無(wú)法體會(huì)到面向過(guò)程所存在的問(wèn)題的,在一些小例程中,面向過(guò)程感覺(jué)反而會(huì)更加的簡(jiǎn)單,但是一旦面臨較大的項(xiàng)目,我們需要編寫(xiě)N個(gè)功能相似的函數(shù),函數(shù)越來(lái)越多,代碼量越來(lái)越多,你就知道這是一場(chǎng)噩夢(mèng)了。

說(shuō)明:關(guān)于性能的問(wèn)題,這里只是在籠統(tǒng)意義上來(lái)說(shuō),具體性能優(yōu)劣,需要結(jié)合具體程序,環(huán)境等進(jìn)行比對(duì)

1.2 說(shuō)一說(shuō)類(lèi)、對(duì)象、成員變量和成員方法的關(guān)系和理解

類(lèi):一組相關(guān)的屬性和行為的集合,是一個(gè)抽象的概念。

對(duì)象:該類(lèi)事物的具體表現(xiàn)形式,具體存在的個(gè)體。

成員變量:事物的屬性

成員方法:事物的行為

上面我們說(shuō)了這幾個(gè)概念,那么到底應(yīng)該怎么理解呢?

類(lèi)就是對(duì)一些具有共性特征,并且行為相似的個(gè)體的描述。

比如小李和老張都有姓名、年齡、身高、體重等一些屬性,并且兩人都能夠進(jìn)行聊天、運(yùn)動(dòng)等相似的行為。

由于這兩個(gè)人具有這些共性的地方,所以我們把它抽象出來(lái),定義為一個(gè)類(lèi)——人類(lèi),而小李、老王正是這個(gè)類(lèi)中的個(gè)體(對(duì)象),而每一個(gè)個(gè)體才是真正具體的存在,光提到人類(lèi),你只知道應(yīng)該有哪些屬性行為,但你不知道他具體的一些屬性值,比如你知道他屬于 “人類(lèi)” 所以他應(yīng)該擁有姓名,年齡等屬性,但你并不知道他具體叫什么,年齡多大了。而小李和老王這兩個(gè)具體的對(duì)象,卻能夠?qū)崒?shí)在在的知道老王今年30歲了、身高175等值。

所以可以得出結(jié)果:類(lèi)是對(duì)象的抽象,而對(duì)象是類(lèi)的具體實(shí)例。類(lèi)是抽象的,不占用內(nèi)存,而真正根據(jù)類(lèi)實(shí)例化出具體的對(duì)象,就需要占用內(nèi)存空間了。

1.3 成員變量和局部變量有什么區(qū)別?

A:在類(lèi)中的位置不同

  • 成員變量:類(lèi)中方法外

  • 局部變量:代碼塊,方法定義中或者方法聲明上(方法參數(shù))

B:在內(nèi)存中的位置不同

  • 成員變量:在堆中

  • 局部變量:在棧中

C:生命周期不同

  • 成員變量:隨著對(duì)象的創(chuàng)建而存在,隨著對(duì)象的消失而消失

  • 局部變量:隨著方法的調(diào)用而存在,隨著方法的調(diào)用完畢而消失

D:初始化值不同

  • 成員變量:有默認(rèn)值(構(gòu)造方法對(duì)它的值進(jìn)行初始化)

  • 局部變量:沒(méi)有默認(rèn)值,必須定義,賦值,然后才能使用


41.0350
0
關(guān)注作者
收藏
評(píng)論(0)

發(fā)表評(píng)論

暫無(wú)數(shù)據(jù)
推薦帖子