【賽迪網(wǎng)技術(shù)社區(qū)整理】什么是面向?qū)ο蟮脑O(shè)計(jì)思想?也許有不少初學(xué)者對(duì)這個(gè)概念還有許多不明白的地方,特別是這個(gè)處于新舊思想交替的時(shí)代,許多人剛剛學(xué)完現(xiàn)在看來(lái)是快要淘汰的只是面向過(guò)程的語(yǔ)言。他們的腦子還沒(méi)有脫離面向過(guò)程思想的束縛,抬頭卻發(fā)現(xiàn),“面向?qū)ο?rdquo;早已經(jīng)流行開(kāi)來(lái),這個(gè)陌生的詞漫天飛舞。隨便拿起一本流行計(jì)算機(jī)技術(shù)書籍,那里會(huì)沒(méi)有“面向?qū)ο?rdquo;的字眼!于是心中便惶惑了:什么叫“面向?qū)ο?rdquo;?不感興趣者,一帶而過(guò);有志于在這方面發(fā)展的,匆忙找到一本有關(guān)書籍來(lái)啃究竟什么是“面向?qū)ο?rdquo;。然而,要突破思想的束縛,說(shuō)難也不難,說(shuō)到要深刻認(rèn)識(shí)卻也不容易。筆者在做了一些輕量級(jí)的工作后,頗以為有點(diǎn)心得,不怕貽笑大方,寫出已供廣大同行批評(píng)指正。
“對(duì)象(Object)”一詞,早在十九世紀(jì)就有現(xiàn)象學(xué)大師胡塞爾提出并定義。對(duì)象是世界中的物體在人腦中的映象,是人的意識(shí)之所以為意識(shí)的反映,是做為一種概念而存在的先念的東西,它還包括了人的意愿。舉例說(shuō)明吧。當(dāng)我們認(rèn)識(shí)到一種新的物體,它叫樹(shù),于是在我們的意識(shí)當(dāng)中就形成了樹(shù)的概念。這個(gè)概念會(huì)一直存在于我們的思維當(dāng)中,并不會(huì)因?yàn)檫@棵樹(shù)被砍掉而消失。這個(gè)概念就是現(xiàn)實(shí)世界當(dāng)中的物體在我們意識(shí)當(dāng)中的映象。我們對(duì)它還可以有我們自己的意愿,雖然我們并不需要付諸實(shí)現(xiàn)——只要在你的腦中想著把這棵樹(shù)砍掉做成桌子、凳子等——我們就把它叫做意向。于是,對(duì)象就是客觀世界中物體在人腦中的映象及人的意向。只要這個(gè)對(duì)象存在我們的思維意識(shí)當(dāng)中,我們就可以籍此判斷同類的東西。譬如,當(dāng)我們看到另外一棵樹(shù)是,并不會(huì)因?yàn)樗?jiàn)的棵樹(shù)不在了失去了供參照的模板而不認(rèn)識(shí)這棵樹(shù)了。當(dāng)我們接觸某些新事物時(shí),我們的意識(shí)就會(huì)為這些事物確立一個(gè)對(duì)象。當(dāng)然這個(gè)過(guò)程是怎么形成的,那就不是我們所能討論的問(wèn)題了。上面所說(shuō)的對(duì)象研究的是一般意義上的問(wèn)題,因而它可以外推到一切事物。我們經(jīng)常所說(shuō)的“對(duì)象”,一班指的是解決信息領(lǐng)域內(nèi)所遇到問(wèn)題的方法。特別是應(yīng)用軟件技術(shù)來(lái)決問(wèn)題的方法。如我們經(jīng)常碰到的面向?qū)ο蟮木幊?Object-Oriented Programming)、面向?qū)ο蟮姆治?Object-Oriented Analysis)、面向?qū)ο蟮脑O(shè)計(jì)(Object-Oriented Design)等。應(yīng)用前面所介紹的關(guān)于對(duì)象的概念,可以對(duì)這些問(wèn)題做進(jìn)一步的分析。在面對(duì)較復(fù)雜的系統(tǒng),我們可以將它作為一個(gè)對(duì)象來(lái)進(jìn)行分析。一個(gè)系統(tǒng)(解決某個(gè)問(wèn)題的全套解決方案)作為一個(gè)對(duì)象,可以由多個(gè)部分組成。同樣,這個(gè)對(duì)象也可以由多個(gè)對(duì)象組成。對(duì)于同類的事物,可以由一個(gè)對(duì)象來(lái)表示。這樣做的益處是顯而易見(jiàn)的,它靈活而高效,可以大大減輕設(shè)計(jì)人員的工作量,簡(jiǎn)化實(shí)際的模型。舉一個(gè)例子。在關(guān)系型數(shù)據(jù)庫(kù)的設(shè)計(jì)當(dāng)中,我們可以把一個(gè)元組當(dāng)作對(duì)象,給它定義一組操作方法。這些方法將適用于所有元組,從而我們不必在更大的范圍內(nèi)去細(xì)致的考慮不同的元組(如判斷一個(gè)元素是否合法):因?yàn)樗鼈冇幸唤M公共的面向本身的方法,它們“自己”可以“解決”自己的問(wèn)題。更上一層的對(duì)象可以是一個(gè)表、視圖等。表對(duì)象在元組對(duì)象的基礎(chǔ)上又有它們自己的方法,如增加、刪除等。從這個(gè)層面上講,它也只需要做“自己”的事情,因?yàn)橛性M對(duì)象的支持,它無(wú)須去考慮像元素是否合法這類的事情。甚至,有時(shí)為了滿足我們還可以將元素或表群當(dāng)作時(shí)對(duì)象并定義它們自己的方法。這樣,更能顯示面向?qū)ο蟮膬?yōu)勢(shì)。
上面所討論的可以說(shuō)是面向?qū)ο蟮姆治龇椒?。在具體的設(shè)計(jì)過(guò)程當(dāng)中,還應(yīng)該采用適當(dāng)?shù)姆绞健R驗(yàn)槊嫦驅(qū)ο蟮乃枷牍倘缓芟冗M(jìn),如果做得不好的話,同樣不能達(dá)到預(yù)期的效果。這主要表現(xiàn)在處理對(duì)象與對(duì)象的關(guān)系上沒(méi)有做好,對(duì)象與對(duì)象的層次不分明。如上面所舉得關(guān)系型數(shù)據(jù)庫(kù)得例子,如果在元組層面上得對(duì)象過(guò)多得考慮一個(gè)表對(duì)象得因素,或一個(gè)表層面上對(duì)象過(guò)多地考慮一個(gè)元組對(duì)象的因素,甚至去考慮元素層面上的因素,這些都不是好的面向?qū)ο蟮脑O(shè)計(jì)方法。這一點(diǎn),在語(yǔ)言實(shí)現(xiàn)方面,Java比C++更有優(yōu)勢(shì),因?yàn)樗辉试S多重繼承,從而使對(duì)象之間的關(guān)系更明確。誰(shuí)也不會(huì)否認(rèn)C++的功能更強(qiáng)大,但是它也要由次付出巨大代價(jià)——當(dāng)現(xiàn)在代碼庫(kù)發(fā)展到一定程度、一定規(guī)模時(shí),個(gè)對(duì)象之間的層次關(guān)系將變得異常復(fù)雜,給后繼使用者得學(xué)習(xí)、理解帶來(lái)很大的困難,應(yīng)用上很難把握.另外,雖然C++具備面向?qū)ο蟮奶幚砟芰?,但它還是保留了很多面向過(guò)程的東西。用C++完全可以不用面向?qū)ο蟮乃枷雭?lái)進(jìn)行程序設(shè)計(jì),當(dāng)然人們不會(huì)這樣去做——除了那些只是把C++看成是C擴(kuò)充的初學(xué)者,這就為以后的發(fā)展埋下了隱患。在者一方面,Java的限制更多一點(diǎn)。就者一點(diǎn)還遠(yuǎn)遠(yuǎn)不夠。搞開(kāi)發(fā)的是人,開(kāi)發(fā)方法是由人決定的。要應(yīng)用面向?qū)ο蟮姆椒ㄩ_(kāi)發(fā)出的軟件,必須要求開(kāi)發(fā)人員具有良好的面向?qū)ο蟮乃枷?。好的工程師可以利用適當(dāng)?shù)墓ぞ唛_(kāi)發(fā)出的軟件——而不在乎他所使用的語(yǔ)言工具——Java、C++、Object Pascal、Ada等。
雜談:Java編程思想面向?qū)ο筮壿嬎季S方法
更新時(shí)間: 2008-05-20 14:40:07來(lái)源: 粵嵌教育瀏覽量:2600
粵嵌動(dòng)態(tài)
推薦閱讀
- ·北京朝歌數(shù)碼科技股份有限公司專場(chǎng)招聘
- ·深圳研賽自動(dòng)化設(shè)備公司專場(chǎng)招聘(長(zhǎng)沙校區(qū))
- ·深圳市興禾自動(dòng)化股份有限公司專場(chǎng)招聘(長(zhǎng)沙校區(qū))
- ·中山市弘億實(shí)業(yè)有限公司專場(chǎng)招聘會(huì)
- ·東莞市德聲實(shí)業(yè)有限公司專場(chǎng)招聘
- ·深圳華創(chuàng)智聯(lián)電子有限公司專場(chǎng)招聘
- ·廣州2512全網(wǎng)運(yùn)營(yíng)就業(yè)班
- ·廣州2511嵌入式開(kāi)發(fā)就業(yè)班
- ·深圳市領(lǐng)世達(dá)科技有限公司專場(chǎng)招聘
- ·廣州2510嵌入式開(kāi)發(fā)就業(yè)班