第二章 面向?qū)ο蠹夹g(shù)
一、面向?qū)ο蟮幕A(chǔ)
1、面向?qū)ο蠡A(chǔ)概念
面向?qū)ο?對象+類+繼承+消息通信
1、對象:在面向?qū)ο蟮南到y(tǒng)中,對象是基本運行時的實體,即包括數(shù)據(jù)(屬性),也包括作用于數(shù)據(jù)的操作(行為)。對象內(nèi)進行的操作通常稱為方法。一個對象一般由對象名(標識)、屬性和方法三個部分 組成。
2、消息:對象之間進行通信的一種構(gòu)造稱為消息。當一個消息發(fā)送給某個對象時,包含要求接收對 象去執(zhí)行某些活動的信息。接收到信息的對象經(jīng)過解釋,然后予以響應(yīng)。這種通信機制稱為消 息傳遞。發(fā)送消息的對象不需要知道接收消息的對象如何對請求予以響應(yīng)。
3、類:類是在對象之上的抽象,對象是類的具體化,是類的實例(instance )。在分析和設(shè)計時, 通常把注意力集中在類上,而不是具體的對象。也不必逐個定義每個對象,只需對類做出定義, 而對類的屬性進行不同賦值即可得到該類的對象實例。
4、繼承:繼承是父類與子類之間共享數(shù)據(jù)和方法的機制。這是類之間的一種關(guān)系,在定義和實現(xiàn)一 個類的時候,可以在一個已經(jīng)存在的類的基礎(chǔ)上進行,并把這個已經(jīng)的類所定義的內(nèi)容作為自己的內(nèi)容,并加入若干新的內(nèi)容。
5、多態(tài):在收到消息時,對象要予以響應(yīng)。不同的對象收到同一信息可以產(chǎn)生不同的結(jié)果,這一個 現(xiàn)象稱為多態(tài)(polymorphism)。Cardelli 和 Wegner 把它分為四類,通用的(參數(shù)的、包含的)、 特定的(過載的、強制的)。
6、動態(tài)綁定:綁定是一個把過程調(diào)用和響應(yīng)調(diào)用所需要執(zhí)行的代碼加以結(jié)合的過程。在一般的程序設(shè)計 語言中,綁定是在編譯時進行的,成為靜態(tài)綁定。動態(tài)綁定則是在運行時進化的,因此,一個給定的過程調(diào)用和代碼的結(jié)合直到調(diào)用發(fā)生時才進行。
2、面向?qū)ο蠓治?/p>
面向?qū)ο蠓治觯∣OA)的目的是為了獲得對應(yīng)用問題的理解。包括5個活動
認定對象
組織對象
對象間的相互作用
定義對象的操作
定義對象的內(nèi)部信息
3、面向?qū)ο笤O(shè)計
面向?qū)ο笤O(shè)計(OOD)含義是設(shè)計分析模型和實現(xiàn)相應(yīng)源代碼,在目標代碼環(huán)境中這種 源代碼可以被執(zhí)行。通常情況時,由概念模型生成的分析模型被裝入到相應(yīng)的執(zhí)行環(huán)境中時, 還需要被修改。
對象標識期間的目標是分析對象,設(shè)計過程也是發(fā)現(xiàn)對象的過程,稱之為再處理。 面向?qū)ο笫且环N程序設(shè)計風格,不只是一種具有構(gòu)造繼承性、封裝性和多態(tài)的程序設(shè)計語言族的命名。
4、面向?qū)ο蟪绦蛟O(shè)計
面向?qū)ο蟪绦蛟O(shè)計(OOP)的實質(zhì)是選用一種面向?qū)ο蟪绦蛟O(shè)計語言(OOPL),采用對 象、類及其相關(guān)概念所進行的程序設(shè)計。它的關(guān)鍵在于加入了類和繼承性,從而進一步提高了 抽象程度。
5、面向?qū)ο鬁y試
(1)算法層。測試類中定義的每個方法,基本上相當于傳統(tǒng)軟件測試中的單元測試。?
(2)類層。測試封裝在同一個類中的所有方法與屬性之間的相互作用。在面向?qū)ο筌浖蓄愂腔灸K,因此可以認為這是面向?qū)ο鬁y試中所特有的模塊測試。
(3)模板層。測試一組協(xié)同工作的類之間的相互作用。大體上相當于傳統(tǒng)軟件測試中的 集成測試,但是也有面向?qū)ο筌浖奶攸c(例如,對象之間通過發(fā)送消息相互作用)。?
(4)系統(tǒng)層。把各個子系統(tǒng)組裝成完整的面向?qū)ο筌浖到y(tǒng),在組裝過程中同時進行測試。
軟件工程中傳統(tǒng)的測試用例設(shè)計技術(shù),如邏輯覆蓋、等價類劃分和邊界值分析等方法,仍然可以作為測試類中每個方法的主要技術(shù)。面向?qū)ο鬁y試的主要目標也是用盡可能低的測試成 本和盡可能少的測試用例,發(fā)現(xiàn)盡可能多的錯誤。但是,面向?qū)ο蟪绦蛑刑赜械姆庋b、繼承和 多態(tài)等機制,也給面向?qū)ο鬁y試帶來一些新特點,增加了測試和調(diào)試的難度。
二、UML
2.1 事物
2.2 關(guān)系
UML中有4種關(guān)系:依賴、關(guān)聯(lián)、泛化和實現(xiàn)。
2.3 UML中的關(guān)系
2.3.1 類圖:類圖展現(xiàn)了一組對象、接口、協(xié)作和它們之間的關(guān)系。類圖中包含的內(nèi)容,如下圖所示:
?
2.3.2 對象圖:對象圖展現(xiàn)了某一時刻一組對象以及它們之間的關(guān)系。對象圖一般包括對象和鏈,如下圖所示:
2.3.3 用例圖:用例圖展現(xiàn)了一組用例、參與者以及它們之前的關(guān)系,如下圖所示:
2.3.4 交互圖:用于對系統(tǒng)的動態(tài)方面進行建模。一張交互圖表現(xiàn)的是一個交互行程序由一組對象和它們之間的關(guān)系組成,包含它們之間可能傳遞的消息。交互圖表現(xiàn)為序列圖、通信圖、交互概覽圖和時序圖。?
1)序列圖:
序列圖是場景的圖形化表示,描述了以時間順序組織的對象之間的交互活動。強調(diào)的是信息時間順序的交互圖。有兩個不同于通信圖的特征。
(1)序列圖有對象生命線。(2)序列圖有控制焦點。
2)通信圖
通信圖強調(diào)收發(fā)信息的對象的結(jié)構(gòu)組織,在早期版本中也被稱為協(xié)作圖,強調(diào)參加交互的對象的組織。通信圖如下圖所示:
通信圖有兩個不同于序列圖的特征:
(1)通信圖有路徑;(2)通信圖有順序號;
3)交互概述圖
交互概覽圖是 UML2.0 新增的交互圖之一,它是活動圖的變體,描述業(yè)務(wù)過程中的控制流 概覽,軟件過程中的詳細邏輯概覽,以及多個圖進行拼接,抽象掉了信息和生命線。它使用活動圖的表示法,如下圖所示:
4)計時圖
另一種新增的、特別適合實時嵌入式系統(tǒng)建模的交互圖稱為計時圖。其關(guān)注沿著線性時間軸、生命線內(nèi)部和生命線之間的條件改變。他描述對象狀態(tài)隨著時間改變的情況,很像示波器, 如下圖所示:
5)狀態(tài)圖
狀態(tài)圖通常包括簡單狀態(tài)和組合狀態(tài)、轉(zhuǎn)換(事件和動作)。如下圖所示:
?6)活動圖
活動圖專注系統(tǒng)的動態(tài)視圖,它對于系統(tǒng)的功能建模特別重要,并強調(diào)對象間的控制流程。一般包括活動狀態(tài)和動作狀態(tài)、轉(zhuǎn)換和對象。如下圖所示:
?7)構(gòu)件圖
構(gòu)件圖展現(xiàn)了一組構(gòu)件之間的組織和依賴,專注于系統(tǒng)靜態(tài)實現(xiàn)視圖。如下圖所示:
8) 組合結(jié)構(gòu)圖
用于描述一個分類器(如類、構(gòu)件等)的內(nèi)部結(jié)構(gòu),分類器與系統(tǒng)中其他組成部分之間的交互 端口,展示一組相互協(xié)作的實例如何完成特定的任務(wù),描述設(shè)計、架構(gòu)模式或策略。
9)部署圖
部署圖是用來對面向?qū)ο笙到y(tǒng)的物理方面建模的方法, 展現(xiàn)了運行時處理 結(jié)點以及其構(gòu)件(制品)的配置。一般對系統(tǒng)的靜態(tài)部署視圖進行建模,與構(gòu)件圖相關(guān)。如下圖所示:
10)包圖
包圖用于把模型本身組織成層次結(jié)構(gòu)的通用機制,不能執(zhí)行,展現(xiàn)由模型本身分解而成的組織 單元以及之間的依賴關(guān)系。如下圖所示:
三、設(shè)計模式
3.1 設(shè)計模式的要素
? ? ? ?設(shè)計模式的核心在于提供了相關(guān)問題的解決方案,使得人們可以更加簡單方便的復用成功的設(shè)計和體系結(jié)構(gòu)。
? ? ? ?設(shè)計模式4個基本要素: 模式名稱、問題、解決方案、效果。
3.2 創(chuàng)建型設(shè)計模式
? ? ? 創(chuàng)建型模式抽象了實例化過程,它們幫助一個系統(tǒng)獨立于如何創(chuàng)建、組合和表示它的哪些對象。一個類創(chuàng)建型模式使用繼承改變被實例化的類,而一個對象創(chuàng)建型模式將實例化委托給另一個對象。
? ? ?1)抽象工廠(Abstract Factory);2)生成器(Builder);3)工廠方法(Factory Method);4)原型(Prototype);5)單例(Singleton)
3.3 結(jié)構(gòu)型設(shè)計模式
? ? ? 1. 適配器(Adapter)2. 橋接(Bridge)3. 組合(Composite)4. 裝飾(Decorator)5. 外觀(Facade)6. 享元(Flyweight)7. 代理(Proxy)
3.4 行為設(shè)計模式
? ? ? ?行為模式涉及算法和對象間職責的分配。行為模式不僅描述對象或類的模式,還描述了它 們之間的通信模式。這些模式刻畫了在運行時難以跟蹤的、復雜的控制流。它們將用戶的注意力從控制流轉(zhuǎn)移到對象間的聯(lián)系方式上來。
1. 責任鏈(Chain of Responsibility)2. 命令(Command)3. 解釋器(Interpreter)4. 迭代器(Iterator)5. 中介者(Mediator)6. 備忘錄(Memento)7. 觀察者(Observer)8. 狀態(tài)(State)9. 策略(Strategy)10. 模板方法(Template Method)11. 訪問者(Visitor)
————————————————
版權(quán)聲明:本文為CSDN博主「陽仔蛋炒飯」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/yangzhiwei273/article/details/120335683