面向對象分析與設計—基本概念部分


我將面向對象分析與設計技術總結概括為三部分

第一部分:面向對象基本概念

第二部分:面向對象分析部分

第三部分:面向對象設計部分

第一部分 面向對象基本部分

 1.1 軟件開發過程概述

 軟件開發過程

 

 

 

 

 

 

 

 

 

 

 

 

 

1.2 面向對象技術

  面向對象(Object-oriented)技術是一種新型程序設計方法,或者說它是一種新的程序設計范型,其基本思想是使用對象、類、封裝、繼承、聚合、關聯、消息、多態等基本概念來構造系統的軟件開發方法。它充分體現了分解、抽象、模塊化、信息隱蔽等思想,可以有效地提高軟件生產率、縮短軟件開發時間、提高軟件質量,是控制軟件復雜性的有效途徑。

(1)傳統結構化方法與面向對象方法比較?

  傳統的結構化方法着眼於一個信息系統需要什么樣的方法和處理過程。以過程抽象來對待系統的需求,其主要思想就是對問題進行功能分解,如果分解后得到的功能過大,那么再對這些功能進行分解,直到最后分解得到的功能能比較方便地處理和理解為止。它從算法的角度進行建模,所有的軟件都用過程或者函數作為其主要構造塊,所以,具有模型脆弱、難以適應需求的變動、維護較困難等特點。

  與傳統的結構化方法相比,面向對象方法在描述和理解問題域時采用截然不同的方法。其基本思想是,對問題域進行自然分割,以更接近人類思維方式建立問題域模型,從而使設計出的軟件盡可能直觀地描述現實世界,具有更好的可維護性,能適應用戶需求的變化。

面向對象技術優點:

  首先,用面向對象技術開發的系統比較穩定,較小的需求變化不會導致大的系統結構的改變。

  其次,用面向對象技術開發的系統易於理解。結構化方法和面向對象方法對現實世界采用了不同的映射方法。在結構化方法中,現實世界被映射為功能的集合;在面向對象方法中,現實世界中的實體及其相互關系被映射為對象及對象間的關系,實體之間的相互作用被映射為對象間的消息發送,以及其他類似的各種映射關系。

  第三,采用面向對象技術開發的系統具有更好的適應性,能更好地適應用戶需求的變化,有助於改造大型軟件系統。

  第四,用面向對象技術開發的系統具有更高的可靠性,有助於軟件的維護與復用。

  第五,面向對象技術有助於提高軟件的質量和生產率。

(2)面向對象的基本原則

  抽象、封裝、委托、分類、繼承

1.3 面向對象基本概念

   對象:對象(object)是系統中用來描述客觀事物的一個實體,它是構造系統的一個基本單位。一個對象由一組屬性和對這組屬性進行操作的一組方法組成。屬性是用來描述對象靜態特征的一個數據項,操作是用來描述對象動態特征的一個動作序列。對象之間通過消息通信。

  類:類(class)是具有相同屬性和方法的一組對象的集合,它為屬於該類的全部對象提供一個統一的抽象描述。類是靜態的,類的語義和類之間的關系在程序執行前就已經定義好了,而對象是動態的,對象是在程序執行時被創建和刪除的。

  封裝:封裝就是把對象的屬性和方法結合成一個獨立的系統單位,並盡可能地隱藏對象的內部細節。封裝使一個對象形成兩個部分:接口部分和實現部分,對於用戶來說,接口部分是可見的,而實現部分是不可見的。封裝提供了兩種保護,首先封裝可以保護對象,防止用戶直接存取對象的內部細節;其次,封裝也保護了客戶端,防止對象實現部分的變化可能產生的副作用,即實現部分的改變不會影響到客戶端的改變。

  繼承:特殊類(子類)擁有其一般類(父類)的生命屬性與操作,稱作特殊類對一般類的繼承。在子類中可以增加或重新定義所繼承的屬性或方法,如果是重新定義,則稱為覆蓋(override)。與覆蓋很類似的一個概念是重新(overload),重載指的是一個類中有多個同名的方法,但這些方法在操作數或/和操作數的類型上有區別。

  多態:多態指的是一個實體在不同上下文條件下具有不同意義或用法的能力。對象的多態通常是指一般類中定義的操作和屬性被特殊類繼承之后,可以具有不同的數據類型或表現出不同的行為。注意:多態屬於運行時的問題,而重載是編譯時的問題。

  example:Graph類中有一個draw方法,Circle和Rectangle類中繼承了draw方法,可以聲明一個Graph類型對象的變量,但在運行時,可以把Circle類型或Rectangle類型的對象賦值給變量,即變量所引用的對象在運行在運行時會有不同的形態。如果調用draw方法,則根據運行時該變量所引用Circle還是Rectangle,來決定調用Circle中的draw方法還是Rectangle中的draw方法。

  消息:消息是向對象發出的服務請求,它包含了提供服務的對象標識、服務標識、輸入信息和回答信息等。注意:消息不等同於函數調用。消息可以包括同步消息和異步消息,如果消息是異步的,則一個對象發送消息后,就繼續自己的活動,不等待消息接收者返回控制,而函數調用往往是同步的,消息的發送者要等待接收者返回。

1.4 常見軟件開發方法對比

1)噴泉模型:以用戶需求為動力,以對象為驅動的模型。生存期的各個階段可以相互重疊和多次反復,而且在項目的整個生存期中,嵌入了生存期

  優點:可以提高軟件項目開發效率、節省開發時間、適用於面向對象的軟件開發

  缺點:

  • 需要大量開發人員,不利於項目的管理;
  • 要求嚴格管理文檔,審核難度加大

(2)瀑布模型:將軟件生命周期划分為制定計划、需求分析、軟件設計、程序編寫、軟件測試、運行維護六個基本活動,且規定了自上而下、相互銜接的固定次序.各個階段完成之后都有評審,允許反饋,不支持用戶參與,要求預先確定需求

  優點:

  • 嚴格按預先計划步驟、順序執行
  • 為項目提供了按階段分的檢查點
  • 當完成一個任務后,只需關注后續階段

  缺點

  • 缺乏靈活性,太過線性理想化
  • 各個階段划分完全固定,階段之間產生了大量的文檔
  • 線性末期才能見到結果

  適用范圍:適用於需求易於完整定義,且不易變更的軟件系統

(3)快速原型模型:分為兩步走,第一步建立一個快速原型實現客戶、用戶交互;第二步,開發用戶滿意的產品

  優點:

  • 整合了”邊做邊改“和”瀑布模型“的優點
  • 生命周期短
  • 減少需求不明確帶來的開發風險
  • 適用於小型交互型系統

  缺點:可能導致系統設計差、效率低、難以維護

  適用范圍:適用於需求復雜、難以確定、動態變化的軟件系統

(4)增量模型:軟件產品被增量式地一塊塊設計、實現和測試,每個階段支付一個構件產品,整個產品被分成若干個構件,能夠較好的適應變化

  優點:

  • 有計划管理技術風險
  • 人員分配靈活,開始不需要大量人力
  • 先推出核心產品
  • 適用於需求經常變更的軟件開發過程

  缺點:若增量包之間存在相交的情況未很好的處理,則必須做全盤分析

  適用范圍:適用於技術風險較大,用戶需求較為穩定的軟件系統

(5)迭代模型:整個軟件開發過程被分為一系列短小的、固定長度的小項目,小項目被稱為一系列的迭代,每一次迭代都包括了需求分析、設計、實現和測試

  優點:

  • 降低了一個增量上的開支風險
  • 降低了產品無法按照既定進度進入市場的風險
  • 加快了開發工作的進度
  • 復用性更高

  缺點:對產品人員的節奏把控能力要求較高

  適用范圍:適用於需求難以確定,不斷變更的軟件系統

(6)螺旋模型:結合瀑布模型、快速原型模型、迭代模型,並引入了風險分析活動,以風險為驅動,開發過程被分為制定計划、風險分析、實施客戶評估

  優點:

  • 設計上的靈活性,可以在項目的各個階段進行變更
  • 以小的分段來構建大型系統,使成本計算變得簡單容易
  • 客戶始終參與每個階段的開發,保證了項目不偏離正確方向以及項目的可控性
  • 隨着項目推進,客戶始終掌握項目的最新信息 , 從而他或她能夠和管理層有效地交互
  • 客戶認可這種公司內部的開發方式帶來的良好的溝通和高質量的產品

  缺點:

  • 難以讓用戶確定演化方法的結果是可以控制的;
  • 建設周期長,而軟件更新速度較快,難以滿足用戶需求
  • 過多的迭代次數會增加開發成本,延遲提交時間

  適用范圍:適用需求難以確定,軟件開發風險較大的軟件系統

(7)敏捷開發模型:它是以人為核心、迭代、循序漸進的開發方法,即將項目分解成多個相互聯系,但也可以獨立運行的小項目,並分別完成

  優點:

  • 敏捷開發的高適應性,以人為本的特性
  • 更加的靈活並且能夠充分的利用了每個開發者的優勢

  缺點:項目周期很長,很難保證開發的人員不更換,而沒有文檔就會造成在交接的過程中出現很大的困難

 

參考書籍

《面向對象的系統分析》(第2版)      邵維忠  楊芙清  著

《UML面向對象技術教程》   王少鋒  編著


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM