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