1.2.4 OOP的優(yōu)點
OOP具有許多優(yōu)點,無論是對于程序設(shè)計者或者用戶來說都是如此。面向?qū)ο鬄檐浖a(chǎn)品擴展和質(zhì)量保證中的許多問題提供了解決辦法。這項技術(shù)能夠大大提高程序員的生產(chǎn)力,并可提高軟件的質(zhì)量以及降低其維護費用。其主要的優(yōu)點陳列于下:
1、 通過繼承,我們可以大幅減少多余的代碼,并擴展現(xiàn)有代碼的用途; 2、 我們可以在標準的模塊上(這里所謂的“標準”指程序員之間彼此達成的協(xié)議)構(gòu)建 我們的程序,而不必一切從頭開始。這可以減少軟件開發(fā)時間并提高生產(chǎn)效率;
3、 數(shù)據(jù)隱藏的概念幫助程序員們保護程序免受外部代碼的侵襲;
4、 允許一個對象的多個實例同時存在,而且彼此之間不會相互干擾; 5、 允許將問題空間中的對象直接映射到程序中;
6、 基于對象的工程可以很容易的分割為獨立的部分;
7、 以數(shù)據(jù)為中心的設(shè)計方法允許我們抓住可實現(xiàn)模型的更多細節(jié);
8、 面向?qū)ο蟮南到y(tǒng)很容易從小到大逐步升級;
9、 對象間通訊所使用的消息傳遞技術(shù)與外部系統(tǒng)接口部分的描述更簡單;
10、 更便于控制軟件復(fù)雜度。
當需要將以上所說的所有特性有機的結(jié)合于一個面向?qū)ο笙到y(tǒng)中,它們之間的相對重要性就取決于工程的類型和程序員的喜好。為了獲得上述的某些優(yōu)勢,必須考慮很多事情。例如,對象庫必須可以被重用。技術(shù)還在不停的發(fā)展,現(xiàn)有的產(chǎn)品也會很快的更新?lián)Q代。如果重用沒有能夠?qū)崿F(xiàn),那么就需要進行嚴格的控制和管理。 易于使用的開發(fā)軟件往往難以編寫。面向?qū)ο蟪绦蛟O(shè)計工具有望解決這個問題。
1.3 組件式GIS(ComGIS)
1.3.1 組件技術(shù)
組件技術(shù)的興起
目前,在軟件開發(fā)領(lǐng)域,一場新的革命正在悄悄興起,這是由日趨成熟的組件技術(shù)引發(fā)的。幾年以前,當微軟公司首先使用OLE的時候,其初衷是為了增強軟件的互操作性。然而在使用過程中,人們逐漸認識到這一技術(shù)背后的實質(zhì)性內(nèi)容和它在軟件開發(fā)中所扮演的重要角色。組件技術(shù)以前所未有的方式提高了軟件產(chǎn)業(yè)的生產(chǎn)效率,這一點已逐步成為軟件開發(fā)人員的共識。傳統(tǒng)的C/S結(jié)構(gòu)、群件、中間件等大型軟件系統(tǒng)的構(gòu)成形式,都將在組件的基礎(chǔ)上重新構(gòu)造。 組件技術(shù)使近二十年來興起的面向?qū)ο蠹夹g(shù)進入到成熟的實用化階段。在組件技術(shù)的概念模式下,軟件系統(tǒng)可以被視為相互協(xié)同工作的對象集合,其中每個對象都會提供特定的服務(wù),發(fā)出特定的消息,并且以標準形式公布出來,以便其他對象了解和調(diào)用。組件間的接口通過一種與平臺無關(guān)的語言IDL(InterfaceDefineLanguage)來定義,而且是二進制兼容的,使用者可以直接調(diào)用執(zhí)行模塊來獲得對象提供的服務(wù)。早期的類庫,提供的是原代碼級的重用,只適用于比較小規(guī)模的開發(fā)形式;而組件則封裝得更加徹底,更易于使用,并且不限于C++之類的語言,可以在各種開發(fā)語言和開發(fā)環(huán)境中使用。 由于組件技術(shù)的出現(xiàn),軟件產(chǎn)業(yè)的形式也隨之發(fā)生了很大的變化。大量組件生產(chǎn)商涌現(xiàn)出來,并推出各具特色的組件產(chǎn)品;軟件集成商則利用適當?shù)慕M件快速生產(chǎn)出用戶需要的某些應(yīng)用系統(tǒng);大而全的通用產(chǎn)品逐步減少;很多相對較為專業(yè),但用途廣泛的軟件,如GIS、語音識別系統(tǒng)等,都以組件的形式組裝和擴散到一般的軟件產(chǎn)品中。
0.1.1.1 COM與DCOM
?
COM是組件式對象模型(Component Object Model)的英文縮寫,是組件之間相互接口的規(guī)范,是OLE(Object Linking & Embedding)和ActiveX共同的基礎(chǔ),其作用是使各種軟件構(gòu)件和應(yīng)用軟件能夠用一種統(tǒng)一的標準方式進行交互。COM不是一種面向?qū)ο蟮恼Z言,而是一種與源代碼無關(guān)的二進制標準。COM所建立的是一個軟件模塊與另一個軟件模塊之間的鏈接,當這種鏈接建立之后,模塊之間就可以通過稱之為“接口”的機制來進行通信。COM標準增加了保障系統(tǒng)和組件完整的安全機制,并擴展到分布式環(huán)境。它定義了軟件組件的接口
COM本質(zhì)上仍然是客戶/服務(wù)器模式??蛻簦ㄍǔJ菓?yīng)用程序)請求創(chuàng)建COM對象并通過COM對象的接口操縱COM對象。服務(wù)器根據(jù)客戶的請求創(chuàng)建并管理COM對象??蛻艉头?wù)器這兩種角色并不是絕對的。
基于分布式環(huán)境下的COM被稱作DCOM(Distribute COM,分布式構(gòu)件對象模型)。 DCOM是ActiveX的基礎(chǔ),它實現(xiàn)了COM對象與遠程計算機上的另一個對象之間直接進行交互。DCOM規(guī)范定義了分散對象創(chuàng)建和對象間通信的機制,規(guī)范本身并不依賴于任何特定的編程語言和操作系統(tǒng),但目前該標準只在Microsoft Windows平臺實現(xiàn),這就意味著其它的操作系統(tǒng)平臺(如UNIX)目前還不支持ActiveX。 DCOM的實現(xiàn)采用了DCOM庫的形式,當DCOM客戶對象需要DCOM服務(wù)器對象的服務(wù)時,DCOM庫負責生成DCOM服務(wù)器對象并在客戶對象和服務(wù)器對象之間建立初始連接,一旦返回服務(wù)器對象指針,DCOM庫就不再參與客戶對象與服務(wù)器對象之間的工作,兩個對象之間可以自由地進行通信。
DCOM接口實際上時邏輯上和語義上相關(guān)聯(lián)的函數(shù)集。服務(wù)器對象通過DCOM接口為客戶對象提供服務(wù),客戶對象不需了解服務(wù)器對象的內(nèi)部數(shù)據(jù)表示。接口可以看成兩個軟件構(gòu)件之間的一種協(xié)議,協(xié)議表明服務(wù)器對象為客戶對象提供一種且僅此一種服務(wù)。接口采用全局唯一標識符(GUID)來保證服務(wù)的唯一性。通常的DCOM構(gòu)件提供多種服務(wù),那么服務(wù)器對象為每一種服務(wù)實現(xiàn)一個接口。當客戶對象指針指向相應(yīng)的服務(wù)器對象時,它就激活服務(wù)器對象接口的相應(yīng)函數(shù)。具體過程是:客戶對象通過DCOM對象必須支持的IunKnown接口獲得其它接口的指針??蛻魧ο笠苍S并不知道服務(wù)器對象的每個接口,但這并不妨礙客戶對象對服務(wù)器對象的使用,它只
用它知道的接口。當客戶對象用完服務(wù)器對象的服務(wù)時,它會通知服務(wù)器對象,服務(wù)器對象就釋放它所占有的內(nèi)存。
DCOM的好處是顯而易見的。由于接口的定義和功能保持不變,DCOM構(gòu)件開發(fā)者可以改變接口功能、為對象增加新功能、用更好的對象來代替原有對象,而建立在構(gòu)件基礎(chǔ)上的應(yīng)用程序幾乎不用修改,大大提高了代碼的重用性
評論
查看更多