庾 佳
(蘇州健雄職業技術學院,江蘇 太倉 215400)
軟件開發人員在尋求問題的合格解決方案時通常會遵循某些軟件開發方法。這些解決方案作為計算機軟件來實現。
處理軟件復雜性的一種熟悉而且自然的方式是將系統劃分(或分解)為可管理的模塊(片段或組建)。將系統分解陳模塊由許多方式。有一些原則可以幫助我們獲得所期望的分解結果。
軟件開發人員通過使用模塊化[3](modularity)原則來控制系統的復雜性。在系統開發的早期,系統被分解為一組模塊,這些模塊由過程和函數組成。通常,一種自上而下(top-down)的開發策略將系統不斷地分解為更小的模塊。一般而言,高層次模塊指定需要進行什么操作,而低層次模塊則解決如何實現這些操作。圖1說明了將一個用于解決某個問題的系統進行了層次化分解的示意圖。

圖1 將系統分解成模塊Fig. 1 Decompose the system into modules
解決問題人員通常使用抽象來處理系統的復雜性。使用抽象的重點在于定義系統的某個部分或組建,使得該組建能夠被看成是一個黑箱[5]。所有早期的編程語言都是通過子過程構造(即過程和函數)來支持都想,稱為過程抽象(procedural abstraction)。進一些年來,面向對象語言所推崇的OOP技術,支持數據抽象(data abstraction),其目的在于將每種數據結構或對象看作是由數據屬性以及針對這些屬性的操作所組成。
信息隱藏的目的在于使一些不會影響到系統中的其他模塊的細節不可訪問,這樣,數據類型和它的操作便組成了一個封閉的系統。其中的細節對于其他的模塊是隱藏的。
擁有一個松散耦合度的系統有兩個優點:第一,使用其他的模塊來替換某個模塊,這樣只有很少的模塊會受這一變化的影響;第二,追蹤某個錯誤并隔離導致該錯誤的有缺陷模塊。
模塊的內在強度——模塊各個部分的相關性有多強——稱為內聚度。如果模塊的組成部分之間關聯性很強,而且都與該模塊的用途和目的密切相關,則稱該模塊具有很強的內聚度,即高內聚度。高內聚是指一個軟件模塊是由相關性很強的代碼組成,只負責一項任務,也就是常說的單一責任原則。
面向對象程序設計(Object Oriented Programming)方法簡稱 OOP方法[6-8],是一種把面向對象的思想應用于軟件開發過程中,指導開發活動的系統方法。相比較傳統的開發方法,面向對象的程序設計方法采用了自底向上的歸納、自頂向下的分解的方法相結合,通過對對象模型的建立,能夠真正建立基于用戶的需求,而且系統的可維護性大大改善。它是歸納和演繹思想的綜合體現,對于軟件設計起到了很好的作用。
(1)對象:對象是人們要進行研究的任何事物,從最簡單的整數到復雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規則、計劃或事件。
(2)對象的狀態和行為:對象具有狀態,一個對象用數據值來描述它的狀態。對象還有操作,用于改變對象的狀態,對象及其操作就是對象的行為。對象實現了數據和操作的結合,使數據和操作封裝于對象的統一體中。
(3)類:具有相同或相似性質的對象的抽象就是類。因此,對象的抽象是類,類的實體化就是對象。類具有屬性,它是對象的狀態的抽象,用數據結構來描述類的屬性。 類具有操作,它是對象的行為的抽象,用操作名和實現該操作的方法來描述。
(4)消息和方法:對象之間進行通信的結構叫做消息。在對象的操作中,當一個消息發送給某個對象時,消息包含接收對象去執行某種操作的信息。類中操作的實現過程叫做方法,一個方法有方法名。
(1)對象唯一性:每個對象都有自身唯一的標識,通過這種標識,可找到相應的對象。 在對象的整個生命期中,它的標識都不改變,不同的對象不能有相同的標識。
(2)繼承性:繼承性是子類自動共享父類數據結構和方法的機制,這是類之間的一種關系。 在類層次中,子類只繼承一個父類的數據結構和方法,則稱為單重繼承。在類層次中,子類繼承了多個父類的數據結構和方法,則稱為多重繼承。
(3)多態性:多態性使指相同的操作或函數、過程可作用于多種類型的對象上并獲得不同的結果。
所謂面向對象就是基于對象概念,以對象為中心,以類和繼承為構造機制,來認識、 理解、刻畫客觀世界和設計、構建相應的軟件系統。
建模是一個確定外部世界的某些特性或方面與某個特定問題或應用相關的過程,是抽象的一種形式。基于本文 1.2所提及的抽象形式,即過程抽象和數據抽象,在面向對象開發中,著眼點在于對象和他們之間的交互作用。
OOP方法首先是確定對象的數據,然后確定針對數據的操作。因此,對應用進行面向對象建模的基本著眼點是確定顯示世界對象以及它們與應用相關的交互作用。
(1)與人類的思維習慣一致:面向對象的思維方式是從人類考慮問題的角度出發,把人類解決問題的思維過程轉變為程序能夠理解的過程。面向對象程序設計能夠讓我們使用“類”來模擬世界中的抽象概念,用“對象”來模擬現實世界中的實體,從而用計算機解決現實問題。
(2)提高了程序的可重復性:一個類可以創建多個對象實例,增加了重用性。
(3)易維護:采用面向對象思想設計的結構,可讀性高,由于繼承的存在,即使改變需求,那么維護也只是在局部模塊,所以維護起來是非常方便和較低成本的。
(4)質量高[10]:在設計時,可重用現有的,在以前的項目的領域中已被測試過的類使系統滿足業務需求并具有較高的質量。
(5)效率高:在軟件開發時,根據設計的需要對現實世界的事物進行抽象,產生類。使用這樣的方法解決問題,接近于日常生活和自然的思考方式,勢必提高軟件開發的效率和質量。
(6)易擴展:由于繼承、封裝、多態的特性,自然設計出高內聚、低耦合的系統結構,使得系統更靈活、更容易擴展,而且成本較低。
OOP面向對象的核心概念是封裝了屬性和方法的類,以數據為中心,實現了類級別的代碼重用,同時因為采用了類,具有集成和多態特征,可以進一步重用代碼和簡化編程。面向對象程序設計技術必將應用到軟件設計中。