2011年軟件水平考試軟件設(shè)計(jì)師輔導(dǎo)資料(10)
第10章面向?qū)ο蟮姆椒?/p>
面向?qū)ο蟮姆椒ㄊ墙窈筌浖_(kāi)發(fā)方法的主流。學(xué)習(xí)本章,***是學(xué)過(guò)面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,這樣可以對(duì)對(duì)象、類(lèi)、類(lèi)的層次結(jié)構(gòu)、方法、消息等概念更容易理解。本章總的要求是,掌握面向?qū)ο蟮幕舅枷搿⒒靖拍?、基本原理,掌握三種模型的基本概念和構(gòu)造方法,掌握面向?qū)ο蟮姆治觥⒃O(shè)計(jì)和實(shí)現(xiàn)的過(guò)程。
一、面向?qū)ο蟮幕靖拍?/p>
1、什么面向?qū)ο?首先了解幾個(gè)概念:
1、對(duì)象:對(duì)象是人們要進(jìn)行研究的任何事物。具體一點(diǎn)講就是研究對(duì)象。它可以是有形實(shí)體,也可以是作用、事件、性能說(shuō)明等,當(dāng)然,如果女朋友成為你研究的對(duì)象時(shí),對(duì)象也可以是你的女朋友。
2、對(duì)象的狀態(tài)和行為:對(duì)象有自身的狀態(tài),比如你的女朋友有她的姓名(叫小麗)、年齡(22歲)、工作單位等。對(duì)象還有操作,用于改變對(duì)象的狀態(tài),對(duì)象及其操作就是對(duì)象的行為,比如"小麗.跳槽到(某公司)"這個(gè)行為將使她的工作單位這個(gè)狀態(tài)發(fā)生變化。
3、類(lèi):具有相同或相似性質(zhì)的對(duì)象的抽象就是類(lèi)。如桃樹(shù)、李樹(shù)、樟樹(shù)等是具體的樹(shù),抽象之后得到"樹(shù)"這個(gè)類(lèi)。類(lèi)具有屬性,屬性是狀態(tài)的抽象,如一棵李樹(shù)的高度是3米,樟樹(shù)是10米,樹(shù)則抽象出一個(gè)屬性"高度"。類(lèi)具有操作,它是對(duì)象行為的抽象。
4、類(lèi)的結(jié)構(gòu):有兩種,一種是"一般-具體"結(jié)構(gòu),如植物、樹(shù)都是類(lèi),它們之間是抽象到具體的關(guān)系,即樹(shù)是一種(is a)植物。還有一種就是"整體-部分"結(jié)構(gòu),如計(jì)算機(jī)是類(lèi)、CPU也是類(lèi),則計(jì)算機(jī)與CPU之間就是整體與部分的關(guān)系。
5、消息和方法:對(duì)象之間進(jìn)行通信的構(gòu)造叫做消息,比如小麗是一個(gè)對(duì)象,上司發(fā)出一個(gè)消息:小麗.出差到(深圳)。這樣,相應(yīng)的對(duì)象接收到這個(gè)消息就會(huì)給予響應(yīng),在這個(gè)消息中,小麗是對(duì)象名,出差到就是方法名,深圳就是參數(shù)。在類(lèi)中操作的實(shí)現(xiàn)過(guò)程叫做方法。上面的出差到(某地)這個(gè)方法如何實(shí)現(xiàn)呢,就是買(mǎi)車(chē)票,乘車(chē)到某地。這個(gè)過(guò)程就是方法。
總之,面向?qū)ο筮@種思想很符合人們觀察世界的自然思想。在很多時(shí)候我們可以用自然的觀點(diǎn)去理解面向?qū)ο蟆?/p>
2、面向?qū)ο蟮奶卣饔兴狞c(diǎn):對(duì)象唯一性、分類(lèi)性、繼承性和多態(tài)性。
3、面向?qū)ο蟮囊兀撼橄?、封裝性、共享性
4、面向?qū)ο蠹夹g(shù)強(qiáng)調(diào)的是對(duì)象結(jié)構(gòu)而不是程序結(jié)構(gòu)。
5、面向?qū)ο蟮拈_(kāi)發(fā)方法主要有以下幾種:Coad方法、Booch方法、OMT方法和OOSE方法,***的統(tǒng)一建模語(yǔ)言UML則不僅統(tǒng)一了Booch方法,OMT方法、OOSE方法,而且對(duì)其作了進(jìn)一上的發(fā)展,最終統(tǒng)一為大眾所接受的標(biāo)準(zhǔn)建模語(yǔ)言。
二、面向?qū)ο蟮哪P?簡(jiǎn)單應(yīng)用)
面向?qū)ο蟮哪P桶ㄈ齻€(gè),它們分別是:描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的對(duì)象模型、描述系統(tǒng)控制結(jié)構(gòu)的動(dòng)態(tài)模型和和描述系統(tǒng)功能的功能模型。這三種模型都涉及到數(shù)據(jù)、控制和操作等共同的概念,只是每種模型描述的側(cè)重點(diǎn)不同。這三種模型從三個(gè)不同但又密切相關(guān)的角度模擬目標(biāo)系統(tǒng),它們各自從不同的側(cè)面反映了系統(tǒng)的實(shí)質(zhì)性內(nèi)容,綜合起來(lái)則全面反映了對(duì)目標(biāo)系統(tǒng)的需求。
1、對(duì)象模型:它表示了靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)數(shù)據(jù)性質(zhì),描述了系統(tǒng)的靜態(tài)結(jié)構(gòu),它是從客觀世界實(shí)體的對(duì)象關(guān)系角度來(lái)描述,表現(xiàn)了對(duì)象的相互關(guān)系。該模型主要關(guān)系的是系統(tǒng)中對(duì)象的結(jié)構(gòu)、屬性和操作,使用了對(duì)象圖的工具來(lái)刻畫(huà),它是分析階段三個(gè)模型的核心,也是其他兩個(gè)模型的框架。涉及及的概念有,對(duì)象和類(lèi)、關(guān)聯(lián)和鏈。
2、動(dòng)態(tài)模型:是與時(shí)間和變化有關(guān)的系統(tǒng)性質(zhì)。該模型描述了系統(tǒng)的控制結(jié)構(gòu),它表示了瞬時(shí)的、行為化的系統(tǒng)控制性質(zhì),它關(guān)系的是系統(tǒng)的控制,操作的執(zhí)行順序,它從對(duì)象的事件和狀態(tài)的角度出發(fā),表現(xiàn)了對(duì)象的相互行為。該模型描述的系統(tǒng)屬性是觸發(fā)事件,事件序列、狀態(tài)、事件與狀態(tài)的組織。使用狀態(tài)圖作為描述工具。涉及的重要概念是事件、狀態(tài)、操作等。
3、功能模型:描述了系統(tǒng)的所有計(jì)算。功能模型指出發(fā)生了什么,動(dòng)態(tài)模型確定什么時(shí)候發(fā)生,而對(duì)象模型確定發(fā)生的客體。功能模型表明一個(gè)計(jì)算如何從輸入值得到輸出值,它不考慮所計(jì)算的次序。功能模型由多張數(shù)據(jù)流圖組成。數(shù)據(jù)流圖說(shuō)明數(shù)據(jù)流是如何從外部輸入、經(jīng)過(guò)操作和內(nèi)部存儲(chǔ)輸出到外部的。功能模型也包括對(duì)象模型中值的約束條件。功能模型說(shuō)明對(duì)象模型中操作的含義、動(dòng)態(tài)模型中動(dòng)作的意義以及對(duì)象模型中約束的意義。相關(guān)的概念有:數(shù)據(jù)流圖中的處理、數(shù)據(jù)流、動(dòng)作對(duì)象、數(shù)據(jù)存儲(chǔ)對(duì)象等。
三、面向?qū)ο蟮姆治?簡(jiǎn)單應(yīng)用)
面向?qū)ο蠓治龅哪康氖菍?duì)客觀世界的系統(tǒng)進(jìn)行建模。分析問(wèn)題有三種用途:用來(lái)明確問(wèn)題需求;為用戶和開(kāi)發(fā)人員提供明確需求;為用戶和開(kāi)發(fā)人員提供一個(gè)協(xié)商的基礎(chǔ),作為后繼的設(shè)計(jì)和實(shí)現(xiàn)的框架。通過(guò)分析,建立對(duì)象模型、動(dòng)態(tài)模型和功能模型。
四、面向?qū)ο蟮脑O(shè)計(jì)(領(lǐng)會(huì))
1、面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則:
(1)模塊化:對(duì)象就是模塊,它是把數(shù)據(jù)結(jié)構(gòu)和操作這些數(shù)據(jù)的方法緊密地結(jié)合在一起所構(gòu)成的模塊。
(2)抽象:包括過(guò)程抽象、數(shù)據(jù)抽象、規(guī)格說(shuō)明抽象及參數(shù)化抽象等。
(3)信息隱蔽:在面向?qū)ο蠓椒ㄖ?,信息隱蔽通過(guò)對(duì)象的封裝性來(lái)實(shí)現(xiàn)。
(4)低耦合:低耦合是設(shè)計(jì)的一個(gè)重要標(biāo)準(zhǔn),應(yīng)該避免對(duì)象之間的高耦合,強(qiáng)調(diào)對(duì)象間的低耦合。
(5)高內(nèi)聚:在面向?qū)ο笤O(shè)計(jì)中存在三種內(nèi)聚:操作內(nèi)聚、類(lèi)內(nèi)聚及一般-具體內(nèi)聚,緊密的繼承耦合與高度的一般--具體內(nèi)聚是一致的。
2、面向?qū)ο笤O(shè)計(jì)的啟發(fā)規(guī)則:
(1)設(shè)計(jì)結(jié)果應(yīng)該清晰易懂
(2)一般--具體結(jié)構(gòu)的深度應(yīng)適當(dāng)
(3)設(shè)計(jì)簡(jiǎn)單的類(lèi)
(4)使用簡(jiǎn)單的協(xié)議
(5)使用簡(jiǎn)單的操作
(6)把設(shè)計(jì)變動(dòng)減至最小
五、面向?qū)ο蟮膶?shí)現(xiàn)(領(lǐng)會(huì))
面向?qū)ο髮?shí)現(xiàn)主要包括兩項(xiàng)工作,把面向?qū)ο笤O(shè)計(jì)結(jié)果翻譯成用某種程序設(shè)計(jì)語(yǔ)言寫(xiě)成的面向?qū)ο蟪绦?測(cè)試并調(diào)試面向?qū)ο蟪绦颉?/p>
在開(kāi)發(fā)過(guò)程,類(lèi)的實(shí)現(xiàn)是核心問(wèn)題。在用面向?qū)ο箫L(fēng)格所寫(xiě)的系統(tǒng)中,所有的數(shù)據(jù)都被封裝在類(lèi)的實(shí)例中,而整個(gè)程序則被封裝在一個(gè)更高級(jí)的類(lèi)中。
【編輯推薦】