iOS 开发之 OOA (面向对象分析) OOD (面向对象设计) OOP (面向对象编程)
OOA
OOA 基本概念
OOA 全稱 Object-Oriented Analysis 面向對象分析
指的是在一個系統的開發過程中進行了系統業務調查以后,按照面向對象的思想來分析問題。OOA 與結構化分析有較大的區別。OOA 所強調的是在系統調查資料的基礎上,針對 OO 方法所需要的素材進行的歸類化分析和整理,而不是對管理業務現狀和方法的分析。
OOA 模型由 5 個層次(主題層、對象類層、結構層、屬性層和服務層)和 5 個活動(標識對象類、標識結構、定義主題、定義屬性和定義服務)組成。在這種方法中定義了兩種對象類之間的結構,一種稱為分類結構,一種稱為組裝結構。分類結構就是所謂的一般與特殊的關系。組裝結構則反映了對象之間的整體與部分的關系。
OOA 在定義屬性的同時,要識別實例連接。實例連接是一個實例與另一個實例的映射關系。
OOA 在定義服務的同時要識別消息連接。當一個對象需要向另一個對象發送消息時,它們之間就存在消息連接。
OOA 中的 5 個層次和 5 個活動繼續貫穿在 OOD(面向對象設計)過程中。OOD 模型由 4 各部分組成。它們分別是設計問題域部分、設計人機交互部分、設計任務管理部分、和設計數據管理部分。
OOA 的主要原則
-
抽象:從許多食物中舍棄個別的、非本質的特征,抽取共同的、本質性的特征,就叫做抽象。愁鄉石形成概念的必須手段。
抽象原則有兩個方面的意義:1,盡管問題域中的事物是很復雜的,但是分析員并不需要了解和描述它們的一切,只需要分析其中與系統目標有關的事物及其本質性特征;
2,通過舍棄個體事物在細節上的差異,抽取其共同特性而得到一批事物的抽象概念;
抽象是面向對象方法中使用最為廣泛的原則。抽象原則包括過程抽象和數據抽象兩個方面。
過程抽象是指,任何一個完成確定功能的操作序列,其使用者都可以把它看做一個單一的實體,盡管實際上它可能是由一系列更低級的操作完成的。
數據抽象是根據施加于數據之上的操作來定義數據類型,并限定數據的值只能由這些操作來修改和觀察。數據抽象是 OOA 的核心原則。它強調把數據(屬性)和操作(服務)結合為一個不可分的系統單位(即對象),對象的外部只需要知道它做什么,而不必知道它如何做;
封裝就是把對象的屬性和服務結合為一個不可分的系統單位,并盡可能隱蔽對象的內部細節;
繼承:特殊類的對象擁有的其一般類的全部屬性與服務,稱作特殊類對一般類的繼承;
在 OOA 中運用繼承原則,就是在每個由一般類和特殊類形成的一半特殊結構總,把一般類的對象實例和所有特殊類的對象實例都共同具有的屬性和服務,一次性的在一般類中進行顯式的定義。在特殊類中不在重復的定義一般類中已定義的東西,但是在語義上,特殊類卻自動的、隱含地擁有它的一般類(以及所有更上層的一般類)中定義的全部屬性和服務。繼承原則的好處是:是系統模型比較簡練也比較清晰;
- 分類:
就是把具有相同屬性和服務的對象劃分為一類,用類作為這些對象的抽象描述。分類原則實際上是抽象原則運用于對象描述時的一種表現形式。
- 聚合:
又稱組裝,其原則是:把一個復雜的事物看成若干比較簡單的事物組裝體,從而簡化對復雜事物的描述;
- 關聯:
是人類思考問題時經常運用的思想方法:通過一個事物聯想到另外的事物。能使人發生聯想的原因是事物之間確實存在著某些聯系;
- 消息通信:
這一原則要求對象之間只能通過消息進行通信,而不允許在對象之外直接地存取對象內部的屬性。通過消息進行通信是由于封裝原則而引起的。在 OOA 中要求消息連接表示出對象之間的動態聯系;
- 粒度控制:
一般來講,人在面對一個復雜的問題域時,不可能在同一時刻既能縱觀全局,又能洞察秋毫。因此需要控制自己的視野。考慮全局時,注意其大的組成部分,暫時不詳查每一部分的具體的細節。考慮某部分的細節時則暫時撇開其余的部分。著就是粒度控制原則;
- 行為分析:
顯示世界中事物的行為是復雜的。由大量的事物所構成的問題域中各種行為旺旺相互依賴交織;
面向對象分析產生三種模型
對用例模型進行分析,把系統分解成互相協作的分析類,通過類圖\對象圖描述對象\對象的屬性\對象間的關系,是系統的靜態模型;
描述系統的動態行為,通過時序圖/協作圖/描述對象的交互,以揭示對象間如何協作來完成每個具體的用例。單個對象的狀態變化/動態行為可以通過狀態圖來表示;
OOA 的主要優點
OOA 方法的具體步驟
在用 OOA 具體分析一個事物時。大致上遵循如下 5 個基本步驟:
這里所說的對象是對數據及其處理方式的抽象,它反映了系統保存和處理現實世界總某些事物的信息能力。類是多個對象的共同屬性和方法集合的描述,它包括如何在一個類中建立一個新對象的描述;
結構是指問題域的復雜性和連接關系。類成員結構反映了泛華—特化關系,整體-部分結構反映整體和局部之間的關系;
主題是指事物的總體概貌和總體分析模型;
屬性就是數據元素,可用來描述對象或分類結構的實例,可在圖中給出,并在對象的存儲中指定;
方法是在收到消息后必須進行的一些處理方法:方法要在圖中定義,并在對象的存儲中指定。對于每個對象和結構來說,那些用來增加、修改、刪除和選擇一個方法本身都是隱含的(雖然它們是要在對象的存儲中定義的,但并不在圖上給出),而有些則是顯示的;
OOD
OOD 基本概念
OOD 全稱 Object-Oriented Design 面向對象設計
OOD 是 OO 方法中一個中間過渡環節。其主要作用是對 OOA 分析的結構作進一步的規范化整理,以便能夠被 OOP 面向對象的編程 直接接受。
OOD 是一個軟件設計方法,是一種工程化規范。這是毫無疑問的。按照 Bjarne Stroustrup 的說法,OOP 是決定你要的類,給每一個類提供完整的一組操作。
明確地使用繼承來表現共同點。由這個定義,我們可以看出 OOD 就是“根據需求決定所需的類、類的操作以及類之間關聯的過程”。
OOD 的目標是管理程序內部各部分的相互依賴。為了達到這個目標,OOD 要求將程序分成塊,每個塊的規模應該小到可以管理的程度,然后分別將各個塊隱藏在接口 interface 的后面,讓它們只通過接口相互交流。比如說,如果用OOD 的方法類設計一個服務器-客戶端 client-server 應用,那么服務器和客戶端之間不應該有直接地依賴,而是應該讓服務器的接口和客戶端的接口相互依賴。
這種依賴關系的轉換使得系統的各部分具有了可復用性。還是拿上面那個例子來說,客戶端就不必依賴于特定的服務器,所以就可以復用到其他的環境下。如果要復用某一個程序塊,只要實現必須的接口就行了。
OOD 是一種解決軟件問題的設計范式 paradigm,一種抽象的范式。使用 OOD 這種設計范式,我們可以用對象 object 來表現問題領域 problem domain 的實體,每個對象都有相應的狀態和行為。
抽象可以分成很多層次,從非常概括的到非常特殊的都有,而對象可能處于任何一個抽象層次上。另外,彼此不同但又相互關聯的對象可以共同構成抽象。只要這些對象之間有相似性,就可以把它們當成同一類的對象類處理。
OOP 基本概念
OOP 全稱 Object Oriented Programming 面向對象編程
OOP 是一種實現的方法。在這種方法中,程序被組織成許多組互相協作的對象,每個對象代表某個類的一個實例,而類則屬于一個通過繼承關系形成的層次結構具體實現。
OOP 的三大特性:
封裝:
就是將一個類使用和實現分開,只保留部分接口和方法與外部聯系 。
繼承:
子類自動繼承其父級類中的屬性和方法,并可以添加新的屬性和方法或者對部分屬性和方法進行重寫。繼承增加了代碼的可重用性。
多態:
多個子類中雖然都具有同一個方法,但是這些子類實例化的對象調用這些相同的方法后卻可以獲得完全不同的結果,多態性增強了軟件的靈活性。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的iOS 开发之 OOA (面向对象分析) OOD (面向对象设计) OOP (面向对象编程)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RHCE课程-RH131Linux管理笔
- 下一篇: spring 深入reading