周瑤
【摘要】面向?qū)ο蠓椒ㄒ焉钊氲接?jì)算機(jī)軟件領(lǐng)域的幾乎所有分支。它不僅是一些具體的軟件開(kāi)發(fā)技術(shù)與策略,而且是一整套關(guān)于如何看待軟件系統(tǒng)與現(xiàn)實(shí)世界的關(guān)系,用什么觀點(diǎn)來(lái)研究問(wèn)題并進(jìn)行問(wèn)題求解,以及如何進(jìn)行軟件系統(tǒng)構(gòu)造的軟件方法學(xué)。本文就面向?qū)ο蠓椒óa(chǎn)生的背景以及發(fā)展現(xiàn)狀進(jìn)行了簡(jiǎn)要敘述。
【關(guān)鍵詞】面向?qū)ο?程序設(shè)計(jì) 發(fā)展史 UML
1 面向?qū)ο筇卣鞲攀?/p>
面向?qū)ο笤O(shè)計(jì)是一種把面向?qū)ο蟮乃枷霊?yīng)用于軟件開(kāi)發(fā)過(guò)程中,指導(dǎo)開(kāi)發(fā)活動(dòng)的系統(tǒng)方法,是建立在“對(duì)象”概念基礎(chǔ)上的方法學(xué)。對(duì)象是由數(shù)據(jù)和操作組成的封裝體,與客觀實(shí)體有直接對(duì)應(yīng)關(guān)系,一個(gè)對(duì)象類(lèi)定義了具有相似性質(zhì)的一組對(duì)象。面向?qū)ο蟪绦蛟O(shè)計(jì)具有抽象性、封裝性、繼承性和多態(tài)性等特征。
抽象:指從事物中舍棄個(gè)別的、非本質(zhì)的特征,而抽取共同的、本質(zhì)特征的思維方式。
封裝:將數(shù)據(jù)和代碼捆綁到一起,避免了外界的干擾和不確定性。對(duì)象的某些數(shù)據(jù)和代碼可以是私有的,不能被外界訪問(wèn),以此實(shí)現(xiàn)對(duì)數(shù)據(jù)和代碼不同級(jí)別的訪問(wèn)權(quán)限。
繼承:讓某個(gè)類(lèi)型的對(duì)象獲得另一個(gè)類(lèi)型的對(duì)象的特征。通過(guò)繼承可以實(shí)現(xiàn)代碼的重用:從已存在的類(lèi)派生出的一個(gè)新類(lèi)將自動(dòng)具有原來(lái)那個(gè)類(lèi)的特性,同時(shí),它還可以擁有自己的新特性。
多態(tài):指一般類(lèi)和特殊類(lèi)可以有相同格式的屬性或操作,但這些屬性或操作具有不同的含義,即具有不同的數(shù)據(jù)類(lèi)型或表現(xiàn)出不同的行為。
2 面向?qū)ο笤O(shè)計(jì)方法發(fā)展歷史
在這里把面向?qū)ο蠓椒ǖ陌l(fā)展分為三個(gè)階段:雛形階段、完善階段和繁榮階段。
(一)雛形階段
1967年挪威計(jì)算中心的Kisten Nygaard和Ole Johan Dahl開(kāi)發(fā)了Simula67語(yǔ)言,首先引入了類(lèi)的概念和繼承機(jī)制,它是面向?qū)ο蟮南闰?qū)。1972年P(guān)alo Alno研究中心(PARC)發(fā)布了Smalltalk-72,其中正式使用了“面向?qū)ο蟆边@個(gè)術(shù)語(yǔ)。Smalltakl的問(wèn)世標(biāo)志著面向?qū)ο蟪绦蛟O(shè)計(jì)方法的正式形成。
可以說(shuō)出現(xiàn)了面向?qū)ο笳Z(yǔ)言之后,面向?qū)ο笏枷氩诺玫搅搜杆俚陌l(fā)展。過(guò)去的幾十年中,程序設(shè)計(jì)語(yǔ)言對(duì)抽象機(jī)制的支持程度不斷提高:從機(jī)器語(yǔ)言到匯編語(yǔ)言,到高級(jí)語(yǔ)言,直到面向?qū)ο笳Z(yǔ)言。匯編語(yǔ)言出現(xiàn)后,程序員就避免了直接使用0-1,而是利用符號(hào)來(lái)表示機(jī)器指令,從而更方便地編寫(xiě)程序;當(dāng)程序規(guī)模繼續(xù)增長(zhǎng)的時(shí)候,出現(xiàn)了Fortran、C、Pascal等高級(jí)語(yǔ)言,這些高級(jí)語(yǔ)言使得編寫(xiě)復(fù)雜的程序變得容易,程序員們可以更好地對(duì)付日益增加的復(fù)雜性。
(二)完善階段
PARC先后發(fā)布了Smalltalk-72、76和78等版本,直至1981年推出該語(yǔ)言完善的版本Smalltalk-80。Smalltalk-80的問(wèn)世被認(rèn)為是面向?qū)ο笳Z(yǔ)言發(fā)展史上最重要的里程碑。迄今絕大部分面向?qū)ο蟮幕靖拍罴捌渲С謾C(jī)制在Smalltalk-80中都已具備。它是第一個(gè)完善的、能夠?qū)嶋H應(yīng)用的面向?qū)ο笳Z(yǔ)言。但是隨后的Smalltalk-80的應(yīng)用尚不夠廣泛,其原因是:
追求純OO的宗旨使得許多軟件開(kāi)發(fā)人員感到不便。
一種新的軟件開(kāi)發(fā)方法被廣泛地接受需要一定的時(shí)間。
針對(duì)該語(yǔ)言的商品化軟件開(kāi)發(fā)工作到1987年才開(kāi)始進(jìn)行。
(三)繁榮階段
從20世紀(jì)80年代中期到90年代,是面向?qū)ο笳Z(yǔ)言走向繁榮的階段。其主要表現(xiàn)是大批比較實(shí)用的面向?qū)ο缶幊陶Z(yǔ)言的涌現(xiàn),例如C++、Objective-C、Object Pascal、CLOS、Eiffel和Actor等。這些面向?qū)ο蟮木幊陶Z(yǔ)言分為純OO型語(yǔ)言和混合型OO語(yǔ)言?;旌闲驼Z(yǔ)言是在傳統(tǒng)的過(guò)程式語(yǔ)言基礎(chǔ)上增加了OO語(yǔ)言成分形成的,在實(shí)用性方面具有更大的優(yōu)勢(shì)。此時(shí)的純OO型語(yǔ)言也比較重視實(shí)用性。現(xiàn)在,在面向?qū)ο缶幊谭矫妫毡椴捎谜Z(yǔ)言、類(lèi)庫(kù)和可視化編程環(huán)境相結(jié)合的方式,如Visual C++、JBuilder和Delphi等。面向?qū)ο蠓椒ㄒ矎木幊贪l(fā)展到設(shè)計(jì)、分析,進(jìn)而發(fā)展到整個(gè)軟件生命周期。
到20世紀(jì)90年代,面向?qū)ο蟮姆治雠c設(shè)計(jì)方法已多達(dá)數(shù)十種,這些方法都各有所長(zhǎng)。目前,統(tǒng)一建模語(yǔ)言已經(jīng)成為世界性的建模語(yǔ)言,適用于多種開(kāi)發(fā)方法。把UML作為面向?qū)ο蟮慕UZ(yǔ)言,不但在軟件產(chǎn)業(yè)界獲得了普遍支持,在學(xué)術(shù)界影響也很大。在面向?qū)ο蟮倪^(guò)程指導(dǎo)方面,目前還沒(méi)有國(guó)際規(guī)范發(fā)布。當(dāng)前較為流行的用于面向?qū)ο筌浖_(kāi)發(fā)的過(guò)程指導(dǎo)有“統(tǒng)一軟件開(kāi)發(fā)過(guò)程”(RUP)和國(guó)內(nèi)的青鳥(niǎo)面向?qū)ο筌浖_(kāi)發(fā)過(guò)程指導(dǎo)等。
3 面向?qū)ο笤O(shè)計(jì)方法應(yīng)用現(xiàn)狀
當(dāng)前,面向?qū)ο蠓椒◣缀醺采w了計(jì)算機(jī)軟件領(lǐng)域的所有分支。例如,已經(jīng)出現(xiàn)了面向?qū)ο蟮木幊陶Z(yǔ)言、面向?qū)ο蟮姆治?、面向?qū)ο蟮脑O(shè)計(jì)、面向?qū)ο蟮臏y(cè)試、面向?qū)ο蟮木S護(hù)、面向?qū)ο蟮膱D形用戶界面、面向?qū)ο蟮臄?shù)據(jù)庫(kù)、面向?qū)ο蟮臄?shù)據(jù)結(jié)構(gòu)、面向?qū)ο蟮闹悄艹绦蛟O(shè)計(jì)、面向?qū)ο蟮能浖_(kāi)發(fā)環(huán)境和面向?qū)ο蟮捏w系結(jié)構(gòu)等。此外,許多新領(lǐng)域都以面向?qū)ο罄碚摓榛A(chǔ)或作為 主要技術(shù),如面向?qū)ο蟮能浖w系結(jié)構(gòu)、領(lǐng)域工程、智能代理、基于構(gòu)件的軟件工程和面向服務(wù)的軟件開(kāi)發(fā)等。
4 結(jié)語(yǔ)
計(jì)算機(jī)軟件技術(shù)的發(fā)展日新月異,在很短的時(shí)間內(nèi)即涌現(xiàn)出了大量的軟件開(kāi)發(fā)工具并迅速地更新?lián)Q代,給編程人員進(jìn)行程序設(shè)計(jì)帶來(lái)了極大的方便。在不久的將來(lái)相信面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)必將應(yīng)用到更多的程序中。
【參考文獻(xiàn)】
[1] 麻志毅,著.面向?qū)ο蠓治雠c設(shè)計(jì).機(jī)械工業(yè)出版社,2013,2.
[2] 格雷厄姆(Ian Graham,I.)著,袁兆山,譯. 面向?qū)ο蠓椒ǎ涸砼c實(shí)踐.機(jī)械工業(yè)出版社,2003,3.