iOS 開發(fā)之 OOA (面向?qū)ο蠓治? & OOD (面向?qū)ο笤O(shè)計(jì))& OOP (面向?qū)ο缶幊?

OOA

OOA 基本概念

OOA 全稱 Object-Oriented Analysis 面向?qū)ο蠓治?/code>

指的是在一個(gè)系統(tǒng)的開發(fā)過程中進(jìn)行了系統(tǒng)業(yè)務(wù)調(diào)查以后恍箭,按照面向?qū)ο蟮乃枷雭矸治鰡栴}。OOA 與結(jié)構(gòu)化分析有較大的區(qū)別翠订。OOA 所強(qiáng)調(diào)的是在系統(tǒng)調(diào)查資料的基礎(chǔ)上,針對(duì) OO 方法所需要的素材進(jìn)行的歸類化分析和整理遵倦,而不是對(duì)管理業(yè)務(wù)現(xiàn)狀和方法的分析尽超。

OOA 模型由 5 個(gè)層次(主題層、對(duì)象類層梧躺、結(jié)構(gòu)層似谁、屬性層和服務(wù)層)和 5 個(gè)活動(dòng)(標(biāo)識(shí)對(duì)象類、標(biāo)識(shí)結(jié)構(gòu)掠哥、定義主題巩踏、定義屬性和定義服務(wù))組成。在這種方法中定義了兩種對(duì)象類之間的結(jié)構(gòu)续搀,一種稱為分類結(jié)構(gòu)塞琼,一種稱為組裝結(jié)構(gòu)。分類結(jié)構(gòu)就是所謂的一般與特殊的關(guān)系禁舷。組裝結(jié)構(gòu)則反映了對(duì)象之間的整體與部分的關(guān)系彪杉。

OOA 在定義屬性的同時(shí)毅往,要識(shí)別實(shí)例連接。實(shí)例連接是一個(gè)實(shí)例與另一個(gè)實(shí)例的映射關(guān)系在讶。

OOA 在定義服務(wù)的同時(shí)要識(shí)別消息連接煞抬。當(dāng)一個(gè)對(duì)象需要向另一個(gè)對(duì)象發(fā)送消息時(shí),它們之間就存在消息連接构哺。

OOA 中的 5 個(gè)層次和 5 個(gè)活動(dòng)繼續(xù)貫穿在 OOD(面向?qū)ο笤O(shè)計(jì))過程中。OOD 模型由 4 各部分組成战坤。它們分別是設(shè)計(jì)問題域部分曙强、設(shè)計(jì)人機(jī)交互部分、設(shè)計(jì)任務(wù)管理部分途茫、和設(shè)計(jì)數(shù)據(jù)管理部分碟嘴。

OOA 的主要原則

  • 抽象:從許多食物中舍棄個(gè)別的、非本質(zhì)的特征囊卜,抽取共同的娜扇、本質(zhì)性的特征,就叫做抽象栅组。愁鄉(xiāng)石形成概念的必須手段雀瓢。
    抽象原則有兩個(gè)方面的意義:

    • 1,盡管問題域中的事物是很復(fù)雜的玉掸,但是分析員并不需要了解和描述它們的一切刃麸,只需要分析其中與系統(tǒng)目標(biāo)有關(guān)的事物及其本質(zhì)性特征;

    • 2司浪,通過舍棄個(gè)體事物在細(xì)節(jié)上的差異泊业,抽取其共同特性而得到一批事物的抽象概念;
      抽象是面向?qū)ο蠓椒ㄖ惺褂米顬閺V泛的原則啊易。抽象原則包括過程抽象和數(shù)據(jù)抽象兩個(gè)方面吁伺。

過程抽象是指,任何一個(gè)完成確定功能的操作序列租谈,其使用者都可以把它看做一個(gè)單一的實(shí)體篮奄,盡管實(shí)際上它可能是由一系列更低級(jí)的操作完成的。
數(shù)據(jù)抽象是根據(jù)施加于數(shù)據(jù)之上的操作來定義數(shù)據(jù)類型垦垂,并限定數(shù)據(jù)的值只能由這些操作來修改和觀察宦搬。數(shù)據(jù)抽象是 OOA 的核心原則。它強(qiáng)調(diào)把數(shù)據(jù)(屬性)和操作(服務(wù))結(jié)合為一個(gè)不可分的系統(tǒng)單位(即對(duì)象)劫拗,對(duì)象的外部只需要知道它做什么间校,而不必知道它如何做;

  • 封裝就是把對(duì)象的屬性和服務(wù)結(jié)合為一個(gè)不可分的系統(tǒng)單位,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié);

  • 繼承:特殊類的對(duì)象擁有的其一般類的全部屬性與服務(wù)页慷,稱作特殊類對(duì)一般類的繼承;

在 OOA 中運(yùn)用繼承原則憔足,就是在每個(gè)由一般類和特殊類形成的一半特殊結(jié)構(gòu)總胁附,把一般類的對(duì)象實(shí)例和所有特殊類的對(duì)象實(shí)例都共同具有的屬性和服務(wù),一次性的在一般類中進(jìn)行顯式的定義滓彰。在特殊類中不在重復(fù)的定義一般類中已定義的東西控妻,但是在語義上,特殊類卻自動(dòng)的揭绑、隱含地?fù)碛兴囊话泐悾ㄒ约八懈蠈拥囊话泐悾┲卸x的全部屬性和服務(wù)弓候。繼承原則的好處是:是系統(tǒng)模型比較簡(jiǎn)練也比較清晰;

  • 分類:

就是把具有相同屬性和服務(wù)的對(duì)象劃分為一類,用類作為這些對(duì)象的抽象描述他匪。分類原則實(shí)際上是抽象原則運(yùn)用于對(duì)象描述時(shí)的一種表現(xiàn)形式菇存。

  • 聚合:

又稱組裝,其原則是:把一個(gè)復(fù)雜的事物看成若干比較簡(jiǎn)單的事物組裝體邦蜜,從而簡(jiǎn)化對(duì)復(fù)雜事物的描述;

  • 關(guān)聯(lián):

是人類思考問題時(shí)經(jīng)常運(yùn)用的思想方法:通過一個(gè)事物聯(lián)想到另外的事物依鸥。能使人發(fā)生聯(lián)想的原因是事物之間確實(shí)存在著某些聯(lián)系;

  • 消息通信:

這一原則要求對(duì)象之間只能通過消息進(jìn)行通信,而不允許在對(duì)象之外直接地存取對(duì)象內(nèi)部的屬性悼沈。通過消息進(jìn)行通信是由于封裝原則而引起的贱迟。在 OOA 中要求消息連接表示出對(duì)象之間的動(dòng)態(tài)聯(lián)系;

  • 粒度控制:

一般來講,人在面對(duì)一個(gè)復(fù)雜的問題域時(shí)絮供,不可能在同一時(shí)刻既能縱觀全局衣吠,又能洞察秋毫。因此需要控制自己的視野杯缺≌舨ィ考慮全局時(shí),注意其大的組成部分萍肆,暫時(shí)不詳查每一部分的具體的細(xì)節(jié)袍榆。考慮某部分的細(xì)節(jié)時(shí)則暫時(shí)撇開其余的部分塘揣。著就是粒度控制原則;

  • 行為分析:

顯示世界中事物的行為是復(fù)雜的包雀。由大量的事物所構(gòu)成的問題域中各種行為旺旺相互依賴交織;

面向?qū)ο蠓治霎a(chǎn)生三種模型

  1. 對(duì)象模型:

對(duì)用例模型進(jìn)行分析,把系統(tǒng)分解成互相協(xié)作的分析類亲铡,通過類圖\對(duì)象圖描述對(duì)象\對(duì)象的屬性\對(duì)象間的關(guān)系才写,是系統(tǒng)的靜態(tài)模型;

  1. 動(dòng)態(tài)模型:

描述系統(tǒng)的動(dòng)態(tài)行為奖蔓,通過時(shí)序圖/協(xié)作圖/描述對(duì)象的交互赞草,以揭示對(duì)象間如何協(xié)作來完成每個(gè)具體的用例。單個(gè)對(duì)象的狀態(tài)變化/動(dòng)態(tài)行為可以通過狀態(tài)圖來表示吆鹤;

  1. 功能模型:

OOA 的主要優(yōu)點(diǎn)

  1. 加強(qiáng)了對(duì)問題域和系統(tǒng)責(zé)任的理解厨疙;
  2. 改進(jìn)與分析有關(guān)的各類人員之間的交流;
  3. 對(duì)需求的變化具有較強(qiáng)的適應(yīng)性疑务;
  4. 支持軟件復(fù)用沾凄;
  5. 貫穿軟件聲明周期全過程的一致性梗醇;
  6. 實(shí)用性;
  7. 有利于用戶參與撒蟀;

OOA 方法的具體步驟

在用 OOA 具體分析一個(gè)事物時(shí)叙谨。大致上遵循如下 5 個(gè)基本步驟:

  1. 確定對(duì)象和類

這里所說的對(duì)象是對(duì)數(shù)據(jù)及其處理方式的抽象,它反映了系統(tǒng)保存和處理現(xiàn)實(shí)世界總某些事物的信息能力保屯。類是多個(gè)對(duì)象的共同屬性和方法集合的描述手负,它包括如何在一個(gè)類中建立一個(gè)新對(duì)象的描述;

  1. 確定結(jié)構(gòu) structure

結(jié)構(gòu)是指問題域的復(fù)雜性和連接關(guān)系配椭。類成員結(jié)構(gòu)反映了泛華—特化關(guān)系虫溜,整體-部分結(jié)構(gòu)反映整體和局部之間的關(guān)系;

  1. 確定主題 subject

主題是指事物的總體概貌和總體分析模型股缸;

  1. 確定屬性 attribute

屬性就是數(shù)據(jù)元素,可用來描述對(duì)象或分類結(jié)構(gòu)的實(shí)例吱雏,可在圖中給出敦姻,并在對(duì)象的存儲(chǔ)中指定;

  1. 確定方法 method

方法是在收到消息后必須進(jìn)行的一些處理方法:方法要在圖中定義歧杏,并在對(duì)象的存儲(chǔ)中指定镰惦。對(duì)于每個(gè)對(duì)象和結(jié)構(gòu)來說,那些用來增加犬绒、修改旺入、刪除和選擇一個(gè)方法本身都是隱含的(雖然它們是要在對(duì)象的存儲(chǔ)中定義的,但并不在圖上給出)凯力,而有些則是顯示的茵瘾;


OOD

OOD 基本概念

OOD 全稱 Object-Oriented Design 面向?qū)ο笤O(shè)計(jì)

OOD 是 OO 方法中一個(gè)中間過渡環(huán)節(jié)。其主要作用是對(duì) OOA 分析的結(jié)構(gòu)作進(jìn)一步的規(guī)范化整理咐鹤,以便能夠被 OOP 面向?qū)ο蟮木幊?/code> 直接接受拗秘。

OOD 是一個(gè)軟件設(shè)計(jì)方法,是一種工程化規(guī)范祈惶。這是毫無疑問的雕旨。按照 Bjarne Stroustrup 的說法,OOP 是決定你要的類捧请,給每一個(gè)類提供完整的一組操作凡涩。
明確地使用繼承來表現(xiàn)共同點(diǎn)。由這個(gè)定義疹蛉,我們可以看出 OOD 就是“根據(jù)需求決定所需的類活箕、類的操作以及類之間關(guān)聯(lián)的過程”。

OOD 的目標(biāo)是管理程序內(nèi)部各部分的相互依賴氧吐。為了達(dá)到這個(gè)目標(biāo)讹蘑,OOD 要求將程序分成塊末盔,每個(gè)塊的規(guī)模應(yīng)該小到可以管理的程度,然后分別將各個(gè)塊隱藏在接口 interface 的后面座慰,讓它們只通過接口相互交流陨舱。比如說,如果用OOD 的方法類設(shè)計(jì)一個(gè)服務(wù)器-客戶端 client-server 應(yīng)用版仔,那么服務(wù)器和客戶端之間不應(yīng)該有直接地依賴游盲,而是應(yīng)該讓服務(wù)器的接口和客戶端的接口相互依賴。

這種依賴關(guān)系的轉(zhuǎn)換使得系統(tǒng)的各部分具有了可復(fù)用性蛮粮。還是拿上面那個(gè)例子來說益缎,客戶端就不必依賴于特定的服務(wù)器,所以就可以復(fù)用到其他的環(huán)境下然想。如果要復(fù)用某一個(gè)程序塊莺奔,只要實(shí)現(xiàn)必須的接口就行了。

OOD 是一種解決軟件問題的設(shè)計(jì)范式 paradigm变泄,一種抽象的范式令哟。使用 OOD 這種設(shè)計(jì)范式,我們可以用對(duì)象 object 來表現(xiàn)問題領(lǐng)域 problem domain 的實(shí)體妨蛹,每個(gè)對(duì)象都有相應(yīng)的狀態(tài)和行為屏富。

抽象可以分成很多層次,從非常概括的到非常特殊的都有蛙卤,而對(duì)象可能處于任何一個(gè)抽象層次上狠半。另外,彼此不同但又相互關(guān)聯(lián)的對(duì)象可以共同構(gòu)成抽象颤难。只要這些對(duì)象之間有相似性神年,就可以把它們當(dāng)成同一類的對(duì)象類處理。


OOP 基本概念

OOP 全稱 Object Oriented Programming 面向?qū)ο缶幊?/code>

OOP 是一種實(shí)現(xiàn)的方法乐严。在這種方法中瘤袖,程序被組織成許多組互相協(xié)作的對(duì)象,每個(gè)對(duì)象代表某個(gè)類的一個(gè)實(shí)例昂验,而類則屬于一個(gè)通過繼承關(guān)系形成的層次結(jié)構(gòu)具體實(shí)現(xiàn)捂敌。

OOP 的三大特性:

封裝:

就是將一個(gè)類使用和實(shí)現(xiàn)分開,只保留部分接口和方法與外部聯(lián)系 既琴。

繼承:

子類自動(dòng)繼承其父級(jí)類中的屬性和方法占婉,并可以添加新的屬性和方法或者對(duì)部分屬性和方法進(jìn)行重寫。繼承增加了代碼的可重用性甫恩。

多態(tài):

多個(gè)子類中雖然都具有同一個(gè)方法逆济,但是這些子類實(shí)例化的對(duì)象調(diào)用這些相同的方法后卻可以獲得完全不同的結(jié)果,多態(tài)性增強(qiáng)了軟件的靈活性。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末奖慌,一起剝皮案震驚了整個(gè)濱河市抛虫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌简僧,老刑警劉巖建椰,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異岛马,居然都是意外死亡棉姐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門啦逆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伞矩,“玉大人,你說我怎么就攤上這事夏志∧死ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵沟蔑,是天一觀的道長(zhǎng)侥袜。 經(jīng)常有香客問我,道長(zhǎng)溉贿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任浦旱,我火速辦了婚禮宇色,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘颁湖。我一直安慰自己宣蠕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布甥捺。 她就那樣靜靜地躺著抢蚀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪镰禾。 梳的紋絲不亂的頭發(fā)上皿曲,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音吴侦,去河邊找鬼屋休。 笑死,一個(gè)胖子當(dāng)著我的面吹牛备韧,可吹牛的內(nèi)容都是我干的劫樟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼叠艳!你這毒婦竟也來了奶陈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤附较,失蹤者是張志新(化名)和其女友劉穎吃粒,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體翅睛,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡声搁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捕发。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疏旨。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖扎酷,靈堂內(nèi)的尸體忽然破棺而出檐涝,到底是詐尸還是另有隱情,我是刑警寧澤法挨,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布谁榜,位于F島的核電站,受9級(jí)特大地震影響凡纳,放射性物質(zhì)發(fā)生泄漏窃植。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一荐糜、第九天 我趴在偏房一處隱蔽的房頂上張望巷怜。 院中可真熱鬧,春花似錦暴氏、人聲如沸延塑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽关带。三九已至,卻和暖如春沼撕,著一層夾襖步出監(jiān)牢的瞬間宋雏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國打工端朵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留好芭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓冲呢,卻偏偏與公主長(zhǎng)得像舍败,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容