C++中面向?qū)ο笥心男┗靖拍??很多新手?duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元管城做網(wǎng)站,已為上家服務(wù),為管城各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108面向?qū)ο蟮恼Z(yǔ)言
在大一上學(xué)期,我們學(xué)習(xí)了C語(yǔ)言,它是一門非常經(jīng)典,非常基礎(chǔ)的語(yǔ)言,所有計(jì)算機(jī)學(xué)科的同學(xué)們估計(jì)都沒(méi)有逃脫它的魔爪,而C++從名字上就非常清楚了,它是C的一種衍生,它幾乎包括C的所有內(nèi)容,但是他們的設(shè)計(jì)思路卻大不相同,C是一門面向過(guò)程的程序,而C++是面向?qū)ο蟮某绦?,下面我們?lái)解釋一下這兩者的區(qū)別。
面向過(guò)程:分析出解決問(wèn)題所需要的步驟,然后用函數(shù)把這些步驟一步一步實(shí)現(xiàn),使用的時(shí)候一個(gè)一個(gè)依次調(diào)用就可以了。
面向?qū)ο螅?/strong>是把構(gòu)成問(wèn)題事務(wù)分解成各個(gè)對(duì)象,建立對(duì)象的目的不是為了完成一個(gè)步驟,而是為了描敘某個(gè)事物在整個(gè)解決問(wèn)題的步驟中的行為。
例如五子棋,面向過(guò)程的設(shè)計(jì)思路就是首先分析問(wèn)題的步驟:1、開始游戲,2、黑子先走,3、繪制畫面,4、判斷輸贏,5、輪到白子,6、繪制畫面,7、判斷輸贏,8、返回步驟2,9、輸出最后結(jié)果。把上面每個(gè)步驟用分別的函數(shù)來(lái)實(shí)現(xiàn),問(wèn)題就解決了。
而面向?qū)ο蟮脑O(shè)計(jì)則是從另外的思路來(lái)解決問(wèn)題。整個(gè)五子棋可以分為 1、黑白雙方,這兩方的行為是一模一樣的,2、棋盤系統(tǒng),負(fù)責(zé)繪制畫面,3、規(guī)則系統(tǒng),負(fù)責(zé)判定諸如犯規(guī)、輸贏等。第一類對(duì)象(玩家對(duì)象)負(fù)責(zé)接受用戶輸入,并告知第二類對(duì)象(棋盤對(duì)象)棋子布局的變化,棋盤對(duì)象接收到了棋子的i變化就要負(fù)責(zé)在屏幕上面顯示出這種變化,同時(shí)利用第三類對(duì)象(規(guī)則系統(tǒng))來(lái)對(duì)棋局進(jìn)行判定。
可以明顯地看出,面向?qū)ο笫且怨δ軄?lái)劃分問(wèn)題,而不是步驟。同樣是繪制棋局,這樣的行為在面向過(guò)程的設(shè)計(jì)中分散在了總多步驟中,很可能出現(xiàn)不同的繪制版本,因?yàn)橥ǔTO(shè)計(jì)人員會(huì)考慮到實(shí)際情況進(jìn)行各種各樣的簡(jiǎn)化。而面向?qū)ο蟮脑O(shè)計(jì)中,繪圖只可能在棋盤對(duì)象中出現(xiàn),從而保證了繪圖的統(tǒng)一。
功能上的統(tǒng)一保證了面向?qū)ο笤O(shè)計(jì)的可擴(kuò)展性。比如我要加入悔棋的功能,如果要改動(dòng)面向過(guò)程的設(shè)計(jì),那么從輸入到判斷到顯示這一連串的步驟都要改動(dòng),甚至步驟之間的循序都要進(jìn)行大規(guī)模調(diào)整。如果是面向?qū)ο蟮脑挘挥酶膭?dòng)棋盤對(duì)象就行了,棋盤系統(tǒng)保存了黑白雙方的棋譜,簡(jiǎn)單回溯就可以了,而顯示和規(guī)則判斷則不用顧及,同時(shí)整個(gè)對(duì)對(duì)象功能的調(diào)用順序都沒(méi)有變化,改動(dòng)只是局部的。
再比如我要把這個(gè)五子棋游戲改為圍棋游戲,如果你是面向過(guò)程設(shè)計(jì),那么五子棋的規(guī)則就分布在了你的程序的每一個(gè)角落,要改動(dòng)還不如重寫。但是如果你當(dāng)初就是面向?qū)ο蟮脑O(shè)計(jì),那么你只用改動(dòng)規(guī)則對(duì)象就可以了,五子棋和圍棋的區(qū)別不就是規(guī)則嗎?(當(dāng)然棋盤大小好像也不一樣,但是你會(huì)覺(jué)得這是一個(gè)難題嗎?直接在棋盤對(duì)象中進(jìn)行一番小改動(dòng)就可以了。)而下棋的大致步驟從面向?qū)ο蟮慕嵌葋?lái)看沒(méi)有任何變化。
當(dāng)然,要達(dá)到改動(dòng)只是局部的需要設(shè)計(jì)的人有足夠的經(jīng)驗(yàn),使用對(duì)象不能保證你的程序就是面向?qū)ο?,初學(xué)者或者很蹩腳的程序員很可能以面向?qū)ο笾摱忻嫦蜻^(guò)程之實(shí),這樣設(shè)計(jì)出來(lái)的所謂面向?qū)ο蟮某绦蚝茈y有良好的可移植性和可擴(kuò)展性。
(這是在百度上找的答案!不是自己寫的,謝謝回答問(wèn)題的大佬?。。。?/p>
1.對(duì)象
科學(xué)的解釋:面向?qū)ο蠓椒ㄖ械膶?duì)象,是系統(tǒng)中用來(lái)描述客觀事實(shí)的一個(gè)實(shí)體,它是用來(lái)構(gòu)成系統(tǒng)的一個(gè)基本單位。對(duì)象由一組屬性和一組行為構(gòu)成。
自我解釋:就比如說(shuō)“人“是一個(gè)非常大的概念,但是具體到你自己本人,你就是那個(gè)對(duì)象,有實(shí)體有具體意義的那個(gè),就是對(duì)象,看完了對(duì)類的表示,希望你們好懂一些,畢竟語(yǔ)文不好。。。
2.類
把眾多的事物歸納,劃分成一些類,分類所依據(jù)的原則是抽象,即忽略事物的非本質(zhì)特性,只注意那些與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特性,從而找出事物的共性,把具有共同性質(zhì)的事物劃分成一類,得出一個(gè)抽象的概念,例如,石頭,樹木,汽車,房屋等。
3.封裝
封裝是面向?qū)ο蠓椒ǖ囊粋€(gè)重要原則,就是把對(duì)象的屬性和服務(wù)結(jié)合成一個(gè)獨(dú)立的系統(tǒng)單位,并盡可能隱藏對(duì)象的內(nèi)部細(xì)節(jié)。
4.繼承
繼承是面向?qū)ο蠹夹g(shù)能夠提高軟件開發(fā)效率的重要原因之一,其定義是:特殊類的對(duì)象擁有其一般類的全部屬性與服務(wù),稱作特殊類對(duì)一般類的繼承。
舉個(gè)例子,我們認(rèn)識(shí)了輪船的特征之后,再考慮客輪時(shí),因?yàn)橹揽洼喴彩禽喆?,于是可以認(rèn)為它具有輪船的一切特征,從而只需把精力集中于客輪獨(dú)有的特征上。
5.多態(tài)性
多態(tài)性是指在一般類中定義的屬性或行為,被特殊類繼承后,可以具有不同的數(shù)據(jù),類型或則表現(xiàn)出不同的行為。(這一點(diǎn)在之后結(jié)合具體的例子講解啦!)
C++中面向?qū)ο笥心男┗靖拍?創(chuàng)新互聯(lián)
本文來(lái)源:http://aaarwkj.com/article30/hsopo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、品牌網(wǎng)站建設(shè)、微信公眾號(hào)、網(wǎng)站維護(hù)、標(biāo)簽優(yōu)化、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容