第七章 面向?qū)ο蠹夹g(shù)

? ? 7.1 面向?qū)ο蠡A(chǔ)

????????7.1.1 面向?qū)ο蟮幕靖拍?/h3>

? ? ? ? ? ? ? ? 面向?qū)ο?對象+分類+繼承+通過消息的通信

? ? ? ? ? ? ? ? 對象:基本的運(yùn)行實體憋活,包括屬性和行為,由對象名、屬性和方法組成

? ? ? ? ? ? ? ? 消息:對象之間進(jìn)行通信的一種構(gòu)造

? ? ? ? ? ? ? ? 類:定義一組大體顯示的對象,其所包含的方法和數(shù)據(jù)描述一組對象的共同行為和屬性笨忌,類是對象之上的抽象,對象是類的具體化辜梳,是類的實例,分為實體類泳叠、接口類和控制類

? ? ? ? ? ? ? ? 繼承:是父類和之類之間共享數(shù)據(jù)和方法的機(jī)制

? ? ? ? ? ? ? ? 多態(tài):不同的對象接收到同一消息可以產(chǎn)生完全不同的結(jié)果作瞄,參數(shù)多態(tài)和包含多態(tài)稱為通用的,過載多態(tài)和強(qiáng)制多態(tài)稱為特定的

? ? ? ? ? ? ? ? 動態(tài)綁定:在運(yùn)行時危纫,一個把過程調(diào)用和響應(yīng)調(diào)用所需要執(zhí)行的代碼加以結(jié)合的過程宗挥,與類的繼承以及多態(tài)相聯(lián)系的乌庶,在繼承關(guān)系中,子類是父類的一個特例契耿,所以父類對象可以出現(xiàn)的地方瞒大,子類對象也可以出現(xiàn),在運(yùn)行過程中宵喂,當(dāng)一個對象發(fā)送消息請求服務(wù)時糠赦,要根據(jù)接收對象的具體情況將請求的操作與實現(xiàn)的方法進(jìn)行連接

????????7.1.2 面向?qū)ο蠓治?

? ? ? ? ? ? ? ? 面向?qū)ο蠓治龅幕顒樱赫J(rèn)定對象会傲、組織對象锅棕、描述對象間的相互作用、確定對象的操作淌山、定義對象的內(nèi)部信息

????????7.1.3 面向?qū)ο笤O(shè)計

? ? ? ? ? ? ? ? 面向?qū)ο笤O(shè)計是將面向?qū)ο蠓治鏊鶆?chuàng)建的分析模型轉(zhuǎn)化為設(shè)計模型裸燎,其目標(biāo)是定義系統(tǒng)構(gòu)造藍(lán)圖,同樣遵循抽象泼疑、信息隱蔽德绿、功能獨立和模塊化等設(shè)計準(zhǔn)則

? ? ? ? ? ? ? ? 面向?qū)ο笤O(shè)計的活動:識別類及對象;定義屬性退渗;定義服務(wù)移稳;識別關(guān)系;識別包

? ? ? ? ? ? ? ? 面向?qū)ο笤O(shè)計原則:單一責(zé)任原則会油;開放-封閉原則个粱;理氏替換原則;依賴倒置原則翻翩;接口分離原則都许;重用發(fā)布等價原則;共同封閉原則嫂冻;共同重用原則胶征;無依賴原則;穩(wěn)定依賴原則桨仿;穩(wěn)定抽象原則

????????7.1.4 面向?qū)ο蟪绦蛟O(shè)計

? ? ? ? ? ? ? ? 類:類具有實例化功能睛低;同一個類的不同實例具有相同的數(shù)據(jù)結(jié)構(gòu),承受的是同一方法集合所定義的操作服傍,具有相同規(guī)律的行為钱雷;同一類的不同實例可以持有不同的值,具有不同的狀態(tài)伴嗡;實例的初始狀態(tài)可以在實例化時確定

? ? ? ? ? ? ? ?繼承和類層次結(jié)構(gòu):繼承通過定義類之間的關(guān)系來體現(xiàn)急波,子類和父類之間的繼承關(guān)系構(gòu)成了整個系統(tǒng)的類層次結(jié)構(gòu),可以用樹或格這樣的圖來描述瘪校;繼承體現(xiàn)了一條重要的設(shè)計原則澄暮,即開發(fā)人員在構(gòu)造程序時不必從零開始名段,而只需對差別進(jìn)行程序設(shè)計

? ? ? ? ? ? ? ? 對象、消息傳遞和方法:對象是類的實例泣懊,對象之間通過諾消息傳遞進(jìn)行通信伸辟;

? ? ? ? ? ? ? ? 對象自身引用:通過this或self等,自身引用的值和類型扮演了兩種意義的角色馍刮,對象自身引用的值使得方法體中引用的成員名與特定的對象相關(guān)信夫,對象自身引用的類型則決定了方法體被實際共享的范圍

? ? ? ? ? ? ? ? 重置:指在子類中重新定義父類已經(jīng)定義的方法,通過一種動態(tài)綁定機(jī)制的支持卡啰,使得子類在集成 父類接口定義的前提下用適合自己要求的實現(xiàn)去置換父類中的相應(yīng)實現(xiàn)

? ? ? ? ? ? ? ? 類屬類:可以看成類的模板静稻,是關(guān)于一組類的一個特性抽象,它強(qiáng)調(diào)的是這些類的成員特征中與具體類型無關(guān)的那些部分匈辱,而與具體類型相關(guān)相關(guān)的那些部分則用變元來表示振湾。

? ? ? ? ? ? ? ? 無實例的類:抽象類,C++通過定義抽象方法來定義抽象類亡脸;JAVA通過申明來定義抽象類

????????7.1.5 面向?qū)ο鬁y試

? ? ? ? ? ? ? ? 面向?qū)ο蟮臏y試:與其他方法開發(fā)的系統(tǒng)測試無異押搪,分為算法層(測試類中定義的方法)、類層(測試封裝在同一類中的所有方法和屬性之間的相關(guān)作用)浅碾、模板層(測試一組協(xié)同工作的類之間的相互作用)和系統(tǒng)層(組裝子系統(tǒng)過程中的測試)大州。

????7.2 UML

? ? ? ? ? ? ? ? UML組成要素:UML的基本構(gòu)造塊、支配這些構(gòu)造塊如何設(shè)置在一起的規(guī)則和運(yùn)用與整個語言的一些公共機(jī)制

? ? ? ? ? ? ? ? UML包含3種構(gòu)造塊:事物--對模型中最具代表性的成分的抽象垂谢;關(guān)系--把事物連接在一起厦画;圖--聚集了相關(guān)的事物

????????7.2.1 事物

? ? ? ? ? ? ? ? UML中的4中事物:結(jié)構(gòu)事物、行為事物埂陆、分組事物和注釋事物

? ? ? ? ? ? ? ? 結(jié)構(gòu)事物:模型的靜態(tài)部分苛白,描述概念或物理元素,包括類焚虱、接口购裙、協(xié)作、用例鹃栽、主動類躏率、構(gòu)件、制品和結(jié)點

? ? ? ? ? ? ? ? 行為事物:模型的動態(tài)部分民鼓,描述跨越時間和空間的行為薇芝,包括交互、狀態(tài)機(jī)和活動

? ? ? ? ? ? ? ? 分組事物:UML模型的組織部分丰嘉,主要指包

? ? ? ? ? ? ? ? 注釋事物:UML模型的解釋部分夯到,用來描述、說明和標(biāo)注模型的任何元素

????????7.2.2 關(guān)系

? ? ? ? ? ? ? ? UML中4中關(guān)系:依賴饮亏、關(guān)聯(lián)耍贾、泛化和實現(xiàn)

????????7.2.3 UML中的圖

? ? ? ? ? ? ? ? 圖:一組元素的圖形表示阅爽,一般畫為頂點(事物)和弧(關(guān)系)的連通圖荐开,包括類圖付翁、對象圖、用例圖晃听、序列圖百侧、通信圖、狀態(tài)圖能扒、活動圖佣渴、構(gòu)件圖、組合結(jié)構(gòu)圖赫粥、部署圖观话、包圖、交互概覽圖和計時圖

? ? ? ? ? ? ? ? 類圖:展現(xiàn)一組對象越平、接口、協(xié)作和他們之間的關(guān)系灵迫,包含類秦叛、接口、協(xié)作和依賴瀑粥、泛化和關(guān)聯(lián)關(guān)系

? ? ? ? ? ? ? ? 對象圖:展現(xiàn)了某時刻一組對象以及他們之間的關(guān)系

? ? ? ? ? ? ? ? 用例圖:展現(xiàn)一組用例挣跋、參與者以及他們之間的關(guān)系,包括用例狞换、參與者和用例間的擴(kuò)展避咆、包含關(guān)系修噪,參與者與用例之間的關(guān)聯(lián)關(guān)系,用例與用例及參與者與參與者之間的泛化關(guān)系

? ? ? ? ? ? ? ? 交互圖:用于對系統(tǒng)動態(tài)方面進(jìn)行建模黄琼,一張交互圖表示一個交互樊销,由一組對象和他們之間的關(guān)系組成脏款,包含其傳遞消息;一般包含對象撤师、鏈和消息

? ? ? ? ? ? ? ? 狀態(tài)圖:展現(xiàn)一個狀態(tài)機(jī),由狀態(tài)剃盾、轉(zhuǎn)換腺占、事件和活動組成

? ? ? ? ? ? ? ? 活動圖:一種特殊的狀態(tài)圖强法,展示了系統(tǒng)內(nèi)從一個活動到另一個活動的流程,包括活動狀態(tài)和動作狀態(tài)湾笛,轉(zhuǎn)換和對象

? ? ? ? ? ? ? ? 構(gòu)建圖:展示一組構(gòu)建之間的組織和依賴

? ? ? ? ? ? ? ? 組合結(jié)構(gòu)圖:描述一個分類器的內(nèi)部結(jié)構(gòu)饮怯,分類器與系統(tǒng)中其它組成部分之間的交互端口、展示一組相互協(xié)作的實例如何完成特定的任務(wù)嚎研,描述設(shè)計蓖墅、結(jié)構(gòu)模式或策略

? ? ? ? ? ? ? ? 部署圖:用來對面向?qū)ο笙到y(tǒng)的物理方面建模的方法,展現(xiàn)了運(yùn)行時處理節(jié)點以及其中構(gòu)件的配置

? ? ? ? ? ? ? ? 包圖:用于把模型本身組織成層次結(jié)構(gòu)的通用機(jī)制临扮,不能執(zhí)行论矾,展現(xiàn)由模型本身分解而成的組織單元以及其間的依賴關(guān)系

????7.3 設(shè)計模式?

????????7.3.1 設(shè)計模式的要素

? ? ? ? ? ? ? ? 設(shè)計模式的核心在于提供了相關(guān)問題的解決方案,使得人們可以更簡單的復(fù)用成功的設(shè)計和體系結(jié)構(gòu)

? ? ? ? ? ? ? ? 設(shè)計模式的要素:模式名稱杆勇、問題贪壳、解決方案、效果

? ? ? ? ? ? ? ? 設(shè)計模式的分類:創(chuàng)建型模式與對象的創(chuàng)建有關(guān)蚜退;結(jié)構(gòu)型模式處理類與對象的組合闰靴;行為型模式對類或?qū)ο笤趺唇换ズ驮趺捶峙渎氊?zé)進(jìn)行描述

????????7.3.2 創(chuàng)建型設(shè)計模式

? ? ? ? ? ? ? ? 創(chuàng)建型模式抽象了實例化過程,幫助系統(tǒng)獨立于如何創(chuàng)建钻注、組合和表示它的那些對象

? ? ? ? ? ? ? ? 抽象工廠(Abstract Factory):意圖提供一個創(chuàng)建一系列相關(guān)或相互依賴對象的接口蚂且,而無須指定他們具體的類

? ? ? ? ? ? ? ? 生成器(Builder):意圖將一個復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示

? ? ? ? ? ? ? ? 工廠方法(Factory Method):意圖定義一個用于創(chuàng)建對象的接口幅恋,讓子類決定實例化哪一個類

? ? ? ? ? ? ? ? 原型(Prototype):意圖用原型實例制定創(chuàng)建對象的種類杏死,并且通過復(fù)制這些原型創(chuàng)建新的對象

? ? ? ? ? ? ? ? 單例(Singleton):意圖保證一個類僅有一個實例,并提供一個訪問它的全局訪問點

????????7.3.3 結(jié)構(gòu)型設(shè)計模式

? ? ? ? ? ? ? ? 結(jié)構(gòu)型設(shè)計模式涉及如何組合類和對象以獲得更大的結(jié)構(gòu)捆交,采用繼承機(jī)制來實現(xiàn)組合接口或?qū)崿F(xiàn)

? ? ? ? ? ? ? ? 適配器(Adapter):意圖將一個類的接口轉(zhuǎn)換成客戶希望的另一個接口

? ? ? ? ? ? ? ? 橋接(Bridge):意圖將抽象部分與其實現(xiàn)部分分離淑翼,使他們都可以獨立的變化

? ? ? ? ? ? ? ? 組合(Composite):意圖將對象組合成樹形結(jié)構(gòu)儀表室部分-整體的層次結(jié)構(gòu)

? ? ? ? ? ? ? ? 裝飾(Decorator):意圖動態(tài)的給一個對象添加一些額外的職責(zé)

? ? ? ? ? ? ? ? 外觀(Facade):意圖為子系統(tǒng)中的一組接口提供一個一致的界面

? ? ? ? ? ? ? ? 享元(Flyweight):意圖運(yùn)用共享技術(shù)有效的支持大量的細(xì)粒度對象

? ? ? ? ? ? ? ?代理(Proxy):意圖為其他對象提供一種代理以控制對這個對象的訪問

????????7.3.4 行為型設(shè)計模式

????????7.3.5 應(yīng)用舉例

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市品追,隨后出現(xiàn)的幾起案子玄括,更是在濱河造成了極大的恐慌,老刑警劉巖诵盼,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惠豺,死亡現(xiàn)場離奇詭異,居然都是意外死亡风宁,警方通過查閱死者的電腦和手機(jī)洁墙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來戒财,“玉大人热监,你說我怎么就攤上這事∫” “怎么了孝扛?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵列吼,是天一觀的道長寞钥。 經(jīng)常有香客問我陌选,道長,這世上最難降的妖魔是什么您炉? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任赚爵,我火速辦了婚禮法瑟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘畸写。我一直安慰自己氓扛,他們只是感情好采郎,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布蒜埋。 她就那樣靜靜地躺著整份,像睡著了一般籽孙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上讲冠,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天竿开,我揣著相機(jī)與錄音,去河邊找鬼否彩。 笑死,一個胖子當(dāng)著我的面吹牛敬尺,可吹牛的內(nèi)容都是我干的肌毅。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼呜舒,長吁一口氣:“原來是場噩夢啊……” “哼袭蝗!你這毒婦竟也來了般婆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤乡范,失蹤者是張志新(化名)和其女友劉穎晋辆,沒想到半個月后宇整,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡霸饲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年厚脉,在試婚紗的時候發(fā)現(xiàn)自己被綠了器仗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片精钮。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖忽你,靈堂內(nèi)的尸體忽然破棺而出臂容,到底是詐尸還是另有隱情,我是刑警寧澤糟秘,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布尿赚,位于F島的核電站蕉堰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏冰寻。R本人自食惡果不足惜皿渗,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一乐疆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦煤蚌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至导披,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間撩匕,已是汗流浹背墨叛。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工漠趁, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谨朝。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓叠必,卻偏偏與公主長得像妹窖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子共苛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

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