亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        抽象技術(shù)與面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)

        2009-09-06 06:26:48
        計(jì)算機(jī)教育 2009年22期
        關(guān)鍵詞:抽象

        陳 倩

        摘要:抽象技術(shù)是人類理解和解決復(fù)雜問題最重要的工具之一,更是面向?qū)ο蟪绦蛟O(shè)計(jì)中應(yīng)用最廣泛的原則之一。本文介紹了抽象的概念、抽象層次的劃分以及兩種典型的抽象方法,并從抽象這個(gè)較高層次來理解面向?qū)ο蠹夹g(shù)的主要思想:類、對(duì)象、封裝、繼承和多態(tài),等等。

        關(guān)鍵詞:抽象;抽象層次;面向?qū)ο蠹夹g(shù)

        中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B

        面向?qū)ο蠹夹g(shù)是當(dāng)今最流行的軟件系統(tǒng)設(shè)計(jì)和開發(fā)技術(shù),從80年代產(chǎn)生到現(xiàn)在短短30年間,面向?qū)ο蠹夹g(shù)已經(jīng)在計(jì)算機(jī)的方方面面得到了成功的應(yīng)用并吸引了越來越多的人在軟件設(shè)計(jì)和開發(fā)中學(xué)習(xí)和使用這種技術(shù)。學(xué)生在學(xué)習(xí)面向?qū)ο蠹夹g(shù)時(shí)往往從面向?qū)ο蟪绦蛟O(shè)計(jì)語言出發(fā)(比如C++,JAVA等)入手,在程序語言語法學(xué)習(xí)中理解面向?qū)ο蟾拍?導(dǎo)致在學(xué)習(xí)過程中,學(xué)生往往過多地糾纏于程序設(shè)計(jì)語言的語法規(guī)則等細(xì)節(jié)方面,而省略了對(duì)面向?qū)ο蠹夹g(shù)本質(zhì)思想的領(lǐng)會(huì)。抽象技術(shù)是人類在實(shí)際生活中理解和解決復(fù)雜問題最重要的技術(shù)之一,抽象思維更是一個(gè)程序員必不可少的素質(zhì)。面向?qū)ο蠹夹g(shù)正是利用抽象技術(shù),通過抽象層次分類方法達(dá)到自上而下地對(duì)復(fù)雜問題進(jìn)行逐步求精和模塊化,把問題分解為人們可以理解和分析的不同規(guī)模。所以,從抽象的角度(本文從抽象的概念、抽象的層次和抽象的方法三個(gè)方面)來介紹和分析面向?qū)ο蠹夹g(shù)的主要思想,能夠幫助面向?qū)ο蠹夹g(shù)學(xué)習(xí)者從一個(gè)比較高的層次來理解面向?qū)ο蟮闹饕枷?從而避免被編程語言的語法細(xì)節(jié)所牽絆,真正掌握這種技術(shù)的精髓所在。

        1抽象的概念

        抽象是指對(duì)于一個(gè)事物或過程的某些細(xì)節(jié)有目的的隱藏,通過省略某些信息來把事物的主要結(jié)構(gòu)表達(dá)得更加清楚。舉個(gè)例子來說,當(dāng)你打開一本世界地圖冊(cè),首先你會(huì)看到一張世界地圖,這張世界地圖描述了一些簡(jiǎn)單的地理區(qū)域(比如7大洲,4大洋),以及一些主要山脈、河流、國(guó)家和首都城市。在這張地圖上,通過省略詳細(xì)的地理信息(比如某個(gè)村莊的地理位置)而讓人們可以了解整個(gè)世界的主要區(qū)域分布;接著當(dāng)你打開一張更小區(qū)域的地圖時(shí)(比如一個(gè)國(guó)家),你就能到更多的地理細(xì)節(jié),包括這個(gè)國(guó)家的許多大中型城市,主要的道路,山脈、湖泊等等,但是卻只能看到本區(qū)域的信息,而不能看到別的區(qū)域信息了;以此類推,當(dāng)你打開更小區(qū)域的地圖時(shí),得到的細(xì)節(jié)信息就更多,也更加詳細(xì),但是信息的范圍卻越來越小。通過這個(gè)例子,我們可以看到,在實(shí)際生活中我們總是不知不覺地運(yùn)用了抽象思維來看問題和解決問題,每張地圖都是人們對(duì)某一個(gè)地理范圍的一種抽象,而且抽象是分級(jí)別的,在每一個(gè)級(jí)別水平上都會(huì)包括某些特定的信息,而省略某些其他的信息,使得我們?cè)谶@個(gè)抽象級(jí)別上理解和解決某些問題變的非常容易。人類吸收和處理信息的能力是有限的,抽象技術(shù)通過省略一些細(xì)節(jié)信息來縮減信息量以達(dá)到人類處理問題的水平。

        在程序設(shè)計(jì)技術(shù)中,也需要把復(fù)雜的現(xiàn)實(shí)問題抽象成能夠處理的形式,在面向?qū)ο蠹夹g(shù)中,有另外一個(gè)術(shù)語來描述抽象這種有意識(shí)隱藏細(xì)節(jié)的行為:信息隱藏(或者叫封裝)。所謂信息隱藏就是指在系統(tǒng)設(shè)計(jì)開發(fā)過程中,有目的地省略細(xì)節(jié),而集中精力在實(shí)際問題的幾個(gè)主要特征上。這樣,在整個(gè)系統(tǒng)的設(shè)計(jì)開發(fā)過程中,系統(tǒng)設(shè)計(jì)人員才不會(huì)被大量的細(xì)節(jié)所干擾,從而把精力放在整個(gè)系統(tǒng)的主要框架上。那么什么時(shí)候考慮細(xì)節(jié)問題呢?其實(shí)抽象概念的運(yùn)用是分層次的,越高級(jí)別的抽象往往隱藏的信息越多,抽象層次則越低,描述的細(xì)節(jié)信息越豐富。在實(shí)際的面向?qū)ο蟪绦蛟O(shè)計(jì)和開發(fā)中,程序員非常重要的一項(xiàng)工作就是確定自己在哪個(gè)抽象級(jí)別上工作,這樣,你就非常清楚自己的應(yīng)該做些什么,不應(yīng)該做什么(即省略什么)。在現(xiàn)實(shí)情況中,經(jīng)常出現(xiàn)的錯(cuò)誤卻是程序員總是在最低抽象級(jí)別上反復(fù)思考,關(guān)心各種關(guān)鍵細(xì)節(jié)的實(shí)現(xiàn),而不是努力的思考如何實(shí)現(xiàn)高級(jí)別的抽象,來促使任務(wù)各個(gè)部分盡可能的分離,這才是最重要的。

        2抽象的層次和抽象方法

        前面提到在處理復(fù)雜問題時(shí),需要利用抽象方法,并且劃分抽象層次,才能在正確的抽象級(jí)別上考慮和解決問題。如何對(duì)一個(gè)復(fù)雜事物或過程進(jìn)行抽象以及劃分抽象層次?有兩種抽象方法在面向?qū)ο蟪绦蛟O(shè)計(jì)和開發(fā)中得到了廣泛的應(yīng)用。

        2.1組合抽象方法

        組合抽象方法是人們?cè)诂F(xiàn)實(shí)生活中經(jīng)常用到的一種抽象方法。具體地說,人們?cè)诔橄笠粋€(gè)事物或者過程時(shí),通常會(huì)分析這個(gè)事物或過程是由哪些部分組合而成,然后依次檢查和分析每一個(gè)組成部分來得到對(duì)事物更精細(xì)的理解。這種抽象方法也是通常所說的“分而治之”思想的一種具體體現(xiàn)。舉個(gè)例子來說,如果我們要理解和分析計(jì)算機(jī)是如何進(jìn)行計(jì)算的?組合抽象方法首先分析計(jì)算機(jī)由哪些部分組成:CPU(指令計(jì)算)、內(nèi)存(數(shù)據(jù)存儲(chǔ))、總線(數(shù)據(jù)傳輸)、輸入輸出設(shè)備(數(shù)據(jù)的輸入輸出)。這樣我們就很容易地得到了一個(gè)計(jì)算機(jī)的抽象模型(如圖1所示)。顯然這個(gè)抽象模型并不能代表一臺(tái)真正的計(jì)算機(jī),真正的計(jì)算機(jī)遠(yuǎn)遠(yuǎn)比這個(gè)模型復(fù)雜的多。但是,一般情況下,通過這個(gè)抽象模型我們可以來解釋計(jì)算機(jī)的計(jì)算過程,即:計(jì)算機(jī)通過外部設(shè)備得到輸入數(shù)據(jù),然后存儲(chǔ)到內(nèi)存中,CPU從內(nèi)存中取數(shù)據(jù)和指令進(jìn)行計(jì)算,并把結(jié)果存儲(chǔ)到內(nèi)存,輸出設(shè)備再把結(jié)果從內(nèi)存中讀出并顯示,其中數(shù)據(jù)的傳輸通過總線進(jìn)行。

        如果想進(jìn)一步了解CPU的工作過程呢?在這個(gè)抽象模型層次是沒有辦法做到的,我們需要更加詳細(xì)的抽象模型層次。方法就是對(duì)計(jì)算機(jī)的每個(gè)組成部分同樣用組合抽象方法做更詳細(xì)地分析從而形成抽象的下一個(gè)層次,比如CPU由運(yùn)算器,寄存器和控制器組成,總線由系統(tǒng)總線、數(shù)據(jù)總線和地址總線組成,等等。這樣,對(duì)計(jì)算機(jī)的抽象模型就變得更加詳細(xì),在這個(gè)層次上,人們可以進(jìn)一步解釋CPU的運(yùn)算過程。如果需要,我們還可以一直往下通過組合法劃分更加詳細(xì)的抽象層次,甚至分析到集成電路結(jié)構(gòu),研究分子結(jié)構(gòu)、電子結(jié)構(gòu),等等。當(dāng)然,對(duì)問題的任何解釋和描述我們都要基于某個(gè)正確抽象層次,這樣才能使得人們接受到的信息量比較適合,也比較容易理解(比如想要理解計(jì)算機(jī)的工作原理,我們最好在最高抽象層來解釋,如果放在電子層來解釋,人們是沒有辦法接收和理解的)。

        組合抽象方法在面向?qū)ο蟪绦蛟O(shè)計(jì)中使用起來非常容易和直接,大到一個(gè)系統(tǒng),小到一個(gè)類的設(shè)計(jì),我們通常會(huì)分析這個(gè)系統(tǒng)或類由哪些部分組合而成來建立相應(yīng)的抽象模型,然后遞歸的分析每個(gè)組成部分以達(dá)到逐步求精的目的。使用這種方法能夠很容易實(shí)現(xiàn)系統(tǒng)的封裝性和可擴(kuò)展性。使用組合抽象技術(shù),系統(tǒng)設(shè)計(jì)者很容易將一個(gè)大系統(tǒng)分成幾個(gè)部分,將每個(gè)部分單獨(dú)的分配給不同的小組。每個(gè)部分的設(shè)計(jì)者需要對(duì)本組承擔(dān)的工作對(duì)外進(jìn)行良好的封裝,而對(duì)內(nèi)進(jìn)行非常詳細(xì)的理解和設(shè)計(jì)。在面向?qū)ο笤O(shè)計(jì)中,通常使用“接口”和“實(shí)現(xiàn)”這兩個(gè)術(shù)語來描述這兩種情況,“接口”描述系統(tǒng)被設(shè)計(jì)用來做什么,這是進(jìn)行信息封裝非常重要的一點(diǎn),“實(shí)現(xiàn)”包含具體怎么做。組合抽象技術(shù)也可以很好的實(shí)現(xiàn)系統(tǒng)擴(kuò)展性,當(dāng)程序設(shè)計(jì)者把一個(gè)系統(tǒng)分成各個(gè)部分時(shí),理想情況下可以將各個(gè)部分之間的相互作用減少到最少。這樣,當(dāng)系統(tǒng)的一部分需要修改時(shí),就不會(huì)影響到其他部分運(yùn)行。

        2.2分類層次抽象方法

        分類抽象是另外一種人們應(yīng)用非常廣泛的抽象方法,早在2000多年前,古希臘哲學(xué)家亞里士多德就用分類的方法來對(duì)所有生物進(jìn)行抽象(如圖2所示)。這種方法把生物首先分成動(dòng)物和植物,動(dòng)物又分成脊椎動(dòng)物和無脊椎動(dòng)物,脊椎動(dòng)物又包括了哺乳動(dòng)物,哺乳動(dòng)物又具體包括貓、狗、鯨魚,等等。分類層次抽象不同于組合抽象的重要區(qū)別是:抽象層次越高,事物的特征越普遍,而抽象層次越低,事物的特征越具體;高層次抽象事物的特征和行為,可以直接應(yīng)用到比它低的抽象層次的事物上去。比如,我們知道哺乳動(dòng)物具有毛發(fā),通過胚胎生育,這些特征可以毫無保留的應(yīng)用到比哺乳動(dòng)物更低的分類抽象層次上(比如:貓、狗也具備這些特征)。

        在面向?qū)ο蟪绦蛟O(shè)計(jì)中,分類層次抽象方法有著非常重要的應(yīng)用,面向?qū)ο蟪绦蛟O(shè)計(jì)中的繼承機(jī)制充分利用了分類層次抽象中較低層次的抽象類型自動(dòng)具備了較高層次抽象類型的所有特征而不需要重新定義和說明的這個(gè)最重要的特點(diǎn),使得新的類可以從已有的類繼承而來,從而自動(dòng)具備了已有類的所有特性和行為,很好的解決了軟件設(shè)計(jì)中代碼復(fù)用和概念復(fù)用的問題,極大的提高了軟件開發(fā)的效率。我們來看個(gè)例子:Java的AWT(Abstract Windowing Toolkit)庫設(shè)計(jì)。在這個(gè)庫中,設(shè)計(jì)者就是根據(jù)分類層次抽象方法組織了所有的AWT圖形用戶界面組件類,如圖3:

        從圖3中我們可以看到,層次越高,特征越具有一般性,層次越低,特征越個(gè)別化。層次比較高的類的數(shù)據(jù)和方法可以通過繼承的方式,直接被下層組件類所使用,從而大大簡(jiǎn)化了組件的設(shè)計(jì),提高了效率。比如Component類中的特征和方法:(1)組件的顏色(2)組件的字體(3)組件的大小和位置(4)組件的激活與可見性(5)組件上的光標(biāo)(6)paint方法和repaint方法非常普遍,只要處在Component下面的分類抽象層次中的組件都具備這些特征,它們都可以通過繼承的方法直接把Component類中設(shè)計(jì)的特征和功能變成自己類的一部分。當(dāng)然,具體的組件類除了繼承祖先的特征和方法,還有一些自己特有的東西,比如:TextField組件類除了TextComponet類和Component類中定義

        的特征外,還有自己專有的特征:SetText(),等等,這些特性在別的組件類型就不一定有了。

        3總結(jié)

        抽象技術(shù)通過舍棄個(gè)體事物在細(xì)節(jié)上的差異,抽取其共同特征而得到事物的抽象概念,它是面向?qū)ο蠓椒ㄖ惺褂米顝V泛的原則之一。通過抽象的概念和方法來理解面向?qū)ο蟮闹饕枷肟梢詭椭藗兏玫睦斫饷嫦驅(qū)ο蠹夹g(shù),培養(yǎng)抽象思維,使用面向?qū)ο笤瓌t來進(jìn)行軟件的設(shè)計(jì)和開發(fā)。

        參考文獻(xiàn):

        [1] Timothy A.Budd. 面向?qū)ο缶幊虒?dǎo)論[M]. 黃明軍,李桂杰,譯. 北京:機(jī)械工業(yè)出版社,2003.

        [2] 周之英. 現(xiàn)代軟件工程(第二冊(cè))[M]. 北京:科學(xué)出版社,2003.

        [3] 楊大軍,張鳴. 并發(fā)面向?qū)ο蟪绦蛟O(shè)計(jì)語言研究與發(fā)展[J]. 計(jì)算機(jī)研究與發(fā)展,1998,35(9).

        [4] Timothy C.Lethbridge, Robert Laganiere. 面向?qū)ο筌浖こ蘙M]. 張紅光,溫遇華,譯. 北京:機(jī)械工業(yè)出版社,2003.

        [5] 邵維忠,楊芙清. 面向?qū)ο蟮南到y(tǒng)設(shè)計(jì)[M]. 北京:清華大學(xué)出版社,2003.

        猜你喜歡
        抽象
        引趣教學(xué)在小學(xué)數(shù)學(xué)教學(xué)中的應(yīng)用
        未來英才(2016年18期)2017-01-05 14:00:14
        小學(xué)數(shù)學(xué)概念形成三部曲
        由“抽象”變“具體”
        考試周刊(2016年99期)2016-12-26 11:08:51
        對(duì)數(shù)學(xué)有效教學(xué)的思考
        關(guān)于如何將“抽象”的初中化學(xué)課堂“形象化”的思考
        中小學(xué)數(shù)學(xué)中各類數(shù)的意義
        淺談門格爾與羅雪爾關(guān)于方法論的對(duì)比及啟示
        商(2016年33期)2016-11-24 22:31:55
        淺析吳冠中藝術(shù)作品中藝術(shù)的形式語言
        外國(guó)美術(shù)史上濃重的一筆
        從“抽象”到“寫實(shí)”
        考試周刊(2016年80期)2016-10-24 11:52:17
        人妻少妇精品无码专区| 欧美h久免费女| 岛国av一区二区三区| 视频国产一区二区在线| 亚洲高清国产一区二区| 欧洲熟妇色| 精品国产av最大网站| 亚洲欧美日韩国产综合久| 成人影院免费观看在线播放视频 | 日韩一级精品亚洲一区二区精品| 24小时免费在线观看av| 99热在线观看| 免费a级毛片无码无遮挡| 91福利国产在线观一区二区| 最新国产主播一区二区| 国模91九色精品二三四| 日韩日韩日韩日韩日韩日韩| 国产精品嫩草影院av| 人妻被猛烈进入中文字幕| 亚洲精品无码不卡av| 日韩成人精品日本亚洲| 亚洲国产综合久久精品| 黄片视频大全在线免费播放| 日日拍夜夜嗷嗷叫国产| 妓院一钑片免看黄大片| 成人综合亚洲欧美一区h| 日本高清一区二区在线播放| 久久午夜av一区二区三区| 国产精品无码久久久久成人影院| 国产成人精品日本亚洲18| 中文字幕无线精品亚洲乱码一区 | 亚洲国产成人久久一区| 精品国产午夜久久久久九九| 色婷婷精品大在线视频| 欧美牲交a欧美牲交aⅴ免费下载 | 亚洲综合日韩精品一区二区| 日日碰日日摸日日澡视频播放| 国产青榴视频在线观看| 99这里只有精品| 久久精品这里就是精品| 二区免费在线视频观看|