第二部分 面向?qū)ο驩OP(重點(diǎn))基礎(chǔ)

面向過程和面向?qū)ο蟮膮^(qū)別:

經(jīng)常聽到有人說,計(jì)算機(jī)語言可以歸為面向過程語言和面向?qū)ο笳Z言秧秉,那么到底什么是面向?qū)ο笪坭耄裁词敲嫦蜻^程呢?

答:面向過程就是分析出解決問題所需要的步驟书幕,然后用函數(shù)把這些步驟一步一步實(shí)現(xiàn)新荤,使用的時(shí)候一個(gè)一個(gè)依次調(diào)用就可以了;面向?qū)ο笫前褬?gòu)成問題事務(wù)分解成各個(gè)對(duì)象台汇,建立對(duì)象的目的不是為了完成一個(gè)步驟苛骨,而是為了描敘某個(gè)事物在整個(gè)解決問題的步驟中的行為。

可以拿生活中的實(shí)例來理解面向過程與面向?qū)ο蠊赌牛缥遄悠逖髦ィ嫦蜻^程的設(shè)計(jì)思路就是首先分析問題的步驟:1、開始游戲牵素,2严衬、黑子先走,3两波、繪制畫面瞳步,4闷哆、判斷輸贏,5单起、輪到白子抱怔,6、繪制畫面嘀倒,7屈留、判斷輸贏,8测蘑、返回步驟2灌危,9、輸出最后結(jié)果碳胳。把上面每個(gè)步驟用不同的方法來實(shí)現(xiàn)勇蝙。

如果是面向?qū)ο蟮脑O(shè)計(jì)思想來解決問題。面向?qū)ο蟮脑O(shè)計(jì)則是從另外的思路來解決問題挨约。整個(gè)五子棋可以分為1味混、黑白雙方,這兩方的行為是一模一樣的诫惭,2翁锡、棋盤系統(tǒng),負(fù)責(zé)繪制畫面夕土,3馆衔、規(guī)則系統(tǒng),負(fù)責(zé)判定諸如犯規(guī)怨绣、輸贏等角溃。第一類對(duì)象(玩家對(duì)象)負(fù)責(zé)接受用戶輸入,并告知第二類對(duì)象(棋盤對(duì)象)棋子布局的變化梨熙,棋盤對(duì)象接收到了棋子的變化就要負(fù)責(zé)在屏幕上面顯示出這種變化开镣,同時(shí)利用第三類對(duì)象(規(guī)則系統(tǒng))來對(duì)棋局進(jìn)行判定刀诬。

可以明顯地看出咽扇,面向?qū)ο笫且?b>功能來劃分問題,而不是步驟陕壹。同樣是繪制棋局质欲,這樣的行為在面向過程的設(shè)計(jì)中分散在了多個(gè)步驟中,很可能出現(xiàn)不同的繪制版本糠馆,因?yàn)橥ǔTO(shè)計(jì)人員會(huì)考慮到實(shí)際情況進(jìn)行各種各樣的簡化嘶伟。而面向?qū)ο蟮脑O(shè)計(jì)中,繪圖只可能在棋盤對(duì)象中出現(xiàn)又碌,從而保證了繪圖的統(tǒng)一九昧。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ——摘自《C#編程詞典》

車開動(dòng)去新疆绊袋,車開動(dòng)的這個(gè)方法應(yīng)該寫在車?yán)镞€是司機(jī)里呢?應(yīng)該寫在車?yán)镏ィ驗(yàn)閷?duì)于車開動(dòng)這個(gè)過程癌别,車本身比司機(jī)更加了解其中的過程,因此方法應(yīng)該寫在最直接擁有的類中

????????對(duì)象的作用域? 可以存活在{}之外蹋笼,但是引用它的變量只能存活在{}之內(nèi)展姐,不被引用的對(duì)象,java的垃圾回收(GC)起會(huì)判斷其實(shí)無用的剖毯,然后釋放這些對(duì)象的內(nèi)存空間圾笨,可以理解為如果引用死了,對(duì)象就要跟著殉情...但是你根本確定不了什么時(shí)候回收沒有引用的對(duì)象

面向?qū)ο髢?yōu)勢:加功能不用更改以前程序逊谋、動(dòng)態(tài)分配內(nèi)存

把類之間的調(diào)用想象成類之間的交談


面向?qū)ο笳Z言的五個(gè)基本特性:

(1)萬物皆對(duì)象:將對(duì)象視為奇特的變量擂达,它可以存儲(chǔ)數(shù)據(jù)。也可對(duì)自身進(jìn)行操作胶滋,理論上可以抽取任何物體將其表示為程序中的對(duì)象谍婉,其實(shí)可以把基本類型也看成是是對(duì)象,只是它們使用了一個(gè)更簡潔的初始化方式镀钓,創(chuàng)建一個(gè)并非是引用的“自動(dòng)”變量穗熬,直接存儲(chǔ)值

(2)程序是對(duì)象的集合,它們通過發(fā)送消息告知彼此要做的丁溅,要想請(qǐng)求一個(gè)對(duì)象唤蔗,就必須對(duì)該對(duì)象發(fā)送一條消息,也就是對(duì)某個(gè)特定對(duì)象的調(diào)用請(qǐng)求(對(duì)象先創(chuàng)建后使用)

(3)每個(gè)對(duì)象都有自己的由其他對(duì)象所構(gòu)成的存儲(chǔ):可以將一個(gè)對(duì)象放到另一個(gè)對(duì)象之中窟赏,構(gòu)成復(fù)雜模型

(4)每個(gè)對(duì)象都擁有其類型:每個(gè)對(duì)象都是一個(gè)類的實(shí)例

(5)某一特定對(duì)象的所有對(duì)象都可以接收同樣信息:比如圓形類型的對(duì)象同時(shí)是幾何類型的對(duì)象妓柜,所以一個(gè)圓形對(duì)象必然能接受到發(fā)送給幾何形對(duì)象的消息,也就是擁有其屬性和方法涯穷。

(6)面向?qū)ο蟮哪繕?biāo)就是去創(chuàng)建能夠提供理想的服務(wù)來解決問題的一系列對(duì)象棍掐。

思維方式:將問題從表象中抽取出來,思考什么樣的對(duì)象可以馬上解決問題


類與對(duì)象的關(guān)系

類是構(gòu)造對(duì)象的模板或藍(lán)圖拷况,類是一個(gè)抽象的作煌,實(shí)例化成具體東西后變成對(duì)象。類指的是一類東西赚瘦,而對(duì)象指的是具體東西粟誓,比如狗是一個(gè)類,而具體的一條狗就是一個(gè)對(duì)象起意。

類描述了具有相同特性(數(shù)據(jù)類型)和行為(功能)的集合鹰服,由此可以把它看做是一個(gè)數(shù)據(jù)類型

類的創(chuàng)建(類對(duì)應(yīng)名詞,名詞里的狀態(tài)名詞表示屬性,方法對(duì)應(yīng)動(dòng)詞悲酷,比如狗是個(gè)名詞表示一個(gè)類套菜,狗的狀態(tài)比如狗的名字,狗的年齡表示屬性设易,狗會(huì)跑就是一個(gè)動(dòng)作表示方法)

<修飾符>class<類名>{

<屬性(狀態(tài))>

<構(gòu)造方法>

<普通方法>

}


構(gòu)造器(構(gòu)造方法)

對(duì)類進(jìn)行初始化? ? 語法:修飾符? 類名(參數(shù)){? }? 讓對(duì)象在創(chuàng)建的時(shí)候有初始值

(1)與類名相同笼踩,不可寫返回值,在new時(shí)被調(diào)用亡嫌。

(2)每個(gè)類自帶一個(gè)無參構(gòu)造器嚎于,賦默認(rèn)值,引用類型為null挟冠,若寫了一個(gè)構(gòu)造器于购,無參構(gòu)造器會(huì)變成不合法,若想使用無參構(gòu)造器需要手動(dòng)寫一個(gè)(每個(gè)類最好有一個(gè)無參構(gòu)造器)知染。

(3)構(gòu)造函數(shù)參數(shù)是什么類型肋僧,對(duì)象傳參時(shí)就是什么類型,若想傳入Animals型控淡,則構(gòu)造函數(shù)參數(shù)為Animals型? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

(4)構(gòu)造代碼塊{? }是給對(duì)象用的(成員方法嫌吠,成員函數(shù)),在執(zhí)行父類構(gòu)造方法后執(zhí)行子類構(gòu)造代碼塊掺炭,不管執(zhí)行哪個(gè)構(gòu)造函數(shù)辫诅,都會(huì)先執(zhí)行構(gòu)造代碼塊,構(gòu)造代碼塊在構(gòu)造函數(shù)執(zhí)行前執(zhí)行涧狮。父構(gòu)造代碼塊炕矮,父構(gòu)造函數(shù),子構(gòu)造代碼塊者冤,子構(gòu)造函數(shù)


對(duì)象創(chuàng)建

Animal xb=new Animals()肤视;(創(chuàng)建對(duì)象new+構(gòu)造方法(構(gòu)造器)調(diào)用類的構(gòu)造器)

xb是引用對(duì)象的一個(gè)變量相當(dāng)于遙控器,而對(duì)象相當(dāng)于電視機(jī)涉枫,只要能握住這個(gè)遙控器邢滑,就能保持與電視機(jī)的相連。? new可以表示給我一個(gè)新對(duì)象愿汰,而Animals表示的是這個(gè)引用可以引用什么對(duì)象困后。

狀態(tài)(實(shí)例變量):內(nèi)部數(shù)據(jù),描述對(duì)象的特征的信息

行為:方法

標(biāo)識(shí):每個(gè)對(duì)象都有唯一的標(biāo)識(shí)和其它對(duì)象區(qū)分開尼桶,就是每個(gè)對(duì)象在內(nèi)存中都有唯一的地址

訪問對(duì)象成員:xb.color 屬性? xb.run()方法


對(duì)象創(chuàng)建步驟

1.將Animals.class加載進(jìn)內(nèi)存

2.棧內(nèi)存分配一個(gè)xb變量的空間?

3堆內(nèi)存分配空間操灿,創(chuàng)建對(duì)象,提供對(duì)象地址(對(duì)象存在堆內(nèi)泵督,更具對(duì)象大小分配空間,虛擬機(jī)覺察對(duì)象不用時(shí)自動(dòng)回收 )

4.對(duì)對(duì)象屬性進(jìn)行初始化

5.調(diào)用構(gòu)造方法對(duì)對(duì)象初始化? 對(duì)象被使用前取得對(duì)象遙控器庶喜,對(duì)對(duì)象進(jìn)行改變

6.將對(duì)象內(nèi)存地址賦給給xb指向?qū)ο笮±埃椒▽?duì)象的多次使用救鲤。.(堆上的對(duì)象不被引用會(huì)變成無用)


如果要處理聯(lián)系人的數(shù)據(jù)更新

? ? ? ? 應(yīng)該創(chuàng)建數(shù)組將每一個(gè)聯(lián)系人的對(duì)象放進(jìn)去,雖然這樣占的內(nèi)容比較多秩冈,但是這樣可以隨時(shí)獲取每一個(gè)人聯(lián)系人本缠,如果直接建立多個(gè)聯(lián)系人對(duì)象,雖然省內(nèi)存入问,但是只有一個(gè)數(shù)據(jù)引用丹锹,引用的總是最后一個(gè)創(chuàng)建的對(duì)象,不能獲取以前的聯(lián)系人


例:創(chuàng)建5個(gè)Person對(duì)象芬失,保存到數(shù)組里楣黍,想要實(shí)現(xiàn)根據(jù)id查找到Person的信息,這時(shí)因?yàn)橐?b>對(duì)Person對(duì)象進(jìn)行操縱棱烂,所以必須創(chuàng)建另一個(gè)類租漂,人員管理類。

對(duì)一個(gè)類進(jìn)行操縱是在另一個(gè)類中進(jìn)行的這也就是以后所說的has-a關(guān)系颊糜。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末哩治,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子衬鱼,更是在濱河造成了極大的恐慌业筏,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸟赫,死亡現(xiàn)場離奇詭異驾孔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)惯疙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門翠勉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人霉颠,你說我怎么就攤上這事对碌。” “怎么了蒿偎?”我有些...
    開封第一講書人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵朽们,是天一觀的道長。 經(jīng)常有香客問我诉位,道長骑脱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任苍糠,我火速辦了婚禮叁丧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己拥娄,他們只是感情好蚊锹,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著稚瘾,像睡著了一般牡昆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上摊欠,一...
    開封第一講書人閱讀 52,549評(píng)論 1 312
  • 那天丢烘,我揣著相機(jī)與錄音,去河邊找鬼些椒。 笑死播瞳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的摊沉。 我是一名探鬼主播狐史,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼说墨!你這毒婦竟也來了骏全?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤尼斧,失蹤者是張志新(化名)和其女友劉穎姜贡,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棺棵,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡楼咳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了烛恤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片母怜。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖缚柏,靈堂內(nèi)的尸體忽然破棺而出苹熏,到底是詐尸還是另有隱情,我是刑警寧澤币喧,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布轨域,位于F島的核電站,受9級(jí)特大地震影響杀餐,放射性物質(zhì)發(fā)生泄漏干发。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一史翘、第九天 我趴在偏房一處隱蔽的房頂上張望枉长。 院中可真熱鬧冀续,春花似錦、人聲如沸搀暑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽自点。三九已至,卻和暖如春脉让,著一層夾襖步出監(jiān)牢的瞬間桂敛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來泰國打工溅潜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留术唬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓滚澜,卻偏偏與公主長得像粗仓,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子设捐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容