第一章 面向對象軟件工程與UML


這個OOAD講的都是很抽象的東西!老師說這個在現在的學習中用到的不是很多,但是以后出去工作的時候就會常用到的。

首先來了解OOAD是講什么的。

OOAD:Object Oriented Analysis Design,面向對象的分析和設計;

什么是面向對象?

  1. 面向對象(Object-Orientation, 簡稱OO)是一種系統建模技術。
  2. 面向對象編程(Object-Orientation Programming,簡稱OOP)是按照OO的方法學來開發程序的過程。
  3. 通過分析系統內對象的交互來描述或建模一個系統。
  4. 交互的對象最終以類的形式組織。
  5. OO的方法由三部分組成:過程,標識,規則。

 

對象

  1. 是一個客觀存在的、唯一的實體。
  2. 是面向對象編程過程中分析與解決問題的出發點與基礎。
  3. 擁有自己的標識、數據與行為。
  4. 可以簡單或復雜。
  5. 可以抽象或具體。
  6. 在OOP中是一個類的動態實例。
  7. 如Student—id,name,age(attribute)

--setName,getName,countScore(methods)

--new Student()

 

  1. 類是對象的模板。
  2. 對象通過類實例化產生。
  3. 一個類可以創建多個對象
 
   

 

 

OOAD

OOAD(Object Oriented Analysis and Design),面向對象的分析與設計。

OOAD是根據OO的方法學,對軟件系統進行分析與設計的過程。

--OOA  分析階段

--OOD  設計階段

 

定義OOA階段

  1. 分析階段主要解決以下問題

-- 建立針對業務問題域的清晰視圖。

-- 列出系統必須完成的核心任務。

-- 針對問題域建立公共詞匯表。

-- 列出針對此問題的最佳解決方案。

2.此階段要解決的核心問題是“What to do?”

 

定義OOD階段

1.設計階段主要解決以下問題

   -- 如何解決具體的業務問題。

   -- 引入系統工作所需的支持元素。

   -- 定義系統的實現策略

2. 此階段要解決的核心問題是“How to do?”

(一)軟件工程基本概念

 1 軟件危機    軟件的功能、規模及復雜性與日俱增,軟件的復雜性達到了它的開發者難以控制的程度

2 解決軟件危機  用工程學的方法進行軟件的開發與維護,並對軟件生成過程進行工程化的管理

3 軟件工程的定義  指導計算機軟件開發和維護的一門工程學科。

4 軟件工程的內容   針對軟件生命周期全過程及其每個具體階段的工程方法、技術細則、文檔規范、技術支持、管理制度、人員組織以及質量保證體系等。

5 軟件工程三要素:

   方法:完成軟件開發的各項任務的技術方法,為軟件開發提供 “如何做” 的技術  (面向對象方法)

   工具:為運用方法而提供的自動的或半自動的軟件工程的支撐環境(EA)

   過程:為了獲得高質量的軟件所需要完成的一系列任務的框架,它規定了完成各項任務的工作步驟,如何將軟件工程方法與軟件工具相結合,合理、及時地進行軟件開發  (基於原型的增量迭代軟件開發過程)

6 軟件的生命周期(一):  可行性分析階段   需求分析階段

    軟件的生命周期(二):   系統設計階段   系統實現階段

    軟件生命周期(三): 測試階段   維護階段

7 軟件開發過程:是在軟件生命周期的軟件系統開發過程中,一系列活動和軟件生成結果的集合

8 統一建模語言UML  UML圖有很多種,對於程序員來說,最頻繁使用的莫過於類圖。類圖主要是用來顯示系統中的類、接口以及它們之間的靜態結構和關系的一種靜態模型。類圖中最基本的元素是類、接口。軟件設計師設計出類圖后,程序員就可以用       代碼實現類圖中包含的內容。

     在UML類圖中描述具體類

     在UML類圖中描述抽象類

     在UML類圖中描述接口

     在UML類圖中描述包

9 使用類圖表示關系

   類和類、類和接口、接口和接口之間存在一定關系,共有六種類型:分別是實現關系、泛化關系(繼承關系)、關聯關系、依賴關系、聚合關系、組合關系, 

   接口與類之間: 實現關系(空心箭頭虛線)

    對象與對象之間: 泛化關系(Generalization) 指對象與對象之間的繼承關系。 

                            關聯關系  :指對象和對象之間的連接,它使一個對象知道另一個對象的屬性和方法。關聯關系有單向關聯和雙向關聯 eg:員工 與 時間表

                                          1 聚合(Aggregation)關系 :關聯關系的一種特例,它體現的是整體與部分的擁有關系,即“has a”的關系。此時整體與部分之間是可分離的,它們可以具有各自的生命周期,部分可以屬於多個整體對象,也可以為多                                                                                      個整體對象共享,所以聚合關系也常稱為共享關系。 eg:員工 與 部門

                                          2 組合(Composition)關系 :是關聯關系的一種特例,它同樣體現整體與部分間的包含關系,即“contains a”的關系。但此時整體與部分是不可分的,部分也不能給其它整體共享,作為整體的對象負責部分的對象的生                                                                                    命周期。這種關系比聚合更強,也稱為強聚合。 eg:員工 與 時間表

                                          3 依賴(Dependency)關系: 依賴關系在Java中的具體代碼表現形式為B為A的構造器或方法中的局部變量、方法或構造器的參數、方法的返回值,或者A調用B的靜態方法。eg:driver  和 car

 

10 面向對象系統分析與設計

在面向對象技術中,建造整個軟件系統的過程常常被稱為面向對象的分析和設計(Object-Oriented Analysis and Design,OOAD)。對於我們要開發的軟件系統來說,OOAD解決了系統是什么(面向對象的系統分析,即OOA)以及如何做的問題(面向對象的系統設計,即OOD),OOP只是用編程語言去實現該系統。
 
一般來說,OOAD工作一般由需求分析師、系統分析員、系統架構師來完成,而OOP則由程序員來完成。但是,對於程序員來說,掌握OOD技術,對於編寫高質量的代碼以及個人技術成長和職業規划來說,有特別重要的意義。 

 


免責聲明!

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



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