摘要:希賽網日前舉行了2025上半年系統分析師第一期模考活動,現將2025上半年系統分析師第一期??荚嚲恚ㄕ撐模┓窒斫o大家。有需要的同學可以在本文資料處下載??荚嚲淼腜DF版本。
希賽網2025上半年系統分析師第一期模考活動已結束,現將2025上半年系統分析師第一期??荚嚲恚ㄕ撐模┓窒斫o大家。模考試卷PDF版本可在本文文首本文資料處或文末的資料下載欄目下載。
2025上半年系統分析師第一期??荚嚲恚ㄕ撐模┎糠秩缦拢?/p>
論面向對象設計方法及其應用
系統設計是根據系統分析的結果,運用系統科學的思想和方法,設計出能滿是用戶所要求的目標(或目的)系統的過程。面向對象設計方法是一種接近現實的系統設計方法。在該方法中,數據結構和在數據結構上定義的操作算法封裝在一個對象之中。
請圍繞“面向對象設計方法及其應用”論題,依次從以下三個方面進行論述。
1.概要敘述你參與管理和開發的軟件項目以及你在其中所承擔的主要工作。
2.面向對象設計方法包含多種設計原則,請簡要描述其中的三種設計原則。
3.具體闡述你參與管理和開發的項目是如何遵循這三種設計原則進行信息系統設計的。
試題答案:
一、應結合自己參與的信息系統項目,說明在其中所承擔的工作。
二、面向對象設計的原則:
對于OO系統的設計而言,在支持可維護性的同時,提高系統的可復用性是一個至關重要的問題,如何同時提高系統的可維護性和可復用性,是OOD需要解決的核心問題之一。在OOD中,可維護性的復用是以設計原則為基礎的。常用的OOD原則包括開閉原則、里氏替換原則、依賴倒置原則、組合/聚合復用原則、接口隔離原則和最少知識原則等。這些設計原則首先都是面向復用的原則,遵循這些設計原則可以有效地提高系統的復用性,同時提高系統的可維護性。
1. 開閉原則
開閉原則是指軟件實體應對擴展開放,而對修改關閉,即盡量在不修改原有代碼的情況下進行擴展。此處的“實體”可以指一個軟件模塊、一個由多個類組成的局部結構或一個獨立的類。
應用開閉原則可擴展已有的系統,并為之提供新的行為,以滿足對軟件的新需求,使變化中的系統具有一定的適應性和靈活性。對于已有的軟件模塊,特別是最重要的抽象層模塊不能再修改,這就使變化中的系統有一定的穩定性和延續性,這樣的系統同時滿足了可復用性與可維護性。在OOD中,開閉原則一般通過在原有模塊中添加抽象層(例如,接口或抽象類)來實現,它也是其他OOD原則的基礎,而其他原則是實現開閉原則的具體措施。
2. 里氏替換原則
里氏替換原則由Barbara Liskov提出,其基本思想是,一個軟件實體如果使用的是一個基類對象,那么一定適用于其子類對象,而且覺察不出基類對象和子類對象的區別,即把基類都替換成它的子類,程序的行為沒有變化。反過來則不一定成立,如果一個軟件實體使用的是一個子類對象,那么它不一定適用于基類對象。
在運用里氏替換原則時,盡量將一些需要擴展的類或者存在變化的類設計為抽象類或者接口,并將其作為基類,在程序中盡量使用基類對象進行編程。由于子類繼承基類并實現其中的方法,程序運行時,子類對象可以替換基類對象,如果需要對類的行為進行修改,可以擴展基類,增加新的子類,而無需修改調用該基類對象的代碼。
3. 依賴倒置原則
依賴倒置原則是指抽象不應該依賴于細節,細節應當依賴于抽象。換言之,要針對接口編程,而不是針對實現編程。在程序代碼中傳遞參數時或在組合(或聚合)關系中,盡量引用層次高的抽象層類,即使用接口和抽象類進行變量類型聲明、參數類型聲明和方法返回類型聲明,以及數據類型的轉換等,而不要用具體類來做這些事情。為了確保該原則的應用,一個具體類應當只實現接口和抽象類中聲明過的方法,而不要給出多余的方法,否則,將無法調用到在子類中增加的新方法。
實現開閉原則的關鍵是抽象化,并且從抽象化導出具體化實現,如果說開閉原則是OOD的目標的話,那么依賴倒置原則就是OOD的主要機制。有了抽象層,可以使得系統具有很好的靈活性,在程序中盡量使用抽象層進行編程,而將具體類寫在配置文件中,這樣,如果系統行為發生變化,則只需要擴展抽象層,并修改配置文件,而無需修改原有系統的源代碼,在不修改的情況下來擴展系統功能,滿足開閉原則的要求。依賴倒置原則是COM、CORBA、EJB、Spring等技術和框架背后的基本原則之一。
4. 組合/聚合復用原則
組合/聚合復用原則又稱為合成復用原則,是在一個新的對象中通過組合關系或聚合關系來使用一些已有的對象,使之成為新對象的一部分,新對象通過委派調用已有對象的方法達到復用其已有功能的目的。簡單地說,就是要盡量使用組合/聚合關系,少用繼承。
在OOD中,可以通過兩種基本方法在不同的環境中復用已有的設計和實現,即通過組合/聚合關系或通過繼承,但首先應該考慮使用組合/聚合,組合/聚合可以使系統更加靈活,類與類之間的耦合度降低,一個類的變化對其他類造成的影響相對較少;其次才考慮繼承,在使用繼承時,需要嚴格遵循里氏替換原則,有效使用繼承會有助于對問題的理解,降低復雜度,而濫用繼承反而會增加系統構建和維護的難度,以及系統的復雜度。
通過繼承來進行復用的主要問題在于繼承復用會破壞系統的封裝性,因為繼承會將基類的實現細節暴露給子類,由于基類的內部細節通常對子類來說是透明的,所以這種復用是透明的復用,又稱為白盒復用。如果基類發生改變,那么子類的實現也不得不發生改變;從基類繼承而來的實現是靜態的,不可能在運行時發生改變,沒有足夠的靈活性;而且繼承只能在有限的環境中使用(例如,如果類沒有聲明不能被繼承)。
由于組合或聚合關系可以將已有的對象(也可稱為成員對象)納入到新對象中,使之成為新對象的一部分,新對象可以調用已有對象的功能,這樣做可以使得成員對象的內部實現細節對于新對象是不可見的,因此,這種復用又稱為黑盒復用。相對繼承關系而言,其耦合度較低,成員對象的變化對新對象的影響不大,可以在新對象中根據實際需要有選擇性地調用成員對象的操作。組合/聚合復用可以在運行時動態進行,新對象可以動態地引用與成員對象類型相同的其他對象。
一般而言,如果兩個類之間是“Has-A”的關系,則應使用組合或聚合;如果是“Is-A”關系,則可使用繼承?!癐s-A”是嚴格的分類學意義上的定義,意思是一個類是另一個類的“一種”。而“Has-A”則不同,它表示某一個角色具有某一項責任。
5. 接口隔離原則
接口隔離原則是指使用多個專門的接口,而不使用單一的總接口。每個接口應該承擔一種相對獨立的角色,不多不少,不干不該干的事,該干的事都要干。這里的“接口”通常有兩種不同的含義,一種是指一個類型所具有的方法特征的集合,僅僅是一種邏輯上的抽象;另外一種是指某種語言具體的接口定義,有嚴格的定義和結構,例如,Java語言中的interface。對于這兩種不同的含義,接口隔離原則的表達方式和含義都有所不同。
如果將“接口”理解成一個類型所提供的所有方法的特征集合,這就是一種邏輯上的概念,接口的劃分將直接帶來類型的劃分。在這種情況下,可以將接口理解成角色,一個接口就只是代表一個角色,每個角色都有它特定的一個接口,此時,接口隔離原則可以稱為角色隔離原則。
如果將“接口”理解成狹義的特定語言的接口,接口隔離原則表達的意思則是指接口僅僅提供客戶端需要的行為,客戶端不需要的行為則隱藏起來,應當為客戶端提供盡可能小的單獨的接口,而不要提供大的總接口。在面向對象編程語言中,如果需要實現一個接口,就需要實現該接口中定義的所有方法,因此,大的總接口使用起來不一定很方便,為了使接口的職責單一,需要將大接口中的方法根據其職責不同,分別放在不同的小接口中,以確保每個接口使用起來都較為方便,并都承擔單一角色。
6. 最少知識原則
最少知識原則也稱為迪米特法則(Law of Demeter),是指一個軟件實體應當盡可能少地與其他實體發生相互作用。這樣,當一個模塊修改時,就會盡量少的影響其他的模塊,擴展會相對容易。這是對軟件實體之間通信的限制,它要求限制軟件實體之間通信的寬度和深度。
最少知識原則可分為狹義原則和廣義原則。在狹義原則中,如果兩個類之間不必彼此直接通信,那么這兩個類就不應當發生直接的相互作用;如果其中的一個類需要調用另一個類的某一個方法,可以通過第三者轉發這個調用。狹義原則可以降低類之間的耦合,但是會在系統中增加大量的小方法并散落在系統的各個角落,它可以使一個系統的局部設計簡化,因為每個局部都不會和遠距離的對象有直接的關聯,但是也會造成系統的不同模塊之間的通信效率降低,使得系統的不同模塊之間不容易協調。
廣義原則是指對對象之間的信息流量、流向和信息的影響的控制,主要是對信息隱藏的控制。信息的隱藏可以使各個子系統之間解耦,從而允許它們獨立地被開發、優化、使用和修改,同時可以促進軟件的復用,由于每個模塊都不依賴于其他模塊而存在,因此,每個模塊都可以獨立地在其他的地方使用。系統的規模越大,信息的隱藏就越重要,而信息隱藏的重要性也就越明顯。
最少知識原則的主要用途在于控制信息的過載。在將最少知識原則運用到系統設計中時,要注意以下幾點:
(1)在類的劃分上,應當盡量創建松耦合的類,類之間的耦合度越低,就越有利于復用。一個處在松耦合中的類一旦被修改,不會對關聯的類造成太大波動。
(2)在類的結構設計上,每個類都應當盡量降低其屬性和方法的訪問權限。
(3)在類的設計上,只要有可能,一個類型應當設計成不變類。
(4)在對其他類的引用上,一個對象對其他對象的引用應當降到最低。
三、第三個問題要根據項目的實際情況來寫自己是怎么做的,遇到什么樣的問題,如何解決的。
軟考高項紙質版資料領取活動來啦!
活動截止12月15日
趕緊掃碼參與活動吧!
熱門:信息系統監理師備考 | 網絡工程師備考 | 軟件設計師備考
推薦:信息系統項目管理師網絡課堂 | 2025下半年軟考真題答案及解析
課程:信息系統項目管理師報考指南 | PMP課程
軟考備考資料免費領取
去領取
專注在線職業教育24年