??????開博了,來一篇償個(gè)鮮,嘿嘿……???
??????從面向過程的編程(C語言)到“真正”面向?qū)ο蟮木幊桃呀?jīng)有半年了,用Java也編了不少代碼,但對面向?qū)ο蟮母拍罾斫膺€不是很深,于是把《Java編程思想》再看一遍,以達(dá)到更深的理解。
??????面向?qū)ο笫前盐覀兇鉀Q的問題抽象成一個(gè)個(gè)對象從而進(jìn)行操作,這里就出現(xiàn)一個(gè)問題,就是怎么抽象?從最簡單的思考出發(fā),那就是將具體的東西和行動抽象成對象。比如,具體的桌子、板凳,行為如取款,讀取數(shù)據(jù)等,都可以抽象成一個(gè)類。如果考慮到繼承等高級特性,那么類的設(shè)計(jì)就可能需要重新設(shè)計(jì),但是都離不開“事務(wù)和任務(wù)”這個(gè)本質(zhì)。面向過程的編程是以“解決問題”為出發(fā)點(diǎn),如一個(gè)單位最低層的員工,做的就是具體的事務(wù),打掃清潔的就是琢磨怎么從一樓掃到十樓,怎么樣從東掃到西,考慮的是“過程”,而領(lǐng)導(dǎo)就不同了,領(lǐng)導(dǎo)是面向?qū)ο蟮模缽埲谴驋咝l(wèi)生的,李四是文秘的,王二是跑業(yè)務(wù)的,在他眼里,這些人就是一個(gè)個(gè)類,他們有那些特性,能干什么?當(dāng)需要打掃衛(wèi)生的時(shí)候,他想到了張三(就好像面向?qū)ο缶幊滔氲侥硞€(gè)類一樣),把張三叫過來,說你去把我的辦公室打掃一下(相當(dāng)于類的發(fā)送消息,即引用),對領(lǐng)導(dǎo)而言,張三怎么打掃的,用什么工具等他不知道,但是他完成了任務(wù)了。這里唯一不同的是張三是唯一的,而不是生成的,其實(shí)這個(gè)好理解,如果這個(gè)單位有好幾個(gè)這樣的工作人員,那么領(lǐng)導(dǎo)想到那個(gè)人員也就相當(dāng)于new一個(gè)類對象了。當(dāng)然對于張三來說,那些清潔工具和打掃任務(wù)也可以看成是一個(gè)個(gè)類,如掃帚、拖把和清潔劑等,真是“萬物皆對象”。
??????組合的概念。組合被稱為has-a(擁有關(guān)系),如汽車(Car)擁有引擎(Engine),那么在Car類里面使用Engine對象(即Car的成員對象,成員對象就是說這個(gè)對象是另外一個(gè)類的成員,還有成員特性、成員函數(shù)),通常都將Engine的對象設(shè)為private,使得新類的客戶端程序員不能訪問它。如下:

????????????????Class Car{
???????????????????????……??????
???????????????????????priavte Engine engine;??????//這個(gè)對象是Car類所需的,但是使用Car的類不需要的
????????????????????????????????????????????????????????????????所以將其設(shè)為private
????????????????????????……
??????????????????}