国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

什么是面向?qū)ο蟮脑O(shè)計(jì)思想?

2019-11-18 12:10:44
字體:
供稿:網(wǎng)友

  什么是面向?qū)ο蟮脑O(shè)計(jì)思想?也許有不少初學(xué)者對這個(gè)概念還有許多不明白的地方,
  非凡是這個(gè)處于新舊思想交替的時(shí)代,許多人剛剛學(xué)完現(xiàn)在看來是快要淘汰的只是面向過程的
  
  語言。他們的腦子還沒有脫離面向過程思想的束縛,抬頭卻發(fā)現(xiàn),“面向?qū)ο蟆痹缫呀?jīng)流行
  
  開來,這個(gè)生疏的詞漫天飛舞。隨便拿起一本流行計(jì)算機(jī)技術(shù)書籍,那里會(huì)沒有“面向?qū)ο蟆?br />  
  的字眼!于是心中便惶惑了:什么叫“面向?qū)ο蟆保坎桓袗酆谜撸粠Ф^;有志于在這方
  
  面發(fā)展的,匆忙找到一本有關(guān)書籍來啃究竟什么是“面向?qū)ο蟆薄H欢黄扑枷氲氖`,
  
  說難也不難,說到要深刻熟悉卻也不輕易。筆者在做了一些輕量級(jí)的工作后,頗以為有點(diǎn)心
  
  得,不怕貽笑大方,寫出已供廣大同行批評(píng)指正。
  
   “對象(Object)”一詞,早在十九世紀(jì)就有現(xiàn)象學(xué)大師胡塞爾提出并定義。對象是世
  
  界中的物體在人腦中的映象,是人的意識(shí)之所以為意識(shí)的反映,是做為一種概念而存在的
  
  先念的東西,它還包括了人的意愿。舉例說明吧。當(dāng)我們熟悉到一種新的物體,它叫樹,于
  
  是在我們的意識(shí)當(dāng)中就形成了樹的概念。這個(gè)概念會(huì)一直存在于我們的思維當(dāng)中,并不會(huì)因
  
  為這棵樹被砍掉而消失。這個(gè)概念就是現(xiàn)實(shí)世界當(dāng)中的物體在我們意識(shí)當(dāng)中的映象。我們對
  
  它還可以有我們自己的意愿,雖然我們并不需要付諸實(shí)現(xiàn)——只要在你的腦中想著把這棵樹
  
  砍掉做成桌子、凳子等——我們就把它叫做意向。于是,對象就是客觀世界中物體在人腦中
  
  的映象及人的意向。只要這個(gè)對象存在我們的思維意識(shí)當(dāng)中,我們就可以籍此判定同類的東
  
  西。譬如,當(dāng)我們看到另外一棵樹是,并不會(huì)因?yàn)樗姷牡谝豢脴洳辉诹耸チ斯﹨⒄盏哪?br />  
  板而不熟悉這棵樹了。當(dāng)我們接觸某些新事物時(shí),我們的意識(shí)就會(huì)為這些事物確立一個(gè)對象
  
  。當(dāng)然這個(gè)過程是怎么形成的,那就不是我們所能討論的問題了。
  
   上面所說的對象研究的是一般意義上的問題,因而它可以外推到一切事物。我們經(jīng)常
  
  所說的“對象”,一班指的是解決信息領(lǐng)域內(nèi)所碰到問題的方法。非凡是應(yīng)用軟件技術(shù)來解
  
  決問題的方法。如我們經(jīng)常碰到的面向?qū)ο蟮木幊蹋∣bject-Oriented PRogramming)、面向?qū)?br />  
  象的分析(Object-Oriented Analysis)、面向?qū)ο蟮脑O(shè)計(jì)(Object-Oriented Design)等。應(yīng)用
  
  前面所介紹的關(guān)于對象的概念,可以對這些問題做進(jìn)一步的分析。在面對較復(fù)雜的系統(tǒng),我
  
  們可以將它作為一個(gè)對象來進(jìn)行分析。一個(gè)系統(tǒng)(解決某個(gè)問題的全套解決方案)作為一個(gè)
  
  對象,可以由多個(gè)部分組成。同樣,這個(gè)對象也可以由多個(gè)對象組成。對于同類的事物,可
  
  以由一個(gè)對象來表示。這樣做的益處是顯而易見的,它靈活而高效,可以大大減輕設(shè)計(jì)人員
  
  的工作量,簡化實(shí)際的模型。舉一個(gè)例子。在關(guān)系型數(shù)據(jù)庫的設(shè)計(jì)當(dāng)中,我們可以把一個(gè)元
  
  組當(dāng)作對象,給它定義一組操作方法。這些方法將適用于所有元組,從而我們不必在更大的
  
  范圍內(nèi)去細(xì)致的考慮不同的元組(如判定一個(gè)元素是否合法):因?yàn)樗鼈冇幸唤M公共的面向
  
  本身的方法,它們“自己”可以“解決”自己的問題。更上一層的對象可以是一個(gè)表、視圖
  
  等。表對象在元組對象的基礎(chǔ)上又有它們自己的方法,如增加、刪除等。從這個(gè)層面上講,
  
  它也只需要做“自己”的事情,因?yàn)橛性M對象的支持,它無須去考慮像元素是否合法這類
  
  的事情。甚至,有時(shí)為了滿足我們還可以將元素或表群當(dāng)作時(shí)對象并定義它們自己的方法。
  
  這樣,更能顯示面向?qū)ο蟮膬?yōu)勢。
  
   上面所討論的可以說是面向?qū)ο蟮姆治龇椒āT诰唧w的設(shè)計(jì)過程當(dāng)中,還應(yīng)該采用適當(dāng)
  
  的方式。因?yàn)槊嫦驅(qū)ο蟮乃枷牍倘缓芟冗M(jìn),假如做得不好的話,同樣不能達(dá)到預(yù)期的效果。
  
  這主要表現(xiàn)在處理對象與對象的關(guān)系上沒有做好,對象與對象的層次不分明。如上面所舉得
  
  關(guān)系型數(shù)據(jù)庫得例子,假如在元組層面上得對象過多得考慮一個(gè)表對象得因素,或一個(gè)表層
  
  面上對象過多地考慮一個(gè)元組對象的因素,甚至去考慮元素層面上的因素,這些都不是好的
  
  面向?qū)ο蟮脑O(shè)計(jì)方法。這一點(diǎn),在語言實(shí)現(xiàn)方面,java比C++更有優(yōu)勢,因?yàn)樗淮饝?yīng)多
  
  重繼續(xù),從而使對象之間的關(guān)系更明確。誰也不會(huì)否認(rèn)C++的功能更強(qiáng)大,但是它也要由次
  
  付出巨大代價(jià)——當(dāng)現(xiàn)在代碼庫發(fā)展到一定程度、一定規(guī)模時(shí),個(gè)對象之間的層次關(guān)系將
  
  變得異常復(fù)雜,給后繼使用者得學(xué)習(xí)、理解帶來很大的困難,應(yīng)用上很難把握。另外,雖然
  
  C++具備面向?qū)ο蟮奶幚砟芰Γ€是保留了很多面向過程的東西。用C++完全可以不用
  
  面向?qū)ο蟮乃枷雭磉M(jìn)行程序設(shè)計(jì),當(dāng)然人們不會(huì)這樣去做——除了那些只是把C++看成是C
  
  擴(kuò)充的初學(xué)者,這就為以后的發(fā)展埋下了隱患。在者一方面,Java的限制更多一點(diǎn)。就者一
  
  點(diǎn)還遠(yuǎn)遠(yuǎn)不夠。搞開發(fā)的是人,開發(fā)方法是由人決定的。要應(yīng)用面向?qū)ο蟮姆椒ㄩ_發(fā)出優(yōu)秀
  
  的軟件,必須要求開發(fā)人員具有良好的面向?qū)ο蟮乃枷搿:玫墓こ處熆梢岳眠m當(dāng)?shù)墓ぞ唛_
  
  發(fā)出優(yōu)秀的軟件——而不在乎他所使用的語言工具——Java、C++、Object Pascal、Ada等。
  
   要能應(yīng)用面向?qū)ο蟮乃枷胧炀毜米龊孟到y(tǒng)分析、設(shè)計(jì)、實(shí)現(xiàn)(編程),首先要求開發(fā)人
  
  員知道什么是對象,什么是面向?qū)ο蟮酶拍睿駝t是談不上應(yīng)用面向?qū)ο蟮盟枷敫丬浖_發(fā)
  
  了。希望讀者能在看到我在前面的不太嚴(yán)密、具體的論述之后可以對“對象”這個(gè)概念由一
  
  個(gè)初步的了解,同時(shí)也希望有不同看法的同行提出批評(píng)。其次,還要求開發(fā)人員有比較豐富的開
  
  發(fā)經(jīng)驗(yàn)。否則,光談理論,那是不能真正體會(huì)“面向?qū)ο蟆钡暮x的。盡管如此,我們還是
  
  可以定出一般的規(guī)則的。拋開生命周期的其它階段,對一個(gè)確立的系統(tǒng)一般可以進(jìn)行以下幾
  
  個(gè)過程:
  
   一、首先應(yīng)用面向?qū)ο蟮乃枷脒M(jìn)行系統(tǒng)分析。仔細(xì)的劃分系統(tǒng)的各個(gè)部分,明確它
  
  們之間的層次關(guān)系,然后將各個(gè)部分作為一個(gè)對象進(jìn)行功能上的分析。例如,要設(shè)計(jì)一個(gè)用
  
  戶界面,它可能由幾個(gè)主要的窗體組成:主窗體MainFrame、功能性子窗體FunctionFrame
  
  以及對話對話框Dialog。其中,MainFrame中可能還包括菜單、工具條、文本框、狀態(tài)條等
  
  Windows組件。對于要完成一些重要功能的組件,我們可以單獨(dú)將它作為一個(gè)對象看待,在
  
  具體的實(shí)現(xiàn)中,用單獨(dú)一個(gè)類來表示。而一些并不是很重要的、只是在過程中需要用到的組
  
  件,就可以將它們集成到其他對象中去。要明確每個(gè)對象自己的任務(wù)——不要讓它有缺陷,
  
  也不能越殂代庖。各個(gè)對象之間的關(guān)系通過過程、內(nèi)容、功能等耦合來實(shí)現(xiàn)。
  
   實(shí)際上,假如你是用Java進(jìn)行開發(fā),你會(huì)發(fā)現(xiàn)swing組件本身就非常好用,因?yàn)樗鼈?br />  
  之間的關(guān)系是很分明的——你無須去理解分清象C++中的組件那樣復(fù)雜的關(guān)系。在開發(fā)你自
  
  己的組件時(shí),也需要力求達(dá)到這樣的效果。
  
   二、其次時(shí)應(yīng)用面向?qū)ο蟮乃枷脒M(jìn)行系統(tǒng)設(shè)計(jì)。其實(shí)在真正做好了系統(tǒng)分析的工作之后,
  
  進(jìn)行設(shè)計(jì)就比較輕松了。這段時(shí)間只要進(jìn)一步確定各個(gè)對象的功能以及各個(gè)對象之間的關(guān)系
  
  。為了能夠更好地幫助實(shí)現(xiàn)人員明白各個(gè)對象之間的關(guān)系,可以利用一些工具將這些組件的
  
  關(guān)系表示出來,統(tǒng)一建模語言(Uniformed Module Language,UML)就是這樣的一種好東
  
  西。它不僅可以現(xiàn)在幫助開發(fā)人員了解整個(gè)系統(tǒng),也為以后的維護(hù)工作提供一個(gè)檔案文件,
  
  給以后的工作提供巨大的方便。
  
  
  
   三、實(shí)現(xiàn)(編碼)。這一點(diǎn)就不用多說了。在我的下一篇文章中,將會(huì)給出一個(gè)比較簡
  
  單的實(shí)例,希望會(huì)給讀者一個(gè)啟發(fā)。
  
  
   在搞軟件開發(fā)時(shí),編碼不是最重要的。分析、設(shè)計(jì)才是最重要的。也許當(dāng)我們接受了一
  
  些更先進(jìn)的思想之后,會(huì)更加理解這一點(diǎn)了。希望我們中國的軟件開發(fā)人員能應(yīng)用面向?qū)ο?br />  
  的思想開發(fā)出具有國際競爭力的優(yōu)秀軟件。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 沂南县| 洪泽县| 峨山| 辛集市| 昌邑市| 开封县| 高邮市| 雅安市| 华坪县| 苏州市| 灵璧县| 无为县| 大宁县| 沈阳市| 林州市| 沛县| 乐至县| 晋州市| 蒲城县| 扶沟县| 芮城县| 钦州市| 阿荣旗| 遂溪县| 罗城| 佛坪县| 隆子县| 顺义区| 柘荣县| 远安县| 灌云县| 漳浦县| 淳安县| 遵义县| 始兴县| 廊坊市| 明光市| 孟州市| 仁寿县| 彭水| 加查县|