面向對象開發方法
出自 MBA智库百科(https://wiki.mbalib.com/)
面向對象開發方法(ObjectOriented,OO)又稱:快速原型法
目錄 |
傳統的功能分解方法只能單純反映管理功能結構的狀況,數據流程模型(DFD)只是側重反映事物的信息特征和流程,信息模擬只能被動地迎合實際問題需要的做法。結構化系統分析與設計方法:描述客觀世界的問題領域與軟體系統結構之間的不一致,結構化系統分析與設計只註重某些特定方面:
如:DFD--反映數據的特性和流向模型
業務流程圖--反映業務操作的細節和程式模型
1、面向對象的(需求)分析OOA
2、面向對象的設計OOD
3、面向對象的程式OOP
客觀世界是由各種各樣的對象組成的,每種對象都有各自的內部狀態和運動規律,不同對象之間的相互作用和聯繫就構成了各種不同的系統。
在設計和實現一個客觀系統時,在滿足需求的條件下,把系統設計成一些不可變的(相對固定)部分組成的最小集合(最好的設計)。這些不可變的部分就是所謂的對象。
以對象為主體的OO方法的進一步解釋。
1、系統調查和需求分析:對系統將要面臨的具體管理問題以及用戶對系統開發的需求進行調查研究,即先弄清要乾什麼的問題。
2、分析問題的性質和求解問題:在繁雜的問題域中抽象地識別出對象以及其行為、結構、屬性、方法等。一般稱之為面向對象的分析,即OOA。
3、整理問題:對分析的結果作進一步的抽象、歸類、整理,並最終以範式的形式將它們確定下來。一般稱之為面向對象的設計,即OOD。
4、程式實現:用面向對象的程式設計語言將上一步整理的範式直接映射(即直接用程式設計語言來取代)為應用軟體。一般稱之為面向對象的程式,即OOP。
5、識別客觀世界中的對象以及行為,分別獨立設計出各個對象的實體;分析對象之間的聯繫和相互所傳遞的信息,由此構成信息系統的模型;由信息系統模型轉換成軟體系統的模型,對各個對象進行歸併和整理,並確定它們之間的聯繫;由軟體系統模型轉換成目標系統。
1、封裝性。面向對象方法中,程式和數據是封裝在一起的,對象作為一個實體,其操作隱藏在方法中,其狀態由對象的"屬性"來描述,並且只能通過對象中的"方法"來改變,從外界無從得知。封裝性構成了面向對象方法的基礎。因而,這種方法的創始人Codd和YOuMn認為,面向對象就是"對象+屬性+方法"。
2、抽象性。面向對象方法中,把從具有共同性質的實體中抽象出的事物本質特征概念,稱為"類"(Class),對象是類的一個實例。類中封裝了對象共有的屬性和方法,通過實例化一個類創建的對象,自動具有類中規定的屬性和方法。
3、繼承性。繼承性是類特有的性質,類可以派生出子類,子類自動繼承父類的屬性與方法。這樣,在定義子類時,只須說明它不同於父類的特性,從而可大大提高軟體的可重用性。
4、動態鏈接性。對象間的聯繫是通過對象間的消息傳遞動態建立的。
在大型管理信息系統開發中,若不經自頂向下的整體劃分,而是一開始就自底向上地採用OO方法開發系統,會造成系統結構不合理、各部分關係失調等等問題。OO方法和結構化方法在系統開發中相互依存、不可替代。
為什麼需要面向對象方法[1]
軟體作為系統的重要元素,是最複雜、最具智慧型的人類產品。軟體是一種無形的媒介,開發人員通常難以精確估計它的特性。除了非常小的系統之外,軟體開發是需要一組人員共同努力才能完成,而人的因素又會進一步使問題複雜化。雖然軟體開發的工具越來越先進,人們的經驗也越來越豐富,但是需要解決的問題卻越來越複雜。人們發現開發出的軟體系統常常出現開發周期長,費用超過預算,最終產品又不能滿足用戶需求,系統的可維護性差,產生軟體危機。
軟體工程的方法就是基於軟體危機的問題提出來的。最廣泛使用的模型是結構化生命周期模型。它將軟體開發分為幾個不同的階段需求分析、系統設計、系統實現、系統測試、試運行及維護等。它的目的是模仿工程中的一些方法,將軟體開發規範化,每階段形成一定格式的文檔,下一階段以上一階段的文檔為原料。這種方法可以控制軟體開發的進度,合理分配人力和資金,以及最重要的因素—實現軟體的可靠性及可維護性。
結構化分析與設計方法是應用相當廣泛而又成熟的軟體工程設計和分析方法。它是在結構化程式設計的基礎上提出來的。結構化分析以數據流圖為工具,實現對問題空間即需求的描述。
它主要以數據流、數據變換為考慮對象,從這個角度來描述整個系統的狀況。結構化設計以數據流圖為藍本,提出其數據變換部分,加以功能分解,一直到最小的功能元素單位。然後開發人員據此進行程式設計。
但人們在應用傳統的結構化生命周期模型的過程中發現了許多難以剋服的問題。如:這種方法要求分析人員在現實世界中跟蹤數據的流動,但許多系統不以數據流為主幹,在這種情況下數據流圖DFD就不是十分有效。
(1)這種方法要求分析人員在現實世界中跟蹤數據的流動,但許多系統不以數據流為主幹,在這種情況下數據流圖DFD就不是十分有效。
(2)劃分加工十分困難,不知道哪一個劃分是最好的。
(3)數據字典的規模非常大,這使得需求分析中的交流問題變得非常困難。
(4)數據流方法不強調數據結構,只說明數據存貯。
(5)結構化分析與結構化設計之間的過渡非常困難。
這一方面來自構造方法的轉換,另一方面來自添加實施細節。
(6)生命周期模型必須在分析階段結束後才能進入設計階段,設計階段完成後才能進入實現階段,這樣的話,上一階段的錯誤或不完整性就會帶到下一階段。
面向對象的方法正是拓寬軟體開發道路的一種方法。目前,運用面向對象方法的比例雖然不是很大,但採用這種方法成功的比例卻遠遠高於其他方法。面向對象方法的優越性來自以下幾個方面:
(1)面向對象的方法更接近於人類的自然思維。人類在認識和理解現實世界中普遍運用的三個構造法則是區分對象及其屬性、區分整體對象及其組成部分、區分及形成不同對象類。而面向對象正是基於對象及屬性、類屬及成員、整體及其部分這些概念基礎之上的。因而它必然更容易被理解和運用。
(2)系統分析、系統設計及實現之間採用同樣的角度看待問題甚至同樣的表示方法來描述間題,它們之間的連接是自然的無縫連接。
(3)面向對象的方法將對象的屬性及服務視為一個整體。
這更符合客觀世界的規律,從而使其理解與實現起來更加容易,進一步減少維護的費用。
(4)繼承的方法一方面符合客觀世界的規律,一方面加強代碼重用的可能性,以便提高軟體的開發效率。
(5)信息隱蔽原理使系統在變化的環境中有良好的適應性,從而使整個系統更加穩定和易於維護。
總之,面向對象的方法一方面更易於人們理解並映射現實世界,另一方面可以提高軟體開發效率、可靠性及可維護性。
- ↑ 張曉鵬,董寧. 面向對象開發方法及應用[J]. 鐵道學報, 1996,(S2)
啊實打實