軟件設(shè)計師面向?qū)ο笾R點:面向?qū)ο蠓椒ê喗?/h1>

字號:

面向?qū)ο蠓椒?Object-Oriented Method)是一種把面向?qū)ο蟮乃枷霊?yīng)用于軟件開發(fā)過程中,指導(dǎo)開發(fā)活動的系統(tǒng)方法,簡稱OO (Object-Oriented)方法,是建立在“對象”概念基礎(chǔ)上的方法學(xué)。對象是由數(shù)據(jù)和容許的操作組成的封裝體,與客觀實體有直接對應(yīng)關(guān)系,一個對象類定義了具有相似性質(zhì)的一組對象。而每繼承性是對具有層次關(guān)系的類的屬性和操作進(jìn)行共享的一種方式。所謂面向?qū)ο缶褪腔趯ο蟾拍?,以對象為中心,以類和繼承為構(gòu)造機(jī)制,來認(rèn)識、理解、刻畫客觀世界和設(shè)計、構(gòu)建相應(yīng)的軟件系統(tǒng)。
     面向?qū)ο蠓椒ㄗ鳛橐环N新型的獨(dú)具優(yōu)越性的新方法正引起全世界越來越廣泛的關(guān)注和高度的重視,它被譽(yù)為"研究高技術(shù)的好方法",更是當(dāng)前計算機(jī)界關(guān)心的重點。十多年來,在對OO方法如火如荼的研究熱潮中,許多專家和學(xué)者預(yù)言:正象70年代結(jié)構(gòu)化方法對計算機(jī)技術(shù)應(yīng)用所產(chǎn)生的巨大影響和促進(jìn)那樣,90年代OO方法會強(qiáng)烈地影響、推動和促進(jìn)一系列高技術(shù)的發(fā)展和多學(xué)科的綜合。
    一、面向?qū)ο蠓椒ǖ挠蓙砼c發(fā)展
    回顧歷史可激勵現(xiàn)在,以規(guī)劃將來。
    OO方法起源于面向?qū)ο蟮木幊陶Z言(簡稱為OOPL)。50年代后期,在用FORTRAN語言編寫大型程序時,常出現(xiàn)變量名在程序不同部分發(fā)生沖突的問題。鑒于此,ALGOL語言的設(shè)計者在ALGOL60中采用了以"Begin……End"為標(biāo)識的程序塊,使塊內(nèi)變量名是局部的,以避免它們與程序中塊外的同名變量相沖突。這是編程語言中首次提供封裝(保護(hù))的嘗試。此后程序塊結(jié)構(gòu)廣泛用于高級語言如Pascal 、Ada、C之中。
    60年代中后期,Simula語言在ALGOL基礎(chǔ)上研制開發(fā),它將ALGOL的塊結(jié)構(gòu)概念向前發(fā)展一步,提出了對象的概念,并使用了類,也支持類繼承。70年代,Smalltalk語言誕生,它取Simula的類為核心概念,它的很多內(nèi)容借鑒于Lisp語言。由Xerox公司經(jīng)過對Smautalk72、76持續(xù)不斷的研究和改進(jìn)之后,于1980年推出商品化的,它在系統(tǒng)設(shè)計中強(qiáng)調(diào)對象概念的統(tǒng)一,引入對象、對象類、方法、實例等概念和術(shù)語,采用動態(tài)聯(lián)編和單繼承機(jī)制。
    從80年代起,人們基于以往巳提出的有關(guān)信息隱蔽和抽象數(shù)據(jù)類型等概念,以及由Modula2、Ada和Smalltalk和等語言所奠定的基礎(chǔ),再加上客觀需求的推動,進(jìn)行了大量的理論研究和實踐探索,不同類型的面向?qū)ο笳Z言(如:Object-c、Eiffel、c++、Java、Object-Pascal等)逐步地發(fā)展和建立起較完整的和雨后春筍般研制開發(fā)出來,OO方法的概念理論體系和實用的軟件系統(tǒng)。
    面向?qū)ο笤闯鲇赟imula,真正的OOP由Smalltalk奠基。Smalltalk現(xiàn)在被認(rèn)為是最純的OOPL。
     正是通過Smalltalk80的研制與推廣應(yīng)用,使人們注意到OO方法所具有的模塊化、信息封裝與隱蔽、抽象性、繼承性、多樣性等獨(dú)特之處,這些優(yōu)異特性為研制大型軟件、提高軟件可靠性、可重用性、可擴(kuò)充性和可維護(hù)性提供了有效的手段和途徑。
    80年代以來,人們將面向?qū)ο蟮幕靖拍詈瓦\(yùn)行機(jī)制運(yùn)用到其它領(lǐng)域,獲得了一系列相應(yīng)領(lǐng)域的面向?qū)ο蟮募夹g(shù)。面向?qū)ο蠓椒ㄒ驯粡V泛應(yīng)用于程序設(shè)計語言、形式定義、設(shè)計方法學(xué)、操作系統(tǒng)、分布式系統(tǒng)、人工智能、實時系統(tǒng)、數(shù)據(jù)庫、人機(jī)接口、計算機(jī)體系結(jié)構(gòu)以及并發(fā)工程、綜合集成工程等,在許多領(lǐng)域的應(yīng)用都得到了很大的發(fā)展。1986年在美國舉行了首屆"面向?qū)ο缶幊?、系統(tǒng)、語言和應(yīng)用(OOPSLA’86)"國際會議,使面向?qū)ο笫艿绞廊瞬毮?,其后每年都舉行一次,這進(jìn)一步標(biāo)志OO方法的研究已普及到全世界。
    二、面向?qū)ο蟮幕靖拍钆c特征
    用計算機(jī)解決問題需要用程序設(shè)計語言對問題求解加以描述(即編程),實質(zhì)上,軟件是問題求解的一種表述形式。顯然,假如軟件能直接表現(xiàn)人求解問題的思維路徑(即求解問題的方法),那么軟件不僅容易被人理解,而且易于維護(hù)和修改,從而會保證軟件的可靠性和可維護(hù)性,并能提高公共問題域中的軟件模塊和模塊重用的可靠性。面向?qū)ο蟮臋C(jī)能念和機(jī)制恰好可以使得按照人們通常的思維方式來建立問題域的模型,設(shè)計出盡可能自然地表現(xiàn)求解方法的軟件。
    面向?qū)ο蟮幕靖拍?BR>    對象:對象是要研究的任何事物。從一本書到一家圖書館,單的整數(shù)到整數(shù)列龐大的數(shù)據(jù)庫、極其復(fù)雜的自動化工廠、航天飛機(jī)都可看作對象,它不僅能表示有形的實體,也能表示無形的(抽象的)規(guī)則、計劃或事件。對象由數(shù)據(jù)(描述事物的屬性)和作用于數(shù)據(jù)的操作(體現(xiàn)事物的行為)構(gòu)成一獨(dú)立整體。從程序設(shè)計者來看,對象是一個程序模塊,從用戶來看,對象為他們提供所希望的行為。在對內(nèi)的操作通常稱為方法。
    類:類是對象的模板。即類是對一組有相同數(shù)據(jù)和相同操作的對象的定義,一個類所包含的方法和數(shù)據(jù)描述一組對象的共同屬性和行為。類是在對象之上的抽象,對象則是類的具體化,是類的實例。類可有其子類,也可有其它類,形成類層次結(jié)構(gòu)。
    消息:消息是對象之間進(jìn)行通信的一種規(guī)格說明。一般它由三部分組成:接收消息的對象、消息名及實際變元。
     面向?qū)ο笾饕卣鳎?BR>    封裝性:封裝是一種信息隱蔽技術(shù),它體現(xiàn)于類的說明,是對象的重要特性。封裝使數(shù)據(jù)和加工該數(shù)據(jù)的方法(函數(shù))封裝為一個整體,以實現(xiàn)獨(dú)立性很強(qiáng)的模塊,使得用戶只能見到對象的外特性(對象能接受哪些消息,具有那些處理能力),而對象的內(nèi)特性(保存內(nèi)部狀態(tài)的私有數(shù)據(jù)和實現(xiàn)加工能力的算法)對用戶是隱蔽的。封裝的目的在于把對象的設(shè)計者和對象者的使用分開,使用者不必知曉行為實現(xiàn)的細(xì)節(jié),只須用設(shè)計者提供的消息來訪問該對象。