這個OOAD講的都是很抽象的東西!老師說這個在現在的學習中用到的不是很多,但是以后出去工作的時候就會常用到的。
首先來了解OOAD是講什么的。
OOAD:Object Oriented Analysis Design,面向對象的分析和設計;
什么是面向對象?
- 面向對象(Object-Orientation, 簡稱OO)是一種系統建模技術。
- 面向對象編程(Object-Orientation Programming,簡稱OOP)是按照OO的方法學來開發程序的過程。
- 通過分析系統內對象的交互來描述或建模一個系統。
- 交互的對象最終以類的形式組織。
- OO的方法由三部分組成:過程,標識,規則。
對象
- 是一個客觀存在的、唯一的實體。
- 是面向對象編程過程中分析與解決問題的出發點與基礎。
- 擁有自己的標識、數據與行為。
- 可以簡單或復雜。
- 可以抽象或具體。
- 在OOP中是一個類的動態實例。
- 如Student—id,name,age(attribute)
--setName,getName,countScore(methods)
--new Student()
類
- 類是對象的模板。
- 對象通過類實例化產生。
- 一個類可以創建多個對象
OOAD
OOAD(Object Oriented Analysis and Design),面向對象的分析與設計。
OOAD是根據OO的方法學,對軟件系統進行分析與設計的過程。
--OOA 分析階段
--OOD 設計階段
定義OOA階段
- 分析階段主要解決以下問題
-- 建立針對業務問題域的清晰視圖。
-- 列出系統必須完成的核心任務。
-- 針對問題域建立公共詞匯表。
-- 列出針對此問題的最佳解決方案。
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 面向對象系統分析與設計