面向對象方法因業(yè)務需要,“中科永聯(lián)”正式更名為“中程在線”,歡迎大家瀏覽新網站“中程在線信息產業(yè)培訓網” 中科永聯(lián)高級技術培訓中心(www.) 面向對象方法(Object-Oriented Method)是一種把面向對象的思想應用于軟件開發(fā)過程中,指導開發(fā)活動的系統(tǒng)方法,簡稱OO (Object-Oriented)方法,是建立在“對象”概念基礎上的方法學。對象是由數(shù)據和容許的操作組成的封裝體,與客觀實體有直接對應關系,一個對象類定義了具有相似性質的一組對象。而每繼承性是對具有層次關系的類的屬性和操作進行共享的一種方式。所謂面向對象就是基于對象概念,以對象為中心,以類和繼承為構造機制,來認識、理解、刻畫客觀世界和設計、構建相應的軟件系統(tǒng)。 面向對象方法作為一種新型的獨具優(yōu)越性的新方法正引起全世界越來越廣泛的關注和高度的重視,它被譽為"研究高技術的好方法",更是當前計算機界關心的重點。十多年來,在對OO方法如火如荼的研究熱潮中,許多專家和學者預言:正象70年代結構化方法對計算機技術應用所產生的巨大影響和促進那樣,90年代OO方法會強烈地影響、推動和促進一系列高技術的發(fā)展和多學科的綜合。 一、面向對象方法的由來與發(fā)展 回顧歷史可激勵現(xiàn)在,以規(guī)劃將來。 OO方法起源于面向對象的編程語言(簡稱為OOPL)。50年代后期,在用FORTRAN語言編寫大型程序時, 常出現(xiàn)變量名在程序不同部分發(fā)生沖突的問題。鑒于此,ALGOL語言的設計者在ALGOL60中采用了以"Begin……End"為標識的程序塊,使塊內 變量名是局部的,以避免它們與程序中塊外的同名變量相沖突。這是編程語言中首次提供封裝(保護)的嘗試。此后程序塊結構廣泛用于高級語言如Pascal 、Ada、C之中。 60年代中后期,Simula語言在ALGOL基礎上 研制開發(fā),它將ALGOL的塊結構概念向前發(fā)展一步,提出了對象的概念,并使用了類,也支持類繼承。70年代,Smalltalk語言誕生,它取 Simula的類為核心概念,它的很多內容借鑒于Lisp語言。由Xerox公司經過對Smautalk72、76持續(xù)不斷的研究和改進之后,于1980 年推出商品化的,它在系統(tǒng)設計中強調對象概念的統(tǒng)一,引入對象、對象類、方法、實例等概念和術語,采用動態(tài)聯(lián)編和單繼承機制。 從80年代起,人們基于以往巳提出的有關信息隱蔽和抽象數(shù)據類型等概念,以及由Modula2、Ada和Smalltalk和等語言所奠定的基礎,再加上客觀需求的推動,進行了大量的理論研究和實踐探索,不同類型的面向對象語言(如:Object-c、Eiffel、c++、Java、Object-Pascal等)逐步地發(fā)展和建立起較完整的和雨后春筍般研制開發(fā)出來,OO方法的概念理論體系和實用的軟件系統(tǒng)。 面向對象源出于Simula,真正的OOP由Smalltalk奠基。Smalltalk現(xiàn)在被認為是最純的OOPL。 正是通過Smalltalk80的研制與推廣應用,使人們注意到OO方法所具有的模塊化、信息封裝與隱蔽、抽象性、繼承性、多樣性等獨特之處,這些優(yōu)異特性為研制大型軟件、提高軟件可靠性、可重用性、可擴充性和可維護性提供了有效的手段和途徑。 80年代以來,人們將面向對象的基本概念和運行機制運用到其它領域,獲得了一系列相應領域的面向對象的技術。面向對象方法已被廣泛應用于程序設計語言、形式定義、設計方法學、操作系統(tǒng)、分布式系統(tǒng)、人工智能、實時系統(tǒng)、數(shù)據庫、人機接口、計算機體系結構以及并發(fā)工程、綜合集成工程等,在許多領域的應用都得到了很大的發(fā)展。1986年在美國舉行了首屆"面向對象編程、系統(tǒng)、語言和應用(OOPSLA‘86)"國際會議,使面向對象受到世人矚目,其后每年都舉行一次,這進一步標志OO方法的研究已普及到全世界。 二、面向對象的基本概念與特征 用計算機解決問題需要用程序設計語 言對問題求解加以描述(即編程),實質上,軟件是問題求解的一種表述形式。顯然,假如軟件能直接表現(xiàn)人求解問題的思維路徑(即求解問題的方法),那么軟件 不僅容易被人理解,而且易于維護和修改,從而會保證軟件的可靠性和可維護性,并能提高公共問題域中的軟件模塊和模塊重用的可靠性。面向對象的機能念和機制 恰好可以使得按照人們通常的思維方式來建立問題域的模型,設計出盡可能自然地表現(xiàn)求解方法的軟件。 面向對象的基本概念 類:類是對象的模板。即類是對一組有相同數(shù)據和相同操作的對象的定義,一個類所包含的方法和數(shù)據描述一組對象的共同屬性和行為。類是在對象之上的抽象,對象則是類的具體化,是類的實例。類可有其子類,也可有其它類,形成類層次結構。 消息:消息是對象之間進行通信的一種規(guī)格說明。一般它由三部分組成:接收消息的對象、消息名及實際變元。 面向對象主要特征: 繼職具有傳達室遞性。繼職分為單繼承(一個子類只有一父類)和多重繼承(一個類有多個父類)。類的對象是各自封閉的,如果沒繼承性機制,則類對象中數(shù)據、方法就會出現(xiàn)大量重復。繼承不僅支持系統(tǒng)的可重用性,而且還促進系統(tǒng)的可擴充性。 多態(tài)性:對象根據所接收的消息而做出動作。同一消息為 不同的對象接受時可產生完全不同的行動,這種現(xiàn)象稱為多態(tài)性。利用多態(tài)性用戶可發(fā)送一個通用的信息,而將所有的實現(xiàn)細節(jié)都留給接受消息的對象自行決定,如 是,同一消息即可調用不同的方法。例如:Print消息被發(fā)送給一圖或表時調用的打印方法與將同樣的Print消息發(fā)送給一正文文件而 調用的打印方法會完全不同。多態(tài)性的實現(xiàn)受到繼承性的支持,利用類繼承的層次關系,把具有通用功能的協(xié)議存放在類層次中盡可能高的地方,而將實現(xiàn)這一功能 的不同方法置于較低層次,這樣,在這些低層次上生成的對象就能給通用消息以不同的響應。在OOPL中可通過在派生類中重定義基類函數(shù)(定義為重載函數(shù)或虛 函數(shù))來實現(xiàn)多態(tài)性。 綜上可知,在OO方法中,對象和傳遞消息分別表現(xiàn)事物及事物間相互聯(lián)系的概念。類和繼承是是適應人們一般思維方式的描述范式。方法是允許作用于該類對象上的各種操作。這種對象、類、消息和方法的程序設計范式的基本點在于對象的封裝性和類的繼承性。通過封裝能將對象的定義和對象的實現(xiàn)分開,通過繼承能體現(xiàn)類與類之間的關系,以及由此帶來的動態(tài)聯(lián)編和實體的多態(tài)性,從而構成了面向對象的基本特征。 三、面向對象的新方法論、新范型、新技術 OO方法的作用和意義決不只局限于編程技術,它是一種新的程序設計范型--面向對象程序設計范型;是信息系統(tǒng)開發(fā)的新方法論--面向對象方法學;是正在興起的新技術--面向對象技術。 面向對象程序設計范型:程序設計范型(以下簡稱程設范型)具體指的是程序設計的體裁,正如文學上有小說、詩歌、散文等體裁,程序設計體裁是用程序設計語言表達各種概念和各種結構的一套設施。 目前,程設范型分為:過程式程設范型、函數(shù)式程設范 型,此外還有進程式程設范型、事件程設范型和類型系統(tǒng)程設范型。每一程設范型都有多種程序設計語言支持(如:FORTRAN、PASCAL、C均體現(xiàn)過程 式程設范型,用來進行面向過程的程序設計),而某些語言兼?zhèn)涠喾N范型(如:Lisp屬過程與函數(shù)混合范型,C++則是進程與面向對象混合范型的語言)。 過程式程設范型是流行最廣泛的程序設計范型(人們平常 所使用的程序設計語言大多屬于此類型一筆勾銷它們?yōu)槊嫦蜻^程的語言),這一程設范型的中心點是設計過程,所以程序設計時首先要決定的是問題解所需要的過 程,然后設計過程的算法。這類范型的語言必須提供設施給過程(函數(shù))傳送變元和返回的值,如何區(qū)分不同種類的過程(函數(shù))、如何傳送變元是這類程序設計中 關心的主要問題。 面向對象程設范型是在以上范型之上發(fā)展起來的,它的關
鍵在于加入了類及其繼承性,用類表示通用特性,子類繼承父類的特性,并可加入新的特性。對象以類為樣板被創(chuàng)建。所以在面向對象程設范中,首要的任務是決定
所需要的類,每個類應設置足夠的操作,并利用繼承機制里二地共享共同的特性。 面向對象方法學:OO方法遵循一般的認知方法學的基本 概念(即有關演繹--從一般到特殊和歸納--從特殊到一般的完整理論和方法體系)而建立面向對象方法等基礎。面向對象方法學要點之一:認為客觀世界是由各 種"對象"所組成的,任何事物都是對象,每一個對象都有自已的運動規(guī)律和內部狀態(tài),每一個對象都屬于某個對象"類",都是該對象類的一個元素。復雜的對象 可以是由相對比較簡單的各種對象以某種方式而構成的。不同對象的組合及相互作用就構成了我們要研究、分析和構造的客觀系統(tǒng)。面向對象方法學要點之二:是通 過類比,發(fā)現(xiàn)對象間的相似性,即對象間的共同屬性,這就是構成對象類的依據。在?quot;類"、"父類"、"子類"的概念構成對象類的層次關系時,若不 加特殊說明,則處在下一層次上的對象可自然地繼承位于上一層次上的對象的屬性。面向對象方法學齡前要點之三:認為對已分成類的各個對象,可以通過定義一組 "方法"來說明該對象的功能,即允許作用于該對象上的各種操作。對象間的相互聯(lián)系是通過傳遞"消息"來完成的,消息就是通知對象去完成一個允許作用于該對 象的操作,至于該對象將如何完成這個操作的細節(jié),則是封裝在相應的對象類的定義中的,細節(jié)對于外界是隱蔽的。 可見,OO方法具有很強的類的概念,因此它就能很自然地直觀地模擬人類認識客觀世界的方式,亦即模擬人類在認知進程中的由一般到特殊的演繹功能或由特殊到一般的歸納功能,類的概念既反映出對象對象的本質屬性,又提供了實現(xiàn)對象共享機制的理論根據。 當我們遵照面向對象方法學的思想進行軟件系統(tǒng)開發(fā)時,首先要行面向對象的分析(OOA――Object Oriented Analysis),其任務是了解問題域所涉及的對象、對象間的關系和作用(即操作),然后構造問題的對象模型,力爭該模型能真實地反映出所要解決的"實 質問題"。在這一過程中,抽象是最本質、最重要的方法。針對不同的問題性質選擇不同的抽象層次,過簡或過繁都會影響到對問題的本質屬性的了解和解決。 其次就是進行面向對象的設計(OOD――Object Oriented Analysis),即設計軟件的對象模型。根據所應用的面向對象軟件開發(fā)環(huán)境的功能強弱不等,在對問題的對象模型的分析基礎上,可能要對它進行一定的改造,但應以最少改變原問題域的對象模型為原則。然后就在軟件系統(tǒng)內設設計各個對象、對象間的關系(如層次關系、繼承關系等)、對象間的通信方式(如消息模式)等,總之是設計各個對?quot;應做些什么"。 最后階段是面向對象的實現(xiàn)(OOI-- Object Oriented Zmplementation),即指軟件功能的編碼實現(xiàn),它包括:每個對象的內部功能的實現(xiàn);確立對象哪一些處理能力應在哪些類中進行描述;確定并實現(xiàn) 系統(tǒng)的界面、輸出的形式及其它控制機理等,總之是實現(xiàn)在OOD階段所規(guī)定的各個對象所應完成的任務。 用OO方法進行面向對象程序設計,其基本步驟如下: 面向對象技術:技術"泛指根據生產實踐經驗和自然科學原理 而發(fā)展起來的各種工藝操作方法與技能";"廣義地講, 還包括相應的生產工具和其它物質設備,以及生產的工藝過程或作業(yè)程序、方法"。OO方法既是程序設計新范型、系統(tǒng)開發(fā)的新方法學,作為一門新技術它就有了 基本的依據,事實上,OO方法可支持種類不同的系統(tǒng)開發(fā)地,已經或正在許多方面得以應用,因此,可以說OO方法是一門新的技術――面向對象技術。 近十多年來,除了面向對象的程序設計以外,OO方法已 發(fā)展應用到整個信息系統(tǒng)領域和一些新興的工業(yè)領域,包括:用戶界面(特別是圖形用戶界面――GUI)、應用集成平臺、面向對象數(shù)據庫(OODB)、分布式 系統(tǒng)、網絡管理結構、人工智能領域以及并發(fā)工程、綜合集成工程等。人工智能是和計算機密切相關的新領域,在很多方面已經采用面向對象技術,如知識的表示,專家系統(tǒng)的建造、用戶界面等。人工智能的軟件通常規(guī)模較大,用面向對象技術有可能更好地設計并維護這類程序。 80年代后期形成的并發(fā)工程,其概念要點是在產品開發(fā)初期(即方案設計階段)就把結構、工藝、加工、裝配、測試、使用、市場等問題同期并行地啟動運行,其 實現(xiàn)必須有兩個基本條件:一是專家群體,二是共享并管理產品信息(將CAD、CAE、CIN緊密結合在一起)。顯然,這需要面向對象技術的支持。目前,一 些公司采用并發(fā)工程組織產品的開發(fā),已取得顯著效益:波音公司用以開發(fā)巨型777運輸機,比開發(fā)767節(jié)省了一年半時間;日本把并發(fā)工程用于新型號的汽車 生產,和美國相比只用一半的時間。產業(yè)界認為它們念后的生存要依靠并發(fā)工程,而面向對象技術是促進并發(fā)工程發(fā)展的重要支持。 綜合集成工程是開發(fā)大型開放式復雜統(tǒng)的新的工程概念, 和并發(fā)工程相似,專家群體的組織和共享信息,是支持這一新工程概念的兩大支柱。由于開放式大系統(tǒng)包含人的智能活動,建立數(shù)學模型非常困難,而OO方法能夠 比較自然地刻劃現(xiàn)實世界,容易達到問題空間和程序空間的一致,能夠在多種層次上支持復雜系統(tǒng)層次模型的建立,是研究綜合集成工程的重要工具。 面向對象技術對于并發(fā)工程和綜合集成工程的作用,一方面說明了這一新技術應用范圍的寬廣,同時也說明了它的重要影響,更證明了面向對象技術是一門新興的值得廣泛重視的技術。 綜上所述,可歸納出OO方法用于系統(tǒng)開發(fā)有如下優(yōu)越性: 四、OOA方法
面向對象的分析方法(OOA),是在一個系統(tǒng)的開發(fā)過程中進行了系統(tǒng)業(yè)務調查以后,按照面向對象的思想來分析問題。OOA與結構化分析有較大的區(qū)別。
OOA所強調的是在系統(tǒng)調查資料的基礎上,針對OO方法所需要的素材進行的歸類分析和整理,而不是對管理業(yè)務現(xiàn)狀和方法的分析。
(一)處理復雜問題的原則
用OOA方法對所調查結果進行分析處理時,一般依據以下幾項原則:
抽象(abstraction)是指為了某一分析目的而集中精力研究對象的某一性質,它可以忽略其它與此目的無關的部分。在使用這一概念時,我們承認客觀
世界的復雜性,也知道事物包括有多個細節(jié),但此時并不打算去完整地考慮它。抽象是我們科學地研究和處理復雜問題的重要方法。抽象機制被用在數(shù)據分析方面,
稱之為數(shù)據抽象。數(shù)據抽象是OOA的核心。數(shù)據抽象把一組數(shù)據對象以及作用其上的操作組成一個程序實體。使得外部只知道它是如何做和如何表示的。在應用數(shù)
據抽象原理時,系統(tǒng)分析人員必須確定對象的屬性以及處理這些屬性的方法,并借助于方法獲得屬性。在OOA中屬性和方法被認為是不可分割的整體。抽象機制有
時也被用在對過程的分解方面,被稱之為過程抽象。恰當?shù)倪^程抽象可以對復雜過程的分解和確定以及描述對象發(fā)揮積極的作用。
封裝(encapsulation)即信息隱蔽。它是指在確定系統(tǒng)的某一部分內容時,應考慮到其它部分的信息及聯(lián)系都在這一部分的內部進行,外部各部分之間的信息聯(lián)系應盡可能的少。
繼承(inheritance)是指能直接獲得已有的性質和特征而不必重復定義它們。OOA可以一次性地指定對象的公共屬性和方法,然后再特化和擴展這些
屬性及方法為特殊情況,這樣可大大地減輕在系統(tǒng)實現(xiàn)過程中的重復勞動。在共有屬性的基礎之上,繼承者也可以定義自己獨有的特性。
相關(association)是指把某一時刻或相同環(huán)境下發(fā)生的事物聯(lián)系在一起。
消息通信(communication with message)是指在對象之間互相傳遞信息的通信方式。
組織方法。在分析和認識世界時,可綜合采用如下三種組織方法(method Of organization):
1。特定對象與其屬性之間的區(qū)別。
2。整體對象與相應組成部分對象之間的區(qū)別。
3。不同對象類的構成及其區(qū)別等。
比例(scale)是一種運用整體與部分原則,輔助處理復雜問題的方法。
行為范疇(categories Of behavior)是針對被分析對象而言的,它們主要包括:1?;谥苯釉虻男袨?。2。時變性行為。3。功能查詢性行為。
(二)OOA方法的基本步驟
在用OOA具體地分析一個事物時,大致上遵循如下五個基本步驟:
第一步,確定對象和類。這里所說的對象是對數(shù)據及其處理方式的抽象,它反映了系統(tǒng)保存和處理現(xiàn)實世界中某些事物的信息的能力。類是多個對象的共同屬性和方法集合的描述,它包括如何在一個類中建立一個新對象的描述。
第二步,確定結構(structure)。結構是指問題域的復雜性和連接關系。類成員結構反映了泛化-特化關系,整體-部分結構反映整體和局部之間的關系。
第三步,確定主題(subject)。主題是指事物的總體概貌和總體分析模型。
第四步,確定屬性(attribute)。屬性就是數(shù)據元素,可用來描述對象或分類結構的實例,可在圖中給出,并在對象的存儲中指定。
第五步,確定方法(method)。方法是在收到消息后必須進行的一些處理方法:方法要在圖中定義,并在對象的存儲中指定。對于每個對象和結構來說,那些
用來增加、修改、刪除和選擇一個方法本身都是隱含的(雖然它們是要在對象的存儲中定義的,但并不在圖上給出),而有些則是顯示的。
五、OOD方法
面向對象的設計方法是OO方法中一個中間過渡環(huán)節(jié)。其主要作用是對OOA分析的結果作進一步的規(guī)范化整理,以便能夠被OOP直接接受。在OOD的設計過程中,要展開的主要有如下幾項工作。
(一)對象定義規(guī)格的求精過程
對于OOA所抽象出來的對象-&-類以及匯集的分析文檔,OOD需要有一個根據設計要求整理和求精的過程,使之更能符合OOP的需要。這個整理和求精過程主要有兩個方面:一是要根據面向對象的概念模型整理分析所確定的對象結構、屬性、方法等內容,改正錯誤的內容,刪去不必要和重復的內容等。二是進行分類整理,以便于下一步數(shù)據庫設計和程序處理模塊設計的需要。整理的方法主要是進行歸類,對類一&一對象、屬性、方法和結構、主題進行歸類。
(二)數(shù)據模型和數(shù)據庫設計
數(shù)據模型的設計需要確定類-&-對象屬性的內容、消息連接的方式、系統(tǒng)訪問、數(shù)據模型的方法等。最后每個對象實例的數(shù)據都必須落實到面向對象的庫結構模型中。
(三)優(yōu)化
OOD的優(yōu)化設計過程是從另一個角度對分析結果和處理業(yè)務過程的整理歸納,優(yōu)化包括對象和結構的優(yōu)化、抽象、集成。
對象和結構的模塊化表示OOD提供了一種范式,這種范式支持對類和結構的模塊化。這種模塊符合一般模塊化所要求的所有特點,如信息隱蔽性好,內部聚合度強和模塊之間耦合度弱等。
集成化使得單個構件有機地結合在一起,相互支持。
當前,在研究OO方法的熱潮中,有如下主要研究領域: 五、展望 面向對象方法在80年代已經得到了很大的發(fā)展,并且已在計算機科學、信息科學、系統(tǒng)科學和產業(yè)界得到了有效的應用,顯示出其強大的生命力。可以展望在90年代內,面向對象方法將會大更深、吏廣、更高的方向上取得進展:
|
|
來自: digman2005 > 《面向對象設計》