軟體工程中的面向物件生命週期模型
面向物件生命週期模型將“物件”作為軟體工程過程的基礎。開發團隊首先觀察和分析他們打算開發的系統,然後定義需求。一旦過程結束,他們就專注於識別系統的物件。現在,物件可以是任何東西;它可以具有物理存在,例如客戶、汽車等。物件還構成無形元素,例如過程或專案。
面向物件生命週期模型的優勢
除了增強系統性能外,面向物件程式設計還提供一些優勢,例如:
因為它專注於資料並且易於處理問題領域。
它使用封裝和資料隱藏過程,允許開發人員構建防篡改系統。
它使軟體模組化,從而更容易管理和維護複雜的軟體。
它允許開發人員使用現有模型建立新模組,從而節省組織的時間和開發成本。
面向物件模型的主要目標
- 面向物件分析
- 面向物件設計
- 面向物件實現
面向物件分析 (OOA)
面向物件分析包括開發團隊評估系統並將需求組織為物件的過程。與傳統的結構化分析相反,OOA 很大程度上依賴於高階資料,例如**用例**和**物件模型**。
用例
用例是對使用者訪問您的網站或應用程式時的行為方式的書面描述。它包括每個使用者從進入到退出的目標。
物件模型
物件模型允許開發團隊在實現或程式設計之前建立軟體或系統架構模型。它有助於用物件和類定義軟體/系統。它告知開發人員:
- 不同模型之間的互動
- 繼承
- 封裝
- 其他型別的面向物件介面
OOA 從分析問題領域開始,透過徹底評估給定領域中的資訊來生成概念模型。有大量資料可從各種來源獲得,例如:
- 正式檔案
- 需求說明
- 透過利益相關者收集的主要資料
分析完成後,開發團隊準備一個概念模型,描述系統的功能和需求。
面向物件設計
這是面向物件生命週期模型的下一個開發階段,分析師在此階段設計所需系統的整體架構。系統被劃分為一組相互互動的子系統。分析師考慮系統分析中的規範。這完全是評估終端使用者對新系統的期望。
根據面向物件設計,系統被認為是物件的集合,每個物件處理特定的狀態資料。例如,在銀行軟體中,每個帳戶可能具有一些具有單獨資料和功能的專用物件。
面向物件設計的理念是建立一組在現實世界中看到的相互互動的物件。開發人員不是使用基於過程的結構化程式設計,而是透過資料結構建立物件。
每種程式語言都帶有多種資料型別,每種型別都包含各種變數。同樣,物件也具有一些預定義的資料型別。
面向物件設計的有用定義
類
類是指一組相似物件的集合。它被建立為一個藍圖,用於定義與物件具有某些相似性的變數和方法。
如上所述,面向物件設計與現實世界相似。假設您購買了一部智慧手機。現在,您的智慧手機只是世界上眾多“智慧手機”中的一種。我們可以將“智慧手機”視為一類物件,而您的智慧手機物件是該類物件的例項。智慧手機具有許多共同的狀態(作業系統、RAM 和主機板)和行為(播放音樂、通話、訊息傳遞)。但是,每部智慧手機的狀態都是獨立的,可能與其他智慧手機不同。
在製造智慧手機時,製造商可以使用精確的藍圖來製造許多智慧手機,因為它們具有共同的特徵。這允許製造商更有效地建立新的藍圖。
同樣,在面向物件程式設計中,開發人員可以使用許多相似的物件來建立藍圖。這稱為類。
抽象
抽象是開發人員用來構建類的本質。開發人員觀察一組相似的物件和重要的特徵來定義類。抽象分為兩部分——全域性抽象和區域性抽象。
全域性抽象是靜態的,為使用者提供一個有限時間的介面。同時,區域性抽象負責根據使用者/開發人員的要求提供檢視。
物件的抽象因應用程式而異。例如,在定義使用者的智慧手機類時,開發人員可能會設定諸如顏色、功能、價格等屬性。但是,對於製造公司,開發人員可能會設定包含諸如每部智慧手機的製造成本、質量控制、週轉時間等屬性。
繼承
面向物件設計中的繼承概念定義了“物件”重用的過程。開發人員可以使用類似的現有類定義新的類型別。
例如,掀背車、轎車、SUV 和四輪驅動車都是機動車輛的一種形式。因此,根據面向物件程式設計,我們可以將掀背車、轎車、SUV 等稱為機動車輛類的子類。同樣,機動車輛類是子類的超類。
現在,每個子類(轎車、掀背車、SUV)都繼承了超類的一些狀態(速度、節奏等)、方法和行為(制動、換擋)。但是,子類的狀態和行為並不限於超類提供給它們的內容。開發人員可以根據需要向子類新增變數和方法。
面向物件實現
在此階段,開發人員使用程式語言轉換類物件以及類和程式碼的相互關係。這是建立資料庫併為系統建立功能的階段。
面向物件方法側重於識別系統中的物件。開發人員仔細觀察每個物件以識別特徵和行為模式。開發人員確保物件完美地識別並響應事件。
讓我們將智慧手機螢幕視為一個物件,並將觸控特定圖示視為一個事件。現在,當用戶觸控圖示時,螢幕會開啟一個應用程式。這意味著智慧手機螢幕(物件)透過開啟應用程式來響應事件(觸控)。
面向物件實現方法支援三種基本模型
**物件模型** - 它描述物件及其相互關係。此模型將物件視為靜態的並丟棄其動態性。
**動態模型** - 此模型側重於與特定事件相關的各種物件的狀態變化。
**功能模型** - 這描述了整個系統中資料流的變化。
物件模型描述了系統的基本元素。當所有模型組合在一起時,它代表了系統的完整功能。