国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

簡析面向對象設計準則

2016-03-05 00:15張茵
無線互聯科技 2015年6期
關鍵詞:準則

張茵

摘要:面向對象設計就是用面向對象觀點建立求解空間模型的過程。通過面向對象分析得出的問題域模型為建立求解空間模型奠定了堅實基礎,分析與設計本質上是_個多次反復迭代的過程,面向對象分析和面向對象設計的界限尤其模糊。文章主要介紹了為獲得優(yōu)秀設計結果應該遵循的基本準則和通過經驗得出的幾條有助于提高設計質量的啟發(fā)式規(guī)則。有助于讀者更加清楚的了解面向對象設計的優(yōu)勢。

關鍵詞:面向對象設計;準則;啟發(fā)式規(guī)則

0 引言

所謂優(yōu)秀設計,就是權衡了各種因素,從而使得系統(tǒng)在其整個生命周期中的總開銷最小的設計。指導軟件設計的基本原理在進行面向對象設計時仍然成立,但是增加了一些與面向對象方法密切相關的新特點,從而具體化為下列面向對象設計準則。

1 面向對象設計準則

1.1 模塊化

面向對象軟件開發(fā)模式,很自然地支持了把系統(tǒng)分解成模塊的設計原理:對象就是模塊。它是把數據結構和操作這些數據的方法緊密的結合在一起所構成的模塊。

1.2 抽象

面向對象方法不僅支持過程抽象,而且支持數據抽象。類實際上是一種抽象數據類型,它對外開放的公共接口構成了類的規(guī)格說明,這種接口規(guī)定了外界可以使用的合法操作符,利用這些操作符可以對類實例中包含的數據進行操作。使用者無須知道這些操作符的實現算法和類中數據元素的具體表示方法,就可以通過這些操作符使用類中定義的數據。通常這類抽象稱為規(guī)格說明抽象。

某些面向對象的程序設計語言還支持參數化抽象。所謂參數化抽象,是指當描述類的規(guī)格說明時不具體制定所要操作的數據類型,而是把數據類型作為參數。這使類的抽象程度更高,應用范圍更廣,可重用性更高。

1.3 信息隱藏

在面向對象方法中,信息隱藏通過對象的封裝性實現:類結構分離了接口和實現,從而支持了信息隱藏。對于類的用戶來說,屬性的表示方法和操作的實現算法都應該是隱藏的。

1.4 弱耦合

耦合是指一個軟件結構內不同模塊之間互連的緊密程度。在面向對象方法中,對象是最基本的模塊,耦合主要指不同對象之間互相關聯的緊密程度。弱耦合是優(yōu)秀設計的一個重要標準,因為這有助于使得系統(tǒng)中某一部分的變化對其他部分的影響降到最低程度。

如果一類對象過多依賴其他類對象完成自己的工作,不僅給理解、測試或修改這個類帶來很大困難,而且還將大大降低該類的可重用性和可移植性。類之間的這種相互依賴關系是緊耦合。對象不可能是完全孤立的,當兩個對象必須相互聯系相互依賴時,應該通過類的協議實現耦合,不應該依賴于類的具體實現細節(jié)。

1.4.1 交互耦合

如果對象之間的耦合通過消息連接來實現,這種耦合叫交互耦合。為使交互耦合盡可能松散,應遵循下述準則:

(1)盡量降低消息連接的復雜程度。應該盡量減少消息中包含的參數個數,降低參數的復雜程度。

(2)減少對象發(fā)送的消息數。

1.4.2 繼承耦合

與交互耦合相反,應該提高繼承耦合程度。繼承是一般化類與特殊類之間耦合的一種形式。從本質上看,通過繼承關系結合起來的基類和派生類,構成了系統(tǒng)中粒度更大的模塊。因此它們彼此之間應該結合的越緊密越好。

為獲得緊密的繼承耦合,特殊類應該確實是對它的一般化類的一種具體化。如果一個派生類擯棄了它基類的許多屬性,他們之間是松耦合。

1.5 強內聚

內聚衡量一個模塊內各個元素彼此結合的緊密程度。也可以把內聚定義為:設計中使用的一個構件內的各個元素,對完成一個定義明確的目的所作出的貢獻程度。在設計時應該力求做到高內聚。在面向對象設計中存在3種內聚:

(1)服務內聚。一個服務應該完成一個且僅完成一個功能。

(2)類內聚。設計類的原則是,一個類應該只有一個用途,它的屬性和服務應該是高內聚的,類的屬性和服務應該全都是完成該類對象的任務所必需的,其中不包括無用的屬性或服務。如果某個類有多個用途,通常應該把它分解成多個專用的類。

(3)一般特殊內聚。設計出的一般特殊結構,應該符合多數人的概念,這種結構應該是對相應的領域知識的正確抽取。

緊密的繼承耦合與高度的一般特殊內聚是一致的。

1.6 可重用性

軟件重用是提高軟件開發(fā)生產率和目標系統(tǒng)質量的重要途徑。重用基本上從設計階段開始。重用有兩方面的含義:盡量使用已有的類;如果確實需要創(chuàng)建新類,則在設計這些新類的協議時,應該考慮將來的可重復使用性。

2 啟發(fā)規(guī)則

人們使用面向對象方法學開發(fā)軟件歷史雖然不長,但也積累了一些經驗??偨Y這些經驗得出了幾條啟發(fā)規(guī)則,它們往往能幫助軟件開發(fā)人員提高面向對象設計的質量。

2.1 設計結果應該清晰易懂

使設計結構清晰、易讀、易懂,是提高軟件可維護性和可重用性的重要措施。保證設計結果清晰易懂的主要因素如下:

(1)用詞一致。名字與它所代表的事物一致,應該盡量使用人們習慣的名字。

(2)使用已有的協議。如果開發(fā)同一軟件的其他設計人員已經建立了類的協議,應該使用這些已有的協議。

(3)減少消息模式數目。如果已有標準的消息協議,設計人員應該遵循這些協議。如果確需自己建立消息協議,應該盡量減少消息模式的數目,只要可能,就使消息具有一致的模式。

(4)避免模糊的定義。一個類的用途應該是有限的,而且應該從類名可以較容易的推想它的用途。

2.2 一般一特殊結構的深度應適當

應該使類等級中包含的層次數適當。在一個中等規(guī)模的系統(tǒng)中,類等級層次數應保持為7-2到7+2范圍內。不應該僅僅從方便編碼的角度出發(fā)隨意創(chuàng)建派生類,應該使一般特殊結構與領域知識或常識保持一致。

2.3 設計簡單的類

盡量設計小而簡單的類,以便于開發(fā)和管理。當類很大的時候,要記住它的所有服務是非常困難的。如果一個類的定義不超過一頁紙,則使用這個類是比較容易的。為使類保持簡單,應該注意以下幾點。

(1)避免包含過多的屬性。屬性過多通常表明這個類過分復雜,它所完成的功能可能太多了。

(2)有明確的定義。為了使類的定義明確,分配給每個類的任務應該簡單,最好能用一兩個簡單語句描述它的任務。

(3)盡量簡化對象之間的合作關系。如果需要多個對象協同配合才能做好一件事,則破壞了類的簡明性和清晰性。

(4)不要提供太多服務。一個類提供的服務過多,表明這個類過分復雜,一個類提供的服務不要超過7個。

在開發(fā)大型軟件系統(tǒng)時,遵循上述啟發(fā)規(guī)則也會帶來另一個問題:設計出大量較小的類,這同樣會帶來一定復雜性。解決這個問題的辦法,是把系統(tǒng)中的類按邏輯分組,也就是劃分“主題”。

2.4 使用簡單的協議

消息中的參數不要超過3個。經驗表明,通過復雜消息相互關聯的對象是緊耦合的,對一個對象的修改往往導致其他對象的修改。

2.5 使用簡單的服務

面向對象設計出來的類中的服務通常都很小,一般只有3-5行源程序語句,可以用僅含一個動詞和一個賓語的簡單句子描述它的功能。如果一個服務中包含了過多的源程序語句,或語句嵌套層次太多,或使用了復雜的CASE語句,應該仔細檢查這個服務,設法分解或簡化它。應該盡量避免使用復雜的服務。如果需要在服務中使用CASE語句,通常應該考慮用一般特殊結構代替這個類的可能性。

2.6 把設計變動減至最小

設計的質量越高,設計結果保持不變的時間也越長。即使出現必須修改設計的情況,也應該使修改的范圍盡可能小。在設計的早期階段,變動較大,隨著時間推移,設計方案日趨成熟,改動也越小。

3 結語

分析是提取和整理用戶需求,建立問題域精確模型的過程。設計則是把分析得到的需求轉變成符合成本和質量要求的、抽象的系統(tǒng)實現方案的過程。系統(tǒng)設計確定實現系統(tǒng)的策略和目標系統(tǒng)的高層結構,對象設計確定解空間中的類、關聯、接口形式以及實現服務的算法。面向對象設計就是用面向對象觀點建立求解域模型的過程。許多分析結果可以直接映射成設計結果,在設計過程中又會加深和補充對系統(tǒng)需求的理解,從而進一步完善分析結果。

猜你喜歡
準則
具非線性中立項的二階延遲微分方程的Philos型準則
格賴斯準則何以適用于法律解釋
新準則下政府補助的會計核算及涉稅處理
廉潔自律準則歌
p-超循環(huán)嵌入子群的一個判別準則
基于極大似然準則與滾動時域估計的自適應UKF算法
基于Canny振蕩抑制準則的改進匹配濾波器
高階非線性泛函微分方程的振動準則
學學準則
學習貫徹《準則》和《條例》貴在自覺