OOA與OOD的區別
上討論了OOA階段和OOD階段所應完成的主要工作,由于這兩個階段的劃分沒有公認
的標準,有些工作是在OOA階段完成還是在OOD階段完成還存在著爭議。有人認為OOA和
OOD可以交叉進行;有人認為OOD是對OOA結果的改進和細化,所以只提OOA;有人則更
強調OOD。盡管OOA和OOD存在著某些交叉和聯系,但它們之間仍有許多差別,如:
1)OOA將現實世界中的實體抽象為問題對象,并構造問題域中的系統需求模型;OOD將
問題對象轉化為解域中的類并在解域中構造出問題的解。
2)OOA側重于用戶需求的分析和對問題域的理解,分析人員關心的是系統結構及對象間
的關系;OOD則側重于系統的實現,設計人員關心的是對象的行為及其實現。
3)OOA標識了一組對象,并通過其相互作用來刻劃系統,該階段的工作與程序設計語言
無關;OOD定義了一組類,并設計出系統的實現藍圖,概要設計與程序設計語言無關,但詳細
設計則與之有比較密切的聯系。(
4)OOA識別的對象是對客觀世界實體的抽象,標識對象的準則是:該對象的引入是否有助于對問題域的理解;OOD中構造類的準則是:該類的構造是否可行,是否有效地實現了抽象
數據類型,是否有助于系統的實現和提高軟件質量。(
5)兩個階段都沒有提及系統對象,但原因不同。在OOA階段,分析與實現無關,分析所涉
及的范圍與解域無關,系統對象自然不用考慮。OOD建立的對象模型本身就是要設計的軟件
系統,對系統對象的考慮是隱含的。
6)組裝結構和分類結構在兩個階段所起的作用不同。在OOA階段,它們的引入主要是為
了理解問題;而在OOD階段,它們的引入則主要是針對軟件的構造和實現。分類結構通過繼
承機制來實現,因而代碼得到了有效地復用;組裝結構則將一些類組合在一起構成較大的軟件
構件。
7)OOA并沒有考慮對象的產生問題,當其對應的實體在現實世界中出現時,它也就在問
題域中產生了。OOA也不考慮對象屬性的取值和服務算法的實現。而在OOD階段這些問題
都必須詳細考慮。
8)OOD涉及到重載問題;而OOA沒有考慮,因為考慮過多的實現細節對理解問題和分
析用戶需求沒有多大幫助。
posted on 2009-03-31 15:37
Daniel 閱讀(325)
評論(1) 編輯 收藏 所屬分類:
CoreJava