面向對象方法

面向對象方法

軟件開發方法
面向對象方法(Object-Oriented Method)是一種把面向對象的思想應用于軟件開發過程中,指導開發活動的系統方法,簡稱OO(Object-Oriented)方法,是建立在對象概念基礎上的方法學。對象是由數據和容許的操作組成的封裝體,與客觀實體有直接對應關系,一個對象類定義了具有相似性質的一組對象。而每繼承性是對具有層次關系的類的屬性和操作進行共享的一種方式。所謂面向對象就是基于對象概念,以對象為中心,以類和繼承為構造機制,來認識、理解、刻畫客觀世界和設計、構建相應的軟件系統。[1]
    中文名:面向對象方法 外文名: 别名: 英文名:Object-Oriented Method 英文簡稱:OO 解釋:指導開發活動的系統方法 特 性:多态性、封裝性、繼承性 主要階段:需求分析、系統分析、系統設計和系統實現 應用領域:程序設計、形式定義、設計方法學等 優 勢:可維護性強、适應性強、可複用性強

簡介

面向對象方法作為一種新型的獨具優越性的新方法正引起全世界越來越廣泛的關注和高度的重視,它被譽為"研究高技術的好方法",更是當前計算機界關心的重點。十多年來,在對OO方法如火如荼的研究熱潮中,許多專家和學者預言:正象70年代結構化方法對計算機技術應用所産生的巨大影響和促進那樣,90年代OO方法會強烈地影響、推動和促進一系列高技術的發展和多學科的綜合。

實質

就是主張從客觀世界固有的事物出發來構造系統,提倡用人類在現實生活中常用的思維方法來認識、理解和描述客觀事物,強調最終建立的系統能夠映射問題域,也就是說,系統中的對象以及對象之間的關系能夠如實地反映問題域中固有事物及其關系。

由來發展

回顧曆史可激勵現在,以規劃将來。

OO方法起源于面向對象的編程語言(簡稱為OOPL)。50年代後期,在用FORTRAN語言編寫大型程序時,常出現變量名在程序不同部分發生沖突的問題。鑒于此,ALGOL語言的設計者在ALGOL60中采用了以"Begin……End"為标識的程序塊,使塊内變量名是局部的,以避免它們與程序中塊外的同名變量相沖突。這是編程語言中首次提供封裝(保護)的嘗試。此後程序塊結構廣泛用于高級語言如Pascal、Ada、C之中。

60年代中後期,Simula語言在ALGOL基礎上研制開發,它将ALGOL的塊結構概念向前發展一步,提出了對象的概念,并使用了類,也支持類繼承。70年代,Smalltalk語言誕生,它取Simula的類為核心概念,它的很多内容借鑒于Lisp語言。由Xerox公司經過對Smautalk72、76持續不斷的研究和改進之後,于1980年推出商品化的,它在系統設計中強調對象概念的統一,引入對象、對象類、方法、實例等概念和術語,采用動态聯編和單繼承機制。

從80年代起,人們基于以往巳提出的有關信息隐蔽和抽象數據類型等概念,以及由Modula2、Ada和Smalltalk和等語言所奠定的基礎,再加上客觀需求的推動,進行了大量的理論研究和實踐探索,不同類型的面向對象語言(如:Object-c、Eiffel、c++、Java、Object-Pascal等)逐步地發展和建立起較完整的和雨後春筍般研制開發出來,OO方法的概念理論體系和實用的軟件系統。

面向對象源出于Simula,真正的OOP由Smalltalk奠基。Smalltalk現在被認為是最純的OOPL。

正是通過Smalltalk80的研制與推廣應用,使人們注意到OO方法所具有的模塊化、信息封裝與隐蔽、抽象性、繼承性、多樣性等獨特之處,這些優異特性為研制大型軟件、提高軟件可靠性、可重用性、可擴充性和可維護性提供了有效的手段和途徑。

80年代以來,人們将面向對象的基本概念和運行機制運用到其它領域,獲得了一系列相應領域的面向對象的技術。面向對象方法已被廣泛應用于程序設計語言、形式定義、設計方法學、操作系統、分布式系統、人工智能、實時系統、數據庫、人機接口、計算機體系結構以及并發工程、綜合集成工程等,在許多領域的應用都得到了很大的發展。1986年在美國舉行了首屆"面向對象編程、系統、語言和應用(OOPSLA'86)"國際會議,使面向對象受到世人矚目,其後每年都舉行一次,這進一步标志OO方法的研究已普及到全世界。

基本概念

用計算機解決問題需要用程序設計語言對問題加以描述并求解(即編程),實質上,軟件是問題求解的一種表述形式。顯然,假如軟件能直接表現人求解問題的思維路徑(即求解問題的方法),那麼軟件不僅容易被人理解,而且易于維護和修改,從而會保證軟件的可靠性和可維護性,并能提高公共問題域中的軟件模塊和模塊重用的可靠性。面向對象的方法恰好可以使得程序設計按照人們通常的思維方式來建立問題域的模型,設計出盡可能自然地表現求解方法的軟件。

對象

對象是要研究的任何事物。從一本書到一家圖書館,單的整數到整數列龐大的數據庫、極其複雜的自動化工廠、航天飛機都可看作對象,它不僅能表示有形的實體,也能表示無形的(抽象的)規則、計劃或事件。對象由數據(描述事物的屬性)和作用于數據的操作(體現事物的行為)構成一獨立整體。從程序設計者來看,對象是一個程序模塊,從用戶來看,對象為他們提供所希望的行為。在對内的操作通常稱為方法。一個對象請求另一對象為其服務的方式是通過發送消息。

類是對象的模闆。即類是對一組有相同數據和相同操作的對象的定義,一個類所包含的方法和數據描述一組對象的共同行為和屬性。類是在對象之上的抽象,對象則是類的具體化,是類的實例。類可有其子類,也可有其它類,形成類層次結構。

消息

消息是對象之間進行通信的一種規格說明。一般它由三部分組成:接收消息的對象、消息名及實際變元。

繼承

繼承性(Inheritance)是指,在某種情況下,一個類會有“子類”。子類比原本的類(稱為父類)要更加具體化。例如,“狗”這個類可能會有它的子類“牧羊犬”和“吉娃娃犬”。在這種情況下,“萊絲”可能就是牧羊犬的一個實例。子類會繼承父類的屬性和行為,并且也可包含它們自己的。我們假設“狗”這個類有一個方法(行為)叫做“吠叫()”和一個屬性叫做“毛皮顔色”。它的子類(前例中的牧羊犬和吉娃娃犬)會繼承這些成員。這意味着程序員隻需要将相同的代碼寫一次。

在僞代碼中我們可以這樣寫:

類牧羊犬:繼承狗定義萊絲是牧羊犬萊絲.吠叫()/*注意這裡調用的是狗這個類的吠叫方法。*/

回到前面的例子,“牧羊犬”這個類可以繼承“毛皮顔色”這個屬性,并指定其為棕白色。而“吉娃娃犬”則可以繼承“吠叫()”這個方法,并指定它的音調高于平常。子類也可以加入新的成員,例如,“吉娃娃犬”這個類可以加入一個方法叫做“顫抖()”。設若用“牧羊犬”這個類定義了一個實例“萊絲”,那麼萊絲就不會顫抖,因為這個方法是屬于吉娃娃犬的,而非牧羊犬。事實上,我們可以把繼承理解為“是”或“屬于”。萊絲“是”牧羊犬,牧羊犬“屬于”狗類。因此,萊絲既得到了牧羊犬的屬性,又繼承了狗的屬性。我們來看僞代碼:

類吉娃娃犬:繼承狗開始公有成員:顫抖()結束類牧羊犬:繼承狗定義萊絲是牧羊犬萊絲.顫抖()/*錯誤:顫抖是吉娃娃犬的成員方法。當一個類從多個父類繼承時,我們稱之為“多重繼承”。如一隻狗既是吉娃娃犬又是牧羊犬(雖然事實上并不合邏輯)。多重繼承并不總是被支持的,因為它很難理解,又很難被好好使用。

封裝性

具備封裝性(Encapsulation)的面向對象程序設計隐藏了某一方法的具體執行步驟,取而代之的是通過消息傳遞機制傳送消息給它。因此,舉例來說,“狗”這個類有“吠叫()”的方法,這一方法定義了狗具體該通過什麼方法吠叫。但是,萊絲的朋友并不知道它到底是如何吠叫的。

從實例來看:

“/*”的一個面向過程的程序會這樣寫:*/定義萊絲萊絲.設置音調(5)萊絲.吸氣()萊絲.吐氣()/*而當狗的吠叫被封裝到類中,任何人都可以簡單地使用:*/定義萊絲是狗萊絲.吠叫()

封裝是通過限制隻有特定類的對象可以訪問這一特定類的成員,而它們通常利用接口實現消息的傳入傳出。舉個例子,接口能确保幼犬這一特征隻能被賦予狗這一類。通常來說,成員會依它們的訪問權限被分為3種:公有成員、私有成員以及保護成員。有些語言更進一步:Java可以限制同一包内不同類的訪問;C#和VB.NET保留了為類的成員聚集準備的關鍵字:internal(C#)和Friend(VB.NET);Eiffel語言則可以讓用戶指定哪個類可以訪問所有成員。

多态

多态(Polymorphism)是指由繼承而産生的相關的不同的類,其對象對同一消息會做出不同的響應。例如,狗和雞都有“叫()”這一方法,但是調用狗的“叫()”,狗會吠叫;調用雞的“叫()”,雞則會啼叫。我們将它體現在僞代碼上:

類狗

1開始-公有成員:-叫()-開始-吠叫()-結束結束

類雞

1開始-公有成員:-叫()-開始-啼叫()-結束

結束定義萊絲是狗定義魯斯特是雞萊絲.叫()魯斯特.叫()

這樣,雖然同樣是做出叫這一種行為,但萊絲和魯斯特具體做出的表現方式将大不相同。多态性的概念可以用在運算符重載上,本文不再贅述。

抽象性

抽象(Abstraction)是簡化複雜的現實問題的途徑,它可以為具體問題找到最恰當的類定義,并且可以在最恰當的繼承級别解釋問題。舉例說明,萊絲在大多數時候都被當作一條狗,但是如果想要讓它做牧羊犬做的事,你完全可以調用牧羊犬的方法。如果狗這個類還有動物的父類,那麼你完全可以視萊絲為一個動物。

主要特征

封裝性

封裝是一種信息隐蔽技術,它體現于類的說明,是對象的重要特性。封裝使數據和加工該數據的方法(函數)封裝為一個整體,以實現獨立性很強的模塊,使得用戶隻能見到對象的外特性(對象能接受哪些消息,具有那些處理能力),而對象的内特性(保存内部狀态的私有數據和實現加工能力的算法)對用戶是隐蔽的。封裝的目的在于把對象的設計者和對象者的使用分開,使用者不必知曉行為實現的細節,隻須用設計者提供的消息來訪問該對象。

繼承性

繼承性是子類自動共享父類之間數據和方法的機制。它由類的派生功能體現。一個類直接繼職其它類的全部描述,同時可修改和擴充。繼職具有傳達室遞性。繼職分為單繼承(一個子類隻有一父類)和多重繼承(一個類有多個父類)。類的對象是各自封閉的,如果沒繼承性機制,則類對象中數據、方法就會出現大量重複。繼承不僅支持系統的可重用性,而且還促進系統的可擴充性。

多态性

對象根據所接收的消息而做出動作。同一消息為不同的對象接受時可産生完全不同的行動,這種現象稱為多态性。利用多态性用戶可發送一個通用的信息,而将所有的實現細節都留給接受消息的對象自行決定,如是,同一消息即可調用不同的方法。例如:Print消息被發送給一圖或表時調用的打印方法與将同樣的Print消息發送給一正文文件而調用的打印方法會完全不同。多态性的實現受到繼承性的支持,利用類繼承的層次關系,把具有通用功能的協議存放在類層次中盡可能高的地方,而将實現這一功能的不同方法置于較低層次,這樣,在這些低層次上生成的對象就能給通用消息以不同的響應。在OOPL中可通過在派生類中重定義基類函數(定義為重載函數或虛函數)來實現多态性。

綜上可知,在OO方法中,對象和傳遞消息分别表現事物及事物間相互聯系的概念。類和繼承是是适應人們一般思維方式的描述範式。方法是允許作用于該類對象上的各種操作。這種對象、類、消息和方法的程序設計範式的基本點在于對象的封裝性和類的繼承性。通過封裝能将對象的定義和對象的實現分開,通過繼承能體現類與類之間的關系,以及由此帶來的動态聯編和實體的多态性,從而構成了面向對象的基本特征。

新方法論

OO方法的作用和意義決不隻局限于編程技術,它是一種新的程序設計範型--面向對象程序設計範型;是信息系統開發的新方法論--面向對象方法學;是正在興起的新技術--面向對象技術。

面向對象程序設計範型:程序設計範型(以下簡稱程設範型)具體指的是程序設計的體裁,正如文學上有小說、詩歌、散文等體裁,程序設計體裁是用程序設計語言表達各種概念和各種結構的一套設施。

目前,程設範型分為:過程式程設範型、函數式程設範型,此外還有進程式程設範型、事件程設範型和類型系統程設範型。每一程設範型都有多種程序設計語言支持(如:FORTRAN、PASCAL、C均體現過程式程設範型,用來進行面向過程的程序設計),而某些語言兼備多種範型(如:Lisp屬過程與函數混合範型,C++則是進程與面向對象混合範型的語言)。

過程式程設範型是流行最廣泛的程序設計範型(人們平常所使用的程序設計語言大多屬于此類型一筆勾銷它們為面向過程的語言),這一程設範型的中心點是設計過程,所以程序設計時首先要決定的是問題解所需要的過程,然後設計過程的算法。這類範型的語言必須提供設施給過程(函數)傳送變元和返回的值,如何區分不同種類的過程(函數)、如何傳送變元是這類程序設計中關心的主要問題。

面向對象程設範型是在以上範型之上發展起來的,它的關鍵在于加入了類及其繼承性,用類表示通用特性,子類繼承父類的特性,并可加入新的特性。對象以類為樣闆被創建。所以在面向對象程設範中,首要的任務是決定所需要的類,每個類應設置足夠的操作,并利用繼承機制裡二地共享共同的特性。可以肯定地說,這種新的程設範型必将有力地推動軟件開發的新的進展。限于篇幅,其它程設範型在此不作細述。

面向對象方法學:

OO方法遵循一般的認知方法學的基本概念(即有關演繹--從一般到特殊和歸納--從特殊到一般的完整理論和方法體系)而建立面向對象方法等基礎。面向對象方法學要點之一:認為客觀世界是由各種"對象"所組成的,任何事物都是對象,每一個對象都有自已的運動規律和内部狀态,每一個對象都屬于某個對象"類",都是該對象類的一個元素。複雜的對象可以是由相對比較簡單的各種對象以某種方式而構成的。不同對象的組合及相互作用就構成了我們要研究、分析和構造的客觀系統。面向對象方法學要點之二:是通過類比,發現對象間的相似性,即對象間的共同屬性,這就是構成對象類的依據。在?quot;類"、"父類"、"子類"的概念構成對象類的層次關系時,若不加特殊說明,則處在下一層次上的對象可自然地繼承位于上一層次上的對象的屬性。面向對象方法學齡前要點之三:認為對已分成類的各個對象,可以通過定義一組"方法"來說明該對象的功能,即允許作用于該對象上的各種操作。對象間的相互聯系是通過傳遞"消息"來完成的,消息就是通知對象去完成一個允許作用于該對象的操作,至于該對象将如何完成這個操作的細節,則是封裝在相應的對象類的定義中的,細節對于外界是隐蔽的。

可見,OO方法具有很強的類的概念,因此它就能很自然地直觀地模拟人類認識客觀世界的方式,亦即模拟人類在認知進程中的由一般到特殊的演繹功能或由特殊到一般的歸納功能,類的概念既反映出對象對象的本質屬性,又提供了實現對象共享機制的理論根據。

當我們遵照面向對象方法學的思想進行軟件系統開發時,首先要進行面向對象的分析(OOA――Object OrientedAnalysis),其任務是了解問題域所涉及的對象、對象間的關系和作用(即操作),然後構造問題的對象模型,力争該模型能真實地反映出所要解決的"實質問題"。在這一過程中,抽象是最本質、最重要的方法。針對不同的問題性質選擇不同的抽象層次,過簡或過繁都會影響到對問題的本質屬性的了解和解決。

其次就是進行面向對象的設計(OOD――Object Oriented Analysis),即設計軟件的對象模型。根據所應用的面向對象軟件開發環境的功能強弱不等,在對問題的對象模型的分析基礎上,可能要對它進行一定的改造,但應以最少改變原問題域的對象模型為原則。然後就在軟件系統内設設計各個對象、對象間的關系(如層次關系、繼承關系等)、對象間的通信方式(如消息模式)等,總之是設計各個對?quot;應做些什麼"。

最後階段是面向對象的實現(OOI-- Object Oriented Implementation),即指軟件功能的編碼實現,它包括:每個對象的内部功能的實現;确立對象哪一些處理能力應在哪些類中進行描述;确定并實現系統的界面、輸出的形式及其它控制機理等,總之是實現在OOD階段所規定的各個對象所應完成的任務。

基本步驟

(1)分析确定在問題空間和解空間出現的全部對象及其屬性;

(2)确定應施加于每個對象的操作,即對象固有的處理能力;

(3)分析對象間的聯系,确定對象彼此間傳遞的消息;

(4)設計對象的消息模式,消息模式和處理能力共同構成對象的外部特性;

(5)分析各個對象的外部特性,将具有相同外部特性的對象歸為一類,從而确定所需要的類;

(6)确定類間的繼承關系,将各對象的公共性質放在較上層的類中描述,通過繼承來共享對公共性質的描述;

(7)設計每個類關于對象外部特性的描述;

(8)設計每個類的内部實現(數據結構和方法);

(9)創建所需的對象(類的實例),實現對象間應有的聯系(發消息)。

面向對象

技術"泛指根據生産實踐經驗和自然科學原理而發展起來的各種工藝操作方法與技能";"廣義地講,還包括相應的生産工具和其它物質設備,以及生産的工藝過程或作業程序、方法"。OO方法既是程序設計新範型、系統開發的新方法學,作為一門新技術它就有了基本的依據,事實上,OO方法可支持種類不同的系統開發地,已經或正在許多方面得以應用,因此,可以說OO方法是一門新的技術――面向對象技術。

近十多年來,除了面向對象的程序設計以外,OO方法已發展應用到整個信息系統領域和一些新興的工業領域,包括:用戶界面(特别是圖形用戶界面――GUI)、應用集成平台、面向對象數據庫(OODB)、分布式系統、網絡管理結構、人工智能領域以及并發工程、綜合集成工程等。人工智能是和計算機密切相關的新領域,在很多方面已經采用面向對象技術,如知識的表示,專家系統的建造、用戶界面等。人工智能的軟件通常規模較大,用面向對象技術有可能更好地設計并維護這類程序。

80年代後期形成的并發工程,其概念要點是在産品開發初期(即方案設計階段)就把結構、工藝、加工、裝配、測試、使用、市場等問題同期并行地啟動運行,其實現必須有兩個基本條件:一是專家群體,二是共享并管理産品信息(将CAD、CAE、CIN緊密結合在一起)。顯然,這需要面向對象技術的支持。目前,一些公司采用并發工程組織産品的開發,已取得顯著效益:波音公司用以開發巨型777運輸機,比開發767節省了一年半時間;日本把并發工程用于新型号的汽車生産,和美國相比隻用一半的時間。産業界認為它們念後的生存要依靠并發工程,而面向對象技術是促進并發工程發展的重要支持。

綜合集成工程是開發大型開放式複雜統的新的工程概念,和并發工程相似,專家群體的組織和共享信息,是支持這一新工程概念的兩大支柱。由于開放式大系統包含人的智能活動,建立數學模型非常困難,而OO方法能夠比較自然地刻劃現實世界,容易達到問題空間和程序空間的一緻,能夠在多種層次上支持複雜系統層次模型的建立,是研究綜合集成工程的重要工具。

面向對象技術對于并發工程和綜合集成工程的作用,一方面說明了這一新技術應用範圍的寬廣,同時也說明了它的重要影響,更證明了面向對象技術是一門新興的值得廣泛重視的技術。

優越性

綜上所述,可歸納出OO方法用于系統開發有如下優越性:

(1)強調從現實世界中客觀存在的事物(對象)出發來認識問題域和構造系統,這就使系統開發者大大減少了對問題域的理解難度,從而使系統能更準确地反映問題域。

(2)運用人類日常的思維方法和原則(體現于OO方法的抽象、分類、繼承、封裝、消息通訊等基本原則)進行系統開發,有益于發揮人類的思維能力,并有效地控制了系統複雜性。

(3)對象的概念貫穿于開發過程的終,使各個開發階段的系統成分具良好的對應,從而顯著地提高了系統的開發效率與質量,并大大降低系統維護的難度。

(4)對象概念的一緻性,使參與系統開發的各類人員在開發的各所段具有共同語言,有效地改善了人員之間的交流和協作。

(5)對象的相對穩定性和對易變因素隔離,增強了系統的應變能力。

(6)對象類之間的繼承關系和對象的相對獨立性,對軟件複用提供了強有力的支持。

OOA方法

面向對象的分析方法(OOA),是在一個系統的開發過程中進行了系統業務調查以後,按照面向對象的思想來分析問題。OOA與結構化分析有較大的區别。OOA所強調的是在系統調查資料的基礎上,針對OO方法所需要的素材進行的歸類分析和整理,而不是對管理業務現狀和方法的分析。

處理問題的原則

用OOA方法對所調查結果進行分析處理時,一般依據以下幾項原則:

抽象(abstraction)是指為了某一分析目的而集中精力研究對象的某一性質,它可以忽略其它與此目的無關的部分。在使用這一概念時,我們承認客觀世界的複雜性,也知道事物包括有多個細節,但此時并不打算去完整地考慮它。抽象是我們科學地研究和處理複雜問題的重要方法。抽象機制被用在數據分析方面,稱之為數據抽象。數據抽象是OOA的核心。數據抽象把一組數據對象以及作用其上的操作組成一個程序實體。使得外部隻知道它是如何做和如何表示的。在應用數據抽象原理時,系統分析人員必須确定對象的屬性以及處理這些屬性的方法,并借助于方法獲得屬性。在OOA中屬性和方法被認為是不可分割的整體。抽象機制有時也被用在對過程的分解方面,被稱之為過程抽象。恰當的過程抽象可以對複雜過程的分解和确定以及描述對象發揮積極的作用。

封裝(encapsulation)即信息隐蔽。它是指在确定系統的某一部分内容時,應考慮到其它部分的信息及聯系都在這一部分的内部進行,外部各部分之間的信息聯系應盡可能的少。

繼承(inheritance)是指能直接獲得已有的性質和特征而不必重複定義它們。OOA可以一次性地指定對象的公共屬性和方法,然後再特化和擴展這些屬性及方法為特殊情況,這樣可大大地減輕在系統實現過程中的重複勞動。在共有屬性的基礎之上,繼承者也可以定義自己獨有的特性。

相關(association)是指把某一時刻或相同環境下發生的事物聯系在一起。

消息通信(communication with message)是指在對象之間互相傳遞信息的通信方式。

組織方法:

在分析和認識世界時,可綜合采用如下三種組織方法(method Of organization):

1.特定對象與其屬性之間的區别。

2.整體對象與相應組成部分對象之間的區别。

3.不同對象類的構成及其區别等。

比例(scale)是一種運用整體與部分原則,輔助處理複雜問題的方法。

行為範疇(categories Of behavior)是針對被分析對象而言的,它們主要包括:1。基于直接原因的行為。2。時變性行為。3。功能查詢性行為。

OOA的基本步驟

在用OOA具體地分析一個事物時,大緻上遵循如下五個基本步驟:

第一步,确定對象和類。這裡所說的對象是對數據及其處理方式的抽象,它反映了系統保存和處理現實世界中某些事物的信息的能力。類是多個對象的共同屬性和方法集合的描述,它包括如何在一個類中建立一個新對象的描述。

第二步,确定結構(structure)。結構是指問題域的複雜性和連接關系。類成員結構反映了泛化-特化關系,整體-部分結構反映整體和局部之間的關系。

第三步,确定主題(subject)。主題是指事物的總體概貌和總體分析模型。

第四步,确定屬性(attribute)。屬性就是數據元素,可用來描述對象或分類結構的實例,可在圖中給出,并在對象的存儲中指定。

第五步,确定方法(method)。方法是在收到消息後必須進行的一些處理方法:方法要在圖中定義,并在對象的存儲中指定。對于每個對象和結構來說,那些用來增加、修改、删除和選擇一個方法本身都是隐含的(雖然它們是要在對象的存儲中定義的,但并不在圖上給出),而有些則是顯示的。

OOD方法

面向對象的設計方法是OO方法中一個中間過渡環節。其主要作用是對OOA分析的結果作進一步的規範化整理,以便能夠被OOP直接接受。在OOD的設計過程中,要展開的主要有如下幾項工作。

規格的求精過程

對于OOA所抽象出來的對象-&-類以及彙集的分析文檔,OOD需要有一個根據設計要求整理和求精的過程,使之更能符合OOP的需要。這個整理和求精過程主要有兩個方面:一是要根據面向對象的概念模型整理分析所确定的對象結構、屬性、方法等内容,改正錯誤的内容,删去不必要和重複的内容等。二是進行分類整理,以便于下一步數據庫設計和程序處理模塊設計的需要。整理的方法主要是進行歸類,對類一&一對象、屬性、方法和結構、主題進行歸類。

模型和數據庫

數據模型的設計需要确定類-&-對象屬性的内容、消息連接的方式、系統訪問、數據模型的方法等。最後每個對象實例的數據都必須落實到面向對象的庫結構模型中。

優化:

OOD的優化設計過程是從另一個角度對分析結果和處理業務過程的整理歸納,優化包括對象和結構的優化、抽象、集成。

對象和結構的模塊化表示OOD提供了一種範式,這種範式支持對類和結構的模塊化。這種模塊符合一般模塊化所??和模塊之間耦合度弱等。

集成化使得單個構件有機地結合在一起,相互支持。

當前,在研究OO方法的熱潮中,有如下主要研究領域:

(1)智能計算機的研究。因為OO方法可将知識片看作對象,并為相關知識的模塊化提供方便,所以在知識工程領域越來越受到重視。OO方法的設計思想被引入到智能計算機的研究中。

(2)新一代操作系統的研究。采用OO方法來組織設計新一代操作系統具有如下優點:采用對象來描述OS所需要設計、管理的各類資源信息,如文件、打印機、處理機、各類解設等更為自然;引入OO方法來處理OO的諸多事務,如命名、同步、保護、管理等,會更易實現、更便于維護;OO方法對于多機、并發控制可提供有力的支持,并能得當地管理網絡,使其更豐富和協調。

(3)多學科的綜合研究。當前,人工智能、數據庫、編程語言的研究有彙合趨勢。例如,在研究新一代數據庫系統(智能數據庫系統)中,能否用人工智能思想與OO方法建立描述功能更強的數椐模型?能否将數據庫語言和編程語言融為一體?為了實現多學科的綜合,OO方法是一個很有希望的彙聚點。

(4)新一代面向對象的硬件系統的研究。要支持采用OO方法設計的軟件系統的運行,必須建立更理想的能支持OO方法的硬件環境。目前采用松耦合(分布主存)結構的多處理機系統更接近于OO方法的思想;作為最新出現的神經網絡計算機的體系結構與OO方法的體系結構具有驚人的類似,并能相互支持與配合:一個神經元就是一個小粒度的對象;神經元的連接機制與OO方法的消息傳送有着天然的聯系;一次連接可以看作一次消息的發送。可以預料,将OO方法與神經網絡研究相互結合,必然可以開發出功能更強、更迷人的新一代計算機硬件系統。

展望

面向對象方法在80年代已經得到了很大的發展,并且已在計算機科學、信息科學、系統科學和産業界得到了有效的應用,顯示出其強大的生命力。可以展望在90年代内,面向對象方法将會大更深、吏廣、更高的方向上取得進展:

(1)更深的方向:如OO方法的理論基礎和形式化描述;用OO技術設計出新一代OS等。

(2)更廣的方向:如面向對象的知識表示;面向對象的仿真系統;面向對象的多媒體系統;面向對象的靈境系統等。

(3)更高的方向:如從思維科學的高度來豐富OO方法學的本質屬性,突破現有的面向對象技術的一些局限、研究統一的面向對象的範式等。

相關詞條

相關搜索

其它詞條