您好,登錄后才能下訂單哦!
一、識別類圖與對象的方法
1.對象與類
1)概念與表示法
l對象:是系統中用來描述客觀事物的一個實體,是具有明確語義邊界的實體;作為構成系統的一個基本單位,一個對象有一組屬性和對這組屬性進行操作的一組服務構成。
l類:是具有相同屬性、服務、關系和語義的一組對象的集合。它為屬于該類的全部對象提供了統一的抽象描述,其內部包括屬性和服務兩個主要部分。
l類與對象的關系+模版與實例;類的實例是對象。類的外延是其所產生的對象集。
類的內涵
2一般地說,類中的元素總是具有某種共同的性質的,這就是類的元素的同質性。
2一個類的所有元素所共同具有的、而且是這個類的元素所獨有的性質(也就是說不是該類的元素就不具有該性質)稱為該類的內涵。
2類的內涵與外延之間存在著直觀的“反比關系”:類的內涵越多,其外延越小;內涵越小,其外延越大。
有一個類生成的一個對象可以扮演不同的角色。
2角色:一個類的一個角色是在特定的語境下該類的對象所呈現的行為。
2主動對象:是擁有線程或進程并能夠啟動控制活動的對象。是用于描述具有主動行為的事物。
2主動類:主動對象所屬于的類叫做主動類。
2特征標記:服務的名稱及其后的位于括號內的參數列表叫做特征標記(或基調)。
setColor(String aColor)
類的各種表示法
2)識別對象與類的方法
研究用戶需求,明確系統責任
2閱讀:閱讀一切與用戶需求有關的書面材料
2交流:澄清一點,指導需求
2調查:到現場調查
2記錄、整理:產生需求文檔(補充用況圖)
研究問題域
2親臨現場調查,掌握第一手資料
2聽取問題域專家的見解
2閱讀與問題域有關的材料
2借鑒相同或類似問題域已有的系統開發經驗及文檔
考慮系統邊界(參考者)
2參與者啟發作為系統中的類的條件
管理信息
模擬行為
建立通訊
考慮系統責任
2對照系統責任所要求的每一項功能,查看是否可以由現有的對象完成這些功能。
2如果發現某些功能在現有的任何對象中都不能提供,則可啟發我們發現問題域中某些遺漏的對象。
名詞技術
2從名詞到對象或類通常有一對一的映射。
2用單個的專有名詞或代詞以及直接引用的名詞識別對象。
2用復數名詞以及不同名詞類識別類。
2可以啟發分析員發現對象的因素包括:人員、組織、物品、設備、事件、表格、日志、報告、結構等。
3)審查與篩選
舍棄無用的對象
2通過屬性判斷:
n是否通過屬性記錄了妙霞有用的信息?
2通過服務判斷:
n是否通過服務提供了某些有用的功能?
2二者都不是——無用
2在應用中,一個對象應該為一些其他的對象提供服務
精簡對象
2只有一個屬性的對象
2只有一個服務的對象
2總體上,對象必須具有多個屬性和服務。也存在對象沒有屬性僅提供服務,或屬性無服務的情況。
與實現條件有關的對象,推遲到OOD考慮
2系統責任所要求的某些功能
n例如系統安裝、配置、信息備份、瀏覽——可能無法從問題域中找到相應的對象來提供這些功能,可在設計階段考慮專門為它們增加一些對象,既把它們推遲到設計階段考慮。
2系統責任要求的某些功能可能與實現環境有關,也推遲到設計階段考慮。
n與圖形用戶界面(GUI)系統、數據管理系統、硬件和操作系統有關的對象。
4)識別主動對象
考慮問題域和系統責任
2哪些對象需呈現主動行為?--按定義
從需求考慮系統的執行情況
2如果一切對象服務都是順序執行的,那么首先執行的服務在哪個對象(唯一)?
2如果需要并發執行,每條控制線程的起點在哪個對象?這樣的對象都是主動對象。
考慮系統邊界
2哪些對象與參與者交互?
n如果一個交互是由參與者發起的,
n第一個處理該交互的對象是主動對象
5)類的命名
適合該類及其特殊類的全部對象實例
2汽車加摩托->機動車;還有馬車->車輛
反映個體而不是群體
2書-書籍;船-船舶
使用名詞,避免無意義的符號
使用問題域通用、規范的詞匯
在中國:可用中、英文雙重命名
6)建立類圖的對象層
用類符號表示每個對象類
填寫類描述模板
若發現新的屬性與服務、關系,可以隨時加到類符號中。
二、識別屬性和操作的方法
1)概念與表示法
實例屬性:是類的一個已命名的性質,它描述該性質的一個實例可以取的值的范圍。
2抽象為屬性的性質是與問題域相關的
2從技術觀點上,從技術觀點上,屬性是一些變量(數據項或狀態信息),包含它的每一個對象(實例)都具有自己的值。
2按照面向對象方法的封裝原則,一個對象的屬性和服務是緊密結合的,對象的屬性只能由這個對象的服務存取。
類屬性:是描述類的所有對象共同特征的一個數據項,對于任何對象實例,它的屬性值都是相同的。
2)屬性的特征
ShlaerMellor(1992)提出,Richard C.Lee增補
特征0:屬性必須捕獲與其對象所在的語義域相一致的特征。
特征1:任何時間一個實例為其每一個屬性都精確地給出一個值。
特征2:不能包含內部的結構。
人的姓+名
特征3:屬性必須是整個實體的特征。
計算機的屏幕尺寸?顯示器的屏幕尺寸
特征4:對象的屬性必須與該對象相關。
油罐倒油瓶的容器中的容積屬性
特征5:對象的屬性值不能是與其有關的對象的值以其關系的值。
人的薪水結婚日期
2.識別服務
1)概念與表示法
操作:是類的行為特征,用于描述為了引發相關行為的名稱、類型、參數與約束。
2有名字和參數表; 有可見性和返回類型。
2可見性的取值為+(公有的)、#(受保護的)、-(私有的)或~(包內的)。
2可見性、參數表和返回類型可在類描述模板中描述。
2抽象操作:把在一個類中沒有實現的操作(即沒有提供方法)。
服務:一個類為其他類所做的工作。一個對象的服務是當其他對象借助消息傳遞機制請求它時,它愿意執行的所公布的或公開的工作。
方法:是操作的實現。當一個對象請求另一個對象的服務時對象完成的詳細的動作集合(算法、過程)。
對象行為分類
系統行為
例:創建、刪除、復制、轉存
對象自身的行為——算法簡單的服務
例:讀、寫屬性值
對象自身的行為——算法復雜的服務
計算或監控
表示法:
–類范圍的操作用帶下劃線的名字和類型表達式串表示。實例范圍的操作是默認的,對其不用標記。
–抽象操作帶有標記“{abstract}”,或者把操作的特征標記寫成斜體來表示它是抽象的。
2)識別服務
– OOA不考慮算法簡單服務
去創建、連接、訪問、斷開連接、刪除等等。
–考慮算法復雜的服務
由對象提供的、在算法上復雜的業務服務(如要進行某些計算或監控操作)
3)審查與調整
–審查對象的每個服務
是否真正有用
是否直接提供系統責任所要求的某項功能?
或者
響應其它服務的請求間接地完成這種功能的某些局部操作?
調整——取消無用的服務
是不是高內聚的
一個服務只完成一項單一的、完整的功能
調整——拆分或合并
4)認識對象的主動行為
2考慮問題域對象行為是被引發的,還是主動呈現的?
2與參與者交互的對象服務
2完成最外層功能的對象服務外層與內層是請求與被請求的關系
2服務執行路線逆向追蹤找到了主動服務就等于找到了主動對象。
5)服務的命名和定位
命名:動詞或動賓結構; 外向性
定位:
與實際事物一致
例:售貨員——售貨,商品——售出
在泛化中的位置
——適合類的全部對象實例
6)描述服務
把每個對象的服務都填寫到相應的類符號中。
2在類描述模板中,寫出:
2說明服務的職責
2服務原型(消息的格式)
2消息發送(指出在這個服務執行時,需要請求哪些別的對象服務,即接收消息的對象類名以及執行這個消息的服務名)
2約束條件:如果該服務的執行有前置條件、后置條件,以及執行時間的要求等其它需要說明的事項,則在這里加以說明。
2實現服務的方法(文字、活動圖或流程圖)。
三、識別關系——泛化關系
1.定義:
2如果類A具有類B的全部屬性和全部操作,而且還具有自己特有的一些屬性或操作,則A叫B的B的特殊類,B叫做A的一般類,A與B之間的關系成為泛化關系。
2如果類A的全部對象都是類B的對象,且類B中存在不屬于類A的對象,則A是B的特殊類,B是A的一般類,A與B之間的關系成為泛化關系。
2.性質:
后代將具有祖先的所有的關聯。
a)反對稱性
如果對象A是對象B的后代,那么B將不會與A有“是一個”關系(對象B不是對象A的后代)。例如,Employee是一個Person,但并不是所有人都是雇員。
b)傳遞性
如果對象A“是一個”對象B,對象B“是一個”對象C,那么對象A“是一個”對象C。
在OOA模型中建立泛化,是為了使系統模型更清晰地映射問題域中事物的分類關系。它把具有泛化關系的類組織在一起,可以簡化我們對復雜系統的認識,從而增加了軟件的可維護性和適應變化的靈活性。
3.基本表示法
4.泛化集(GeneralizationSet)
用來定義泛化關系中子集的集合。
泛化集的約束
2{complete,disjoint}
表明泛化集是覆蓋的,并且某些特殊類沒有共同的實例
2{incomplete,disjoint}
表明泛化集不是覆蓋的,并且某些特殊類沒有共同實例
2{complete,overlapping}
表明泛化集是覆蓋的,并且某些特殊類具有共同的實例
2{incomplete,overlapping}
表明泛化集不是覆蓋的,并且某些特殊類具有共同實例
2默認{incomplete,disjoint}
舉例:
四、泛化關系的識別策略
1)學習當前領域的分類學知識
2)按常識考慮事物的分類
3)利用泛化的定義
兩個類
集合包含
特征包含
4)看兩個類的對象之間是否有“是一個”關系
Is A 關系表
考察A是一個B,B是一個A?
若都是——同義
若都從來不是——沒有泛化關系
A總是B,B有時是A,則A是一個B
5)考察類的屬性與服務
6)考慮領域范圍內的復用
審查與調整
問題域與系統責任是否需要這樣的分類?
(例:書—善本書(內容有用,流傳稀少,校刻精良,具有文物、學術或藝術價值之本)
是否符合分類學的常識?
是否構成了繼承關系?(確實繼承了一些屬性或服務)
一般-特殊結構的簡化
(1)取消沒有特殊性的特殊類
從一般類劃分出太多的特殊類,使系統中類的設置太多,增加了系統的復雜性;
建立過深的繼承層次,增加了系統的理解難度和處理開銷。
(2)增加屬性簡化一般-特殊結構
(3)取消用途單一的一般類,減少繼承層次
一般類存在的理由
有兩個或兩個上以上的特殊類
需要用它創建對象實例
有助于軟件復用
調整對象層和特征層
定義泛化的活動,將使分析員對系統中的對象類及其特征有更深入的認識。在很多情況下,隨著泛化的建立,需要對類圖的對象層和特征層作某些修改,包括增加、刪除、合并或分開某些類,以及增、刪某些屬性與服務或把它們移到其它類。
五、關聯關系的分類與識別策略
1.概念與表示法
2關聯
n關聯描述了引用類的實例的元組的集合。
n兩個類之間可以存在多個關聯
2鏈
n鏈是對象引用的元組。在最常見的情況下,它是一對對象引用。它是關聯的一個實例。
例:
2.多重性
2多重性是非負整數集的一個子集。
2另一端上的多重性是指,對于本端的一個對象,需要另一端對象的個數。
2其中的下限和上限都是文字整型值,說明從下限到上限的整數閉區間。此外星號(*)可以用于上限,表明不限制上限。
2如果多重性規約由單個的(*)構成,那么它就表明了無窮的非負正整數的范圍,也即它等價于0..*。
3.角色
2在關聯的每一個端點上有一個角色。每一個角色具有一個角色名,用來描述其類被其他的類看作是什么。
2當需要強調一個類在一個關聯的確切含義時,使用關聯角色名。
2如果使用角色名,就可以省略關聯名。
2角色名也決定了其類的多重性;就是說,該類與其他類的一個實例相關聯的實例的數量。
例:
4.導航性
2導航性限制了關聯上的訪問方向
2雙向的導航不必畫箭頭
UML2.0中對導航性的表示
5.關聯的類型
2關聯類
n具有關聯和類的特征的建模元素。關聯類既可以被看作是具有類的性質的關聯,也可以被看作為具有關聯性質的類。
n把關聯類表示成一個用虛線連接到關聯路徑的類符號。
n關聯和關聯類符號表示同模型元素,它們的名字相同。名字可以放置在關聯上或類符號中(但它們的名字必須相同)。
n如果一個類的一個屬性可以同時有多個值,就考慮使用關聯類。
例如,一個人的薪水。
關聯類到二元關聯的轉換
2限定關聯(Qualifier)
二元關聯的屬性或者屬性列表,在此關聯中,屬性的值從整個對象集合里選擇一個唯一的關聯對象或者關聯對象集.
限定關聯(Qualifier)
n限定符可以是目標類的一個屬性
n但通常是關聯的屬性
n該屬性的值限定了關聯
2異或關聯
2有序關聯
2多元關聯
2聚合
建立關聯的策略
2認識對象之間的靜態聯系
n考慮問題域和系統責任——哪些類的對象實例之間的關系需要在系統中表達。
u物理位置或親密度
u包含
u通信
u享受服務
u存儲信息
2認識關聯的屬性與操作
n對于考慮中的每一種關聯,進一步分析它是否應該帶有某些屬性和操作。就是說,是否含有一些僅憑一個簡單的關聯不能充分表達的信息。
2分析并表示實例連接的多重性
n從連接線的每一端,看本端的一個對象可能與另一端的幾個對象發生連接,把結果標注到連接線的另一端。
2對多對多的關聯的處理
多對多關聯的問題
2用面向對象語言實現為兩個數組指針
2用關系數據庫實現為多對多的表
n多對多的表的信息是冗余的
n兩個多對多關系轉化為不符合第四范式的表
降低多對多關聯的多重性
2限定關聯
n用面向對象語言實現為帶有參數的篩選函數
n用關系數據庫實現為先篩選后連接
2引入新的中間類
n切斷多對多類
n從問題域中尋找新的中間類,它與雙方都構成1對多關系
n若問題域中找不到相應的類,可構想一個
六、分析模式簡介
通用分析模式
Accountability責任(party OrganizationHierarchies Organization structure …)
Observation and Measurements觀察與測量
Rederring to Objects對象的引用
領域分析模式
財務領域
規劃
商業
…
分析模式Party
分析模式Organization Hierarchies(組織層次)
分析模式Organization structure(組織結構)
七、聚合與組合關系
1.概念與表示法
2聚合(aggregation)是關聯的一種特殊形式,表示整體和部分之間的“整體-部分”關系。
2聚集(aggregate)是聚合關系中作為“整體”的類,而把作為“部分”的類稱為成分或部分。
2類與類之間的聚合關系指的是,一個類的對象實例,以另一個類的對象實例作為其組成部分,是種“a part of”或“has a”;也可理解為,一個類定義引用另一個類定義。
2組合(Composition)是聚合的一種形式,其中,其部分和整體之間具有很強的“屬于”關系,并且它們的生存期是一致的。這種聚集末端的多重性不能超過1。
2組合對象是組合類的實例。
表示法:
性質
2結構性質
部分必須與它們所構建的整體有某些結構上或功能上的關系。
2數學性質
a.反對稱性
如果對象A是對象B的一部分,那么對象B就不能是對象A的一部分。
b.傳遞性
如果對象A是對象B的一部分,對象B是對象C的一部分,那么對象A是對象C的一部分。
分類
整體部分關系的性質
構造性:整體部分之間存是否存在功能或結構上的關系
同質性:整體部分之間的類型是否相同
不變性:整體部分之間的是否不可分離性
根據性質的不同可將整體部分關系分為以下幾類:
識別策略
2物理上的整體事物和它的組成部分
例:機器、設備和它的零部件
2組織機構和它的下級組織及部門
例:公司與子公司、部門
2團體(組織)與成員
例:公司與職員
2一種事物在空間上包容其它事物
例:生產車間與機器
2抽象事物的整體與部分
例:學科與分支學科、法律與法律條款
2具體事物和它的某個抽象方面
例:人員與身份、履歷
2在材料上的組成關系
例如,面包由面粉、糖和酵母組成,汽車是由鋼、塑料和玻璃組成。
審查與篩選
2是否屬于問題域或系統責任?
例:公司職員與家庭
2部分對象是否有一個以上的屬性?
例:汽車與輪胎(規格)
2是否有明顯的整體-部分關系?
例:學生與課程,誰是整體?部分?
八、依賴與實現關系
一個依賴規約了兩個或多個模型元素(或兩個模型元素集合)之間的一種語義關系,對目標元素的改變可能需要改變該依賴中的源元素。
下面種類的依賴是預定義的:
access--訪問;derive --派生;import --移入;refine--精化
trace--跟蹤;use--使用
include–包含; extend—擴展
表示法:
把依賴表示為兩個模型元素之間的虛線箭頭。在箭頭尾部的模型元素(客戶)依賴箭頭頭部的模型元素(提供者)。箭頭可以用放在書名號內的字符串標識。
可能會有一組元素作為客戶或提供者。在這種情況下,一個或多個尾部在客戶端的箭頭被連接到頭部在提供者端的一個或多個箭頭的尾部。如果需要,可以在連接處放置小的圓點。依賴的注釋應該依附在連接點上。用沒有箭頭的虛線表示注釋或約束與它應用到的元素之間的連接。這不是依賴。
不同類型的依賴
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。