




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1Class DiagramObject Diagram2Main Pointsw Class Diagram w How to read the Class diagram w How to draw the Class diagramw Class diagram Application Notes w Class diagram Case Studyw Object Diagram 3OOA&D4每個對象都扮演了一個角色,并為其它成員提供特定的每個對象都扮演了一個角色,并為其它成員提供特定的服務或執行特定的行為。服務或執行特定的行為。 在面向對象世界中,行為的啟動是通過將在面向對
2、象世界中,行為的啟動是通過將“消息消息”傳遞傳遞給對此行為負責的對象來完成的;同時還將伴隨著執行給對此行為負責的對象來完成的;同時還將伴隨著執行要求附上相關的信息(參數);而收到該消息的對象則要求附上相關的信息(參數);而收到該消息的對象則會執行相應的會執行相應的“方法方法”來實現需求來實現需求 用類和對象表示現實世界,用消息和方法來模擬現實世用類和對象表示現實世界,用消息和方法來模擬現實世界界OOA&D5Why do design ?一天,上帝來到小王的家里,請他幫忙制作一天,上帝來到小王的家里,請他幫忙制作兩個人兩個人! 小王理解了上帝的需求,小王理解了上帝的需求,沒有做設計沒有做
3、設計,直接開始動手。,直接開始動手。 做到一半之后,小王發現做到一半之后,小王發現越做越不對越做越不對,然后,然后反復反復的的修改修改,疲憊不堪,疲憊不堪 最后期限最后期限到來,上帝來向小王要人。小王面帶羞澀的到來,上帝來向小王要人。小王面帶羞澀的將他的將他的工作成果工作成果拿給上帝拿給上帝想象一下此時上帝的表情!想象一下此時上帝的表情!6What is software design?軟件需求:系統“做什么?”上帝要求:我要做兩個人(軟件系統)!軟件設計:系統“怎么做?”人的骨架(系統框架)應該怎么做.人的大腦(系統數據庫)應該怎么做.人的皮膚(系統界面)應該怎么做.人的性格(系統性能)應該
4、怎么做.設計的目標就是使所設計的系統能夠被開發方設計的目標就是使所設計的系統能夠被開發方順利地實現,并且恰如其分地滿足用戶的需求順利地實現,并且恰如其分地滿足用戶的需求7Class Design in ContextEarlyElaboration IterationInception Iteration (Optional)Define a CandidateArchitecturePerformArchitecturalSynthesisAnalyze BehaviorRefine theArchitectureDesignComponentsDesign theDatabase(Opti
5、onal)ClassDesignDesigner8Class Design OverviewSupplementarySpecificationsClassDesignProject SpecificGuidelinesDesign ClassesDesign ModelDesign Use-Case RealizationAnalysis Use-Case RealizationAnalysis Classes9Class Design Considerationsw Class stereotypeBoundaryEntityControlw Applicable design patte
6、rnsw Architectural mechanismsPersistenceDistributionetc.10w 對象類(Class)簡稱類,是面向對象模型的最基本的模型元素。對象類圖表達一組對象類和它們的聯系。 w 在對象類圖中,一方面描述各個對象類本身的組成,即類的屬性、操作和對對象的約束;另一方面描述系統中對象類之間的各種靜態的聯系。 w 對象類圖描述的是系統的靜態結構。 w 對象類的結構性聯系:關聯、聚合、組合、泛化/特化。對象類的行為性聯系:消息聯系,系統預定義或用戶自定義的語義聯系 。使用聯系 :依賴。w 對象類圖標加上它們之間的聯系就構成了對象類圖。 Class Diagr
7、am11Main Pointsw Class Diagram w How to read the Class diagram w How to draw the Class diagramw Class diagram Application Notes w Class diagram Case Studyw Object Diagram 12UML Class名稱:每個類都有一個惟一的名稱,通常名稱:每個類都有一個惟一的名稱,通常采用采用CamelCase格式(每個單詞大寫開始,混合格式(每個單詞大寫開始,混合大小寫大小寫,避免使用特殊符,避免使用特殊符號)號)表示。表示。屬性:是已被命名的
8、類的屬性:是已被命名的類的特性,它描述該類實例中特性,它描述該類實例中包含的信息包含的信息 操作:是類所提供的服務,操作:是類所提供的服務,它可以由類的任何對象它可以由類的任何對象請請 求求以影響其以影響其行為。行為。屬性名和操作名也通常采用屬性名和操作名也通常采用CamelCase格式表示,只不過格式表示,只不過首字母通常為小寫。首字母通常為小寫。 13Basic Conceptsw Classw Attributesw Operations14w 對象類是對象的集合,這些對象具有共同的結構特征、行為特征、聯系和語義。 w 對象類的圖標(Icon)用實線矩形框表示,矩形框中含有若干分隔框,分
9、別包含類的名字、屬性、操作、約束以及其他成分等,w 類名可以是簡單名,也可以是路徑名。 w 屬性框中包含對象類的屬性。屬性是類的命名的性質,它描述類性質的實例所能具有的值。 w 操作框中包含對象類的操作。操作實現類的服務功能,它可以被本類的對象請求執行,從而發生某種行為。w 其他的框可以包含責任、聯系、約束、業務規則、事件、例外情況等內容的說明。 Class類名類名屬性屬性操作操作學生學生 姓名姓名 年齡年齡 性別性別 注冊注冊 選課選課類類的圖形表示的圖形表示 15w 類的屬性(Attribute)是類的命名的性質,屬性在類圖標的屬性分隔框中用文字串說明。 w 屬性有在本對象類中唯一的屬性名
10、或標識符。 w 冒號“:”后跟屬性值的數據類型。 w 屬性名后跟的方括號中的內容是可選項目。 w 多重性(Multiplicity)用多值表達式表示,其值是該對象類的每個實例的屬性值的個數。 w 多值表達式的格式為: integer,integer,或 低界.高界 Attributes類類的屬性框的屬性框 屬性屬性 可視性可視性 屬性名屬性名 多重性多重性:類型:類型 = 初始值初始值16w 可視性(Visibility)用以下可視性標記表示: + (公共),# (保護), (私用) w 可視性也可以用以下關鍵字表示:public(公共)、protected(保護)、private(私用)。
11、w 若可視性標記為“+”或“public”,則為公共屬性,可以被外部對象訪問。若可視性標記為“#”或“protected”,則為保護屬性,可以被本類或子類的對象訪問。若可視性標記為“”或“private”,則為私用屬性,不可以被外部對象訪問,只能為本類的對象使用。可視性可以缺省,表示該屬性不可視。 w 屬主范圍(Owner scope)有兩種情況:實例和分類符。w 若屬性的屬主范圍是實例,則該對象類的每一個實例對象都有一個自己的該屬性的值 w 若屬性的屬主范圍是分類符,則對于該對象類本屬性只有一個值,該對象類的每一個實例對象都持有此唯一的屬性值。 Attributes17w 操作(Operat
12、ion)是對象類的行為特征或動態特征。 w 一個類可以有多個操作,也可以沒有一個操作。沒有一個操作的類常用于表達接口或數據表。 w 操作用文字串說明。 w 操作有在本對象類中唯一的操作名或標識符。 w 參數列表是可選項目,即一個操作可以有參數,也可以沒有參數。 w 參數列表由逗號分隔的操作的形式參數組成,其格式為: 參數列表 參數名 : 類型 = 缺省值, w 返回列表由逗號分隔的操作的返回值類型表達式組成,其格式為:返回類型或返回名字 = 類型, Operation類類的操作框的操作框 操作操作 可視性可視性 操作名操作名 (參數列表):返回列表(參數列表):返回列表 (性質)(性質)18w
13、 操作的可視性的表示方法和含義與屬性中相同。 w 操作也有屬主范圍的區分,它的含義和表示與屬性的屬主范圍相同。 w 對象的構造操作(構造函數)必須帶有下劃線,表示它的屬主范圍是分類符。構造操作也可以用構造型標示。 w 操作定義的最后花括號中的性質,是一個文字串,說明該操作的一些有關信息。性質是一個可選項。 w 注意區別術語“操作”和“方法(Method)”。操作是被對象調用的一個過程,而方法是過程體,這在有多態性的情況下二者是有所區別的。 Operation19Public operationsProtected operationsPrivateoperationsOperation Vis
14、ibilityw Visibility is used to enforce encapsulationw May be public, protected, or private20w 類“Circle”的圖形表示Operation21w Messages displayed in interaction diagramsw Other implementation dependent functionality Manager functions Need for class copies Need to test for equalityOperations: Where Do You
15、Find Them? : ClassA1 : /Perform Responsibility : ClassB : ClassA1 : performResponsibility (): result : ClassB22Association Conceptsw 對象的關聯對象的關聯w 自自返關聯、二元關聯與返關聯、二元關聯與N元關聯元關聯w 關聯的約束23/ 類類A的源碼的源碼public class A public B theB; public A() / 類類B的源碼的源碼public class B public B() / 類類A的源碼的源碼public class A publ
16、ic B theB; public A() / 類類B的源碼的源碼public class B public A theA; public B() Association24w 關聯(Association)代表對象類的實例(對象)之間的一組鏈接(Link)。關聯的一個實例,就是相互關聯的兩個對象間的一個鏈接。 w 關聯的定義可以用一個類圖表示。 Association類類關聯的圖形表示關聯的圖形表示 25w 在對象類圖上,關聯用一條把對象類連接在一起的實線表示。一個關聯至少有兩個關聯端,每個關聯端連接到一個類,關聯端是有序的。 w 關聯線旁可以標出關聯的名字 。線旁的小實心三角箭頭表示關聯的
17、方向,從源對象類指向目標對象類。箭頭起關聯的導航作用。 w 關聯可以是單向的或雙向的,如果該關聯是雙向的,就不必標出方向箭頭。 w 在關聯端可有多重性標記,規定該對象類中有多少個對象參與該關聯。 w 在關聯的對象類圖標旁可以標出類的角色名(Role)。角色表示被關聯的類參與關聯的特定的行為。 Association關聯關聯的角色與可視的角色與可視性性26w 帶有限定符的關聯稱為限定關聯(Qualified Association)。 w 限定符的值確定如何劃分和標識該關聯的目標對象類的對象。 w 源對象類的一個帶有限定符值的對象,唯一地選擇目標對象類的一個劃分。 w 目標對象類的每一個對象只能
18、是某一個劃分的成員。 Qualified Association27Association Class關聯類即是關聯也是類,它不僅像關聯那樣連接兩個類,關聯類即是關聯也是類,它不僅像關聯那樣連接兩個類,而且還可以定義一組屬于關系本身的特性而且還可以定義一組屬于關系本身的特性 28w 自返關聯又稱遞歸關聯,是一個對象類與本身的關聯,即一個類的兩個對象間的聯系。 w 自返關聯雖然只有一個被關聯的類,但有兩個關聯端,每個關聯端的角色不同。 w 例:對象類“職務”存在自返關聯“管理”。 自返關聯、二元關聯和N元關聯自自返返關聯關聯 29w 二元關聯是在兩個對象類之間發生的關聯。 w N元關聯是在3個或
19、多個對象類之間發生的關聯,N 元關聯的每一個實例是被關聯的類的對象的多元組。 w 在對象類圖上用一個菱形連接互相關聯的類表示N 元關聯,如圖所示。 自返關聯、二元關聯和N元關聯N元元關聯關聯 30w 關聯可以加上一些約束,以規定關聯的含義。 w 約束的字符串括在花括號內。 w UML定義了一些約束可以施加在目標關聯端上,如“implicit”、“ordered”、“changeable”、“addonly ”、“xor”等。 w 例,如圖具有xor約束的關聯,代表一組關聯的互斥的情況。 關聯的約束31Association typesw Aggregation 聚合聚合w Compositio
20、n 組合組合w Generalization 泛化泛化w Dependency 依賴依賴32w 聚合(Aggregation)表示事物的部分/整體關系的較弱的情況。聚合也稱為“has-a”聯系。 w 在關聯線端加一個小空心菱形表示聚合,菱形連接代表整體事物的對象類,稱之為聚合類,另一個關聯端連接代表部分事物的對象類。w 例:圓和多邊形是圖形格式的兩個聚合對象類。 Aggregation33w 組合(Composition)表示事物的部分/整體關系的較強的情況。組合也稱為“contains-a”聯系。 w 在關聯線端加一個小實心菱形表示組合,菱形連接代表整體事物的對象類,稱之為組合類,另一個關聯
21、端連接代表部分事物的對象類。w 例:圓由點組成,“圓”是組合對象類,“點”是成分對象類;多邊形也是由點組成的,是一個組合類 。w 聚合與組合表示的部分/整體結構關系對系統建模具有重要的作用: 簡化了對象的定義; 支持軟件重用。Composition34w 組合的另一種表示方式:把成分對象類放在它的組合類的屬性框中,在其右上角可以標出多重性標記。成分對象類的名字可以按格式寫為:“角色名:類名”Composition35w 泛化/特化(Generalization / Specialization)是現實世界中一般性實體與特殊性實體之間的關系,一般性實體是特殊性實體的泛化,特殊性實體是一般性實體的
22、特化。泛化也稱為“a-kind-of”聯系。 w 表示一般性實體的對象類稱超類(Supertype),表示特殊性實體的對象類稱子類(Subtype)。子類繼承超類的特性(屬性、操作、關聯等),同時可以有自己的特性。 w 泛化用一條帶空心三角箭頭的實箭線表示,箭線尾端連接子類,箭頭指向超類。 Generalization36w 泛化聯系體現了分類與繼承原則。一個子類繼承超類的全部屬性和方法,一個子類本身又可以有自己的子類,從而構成復雜的一般/特殊的結構。 w 單繼承:一個子類可以只從它的一個父類繼承屬性和方法。如果在一般/特殊的結構中只有單繼承,則為層次結構。w 多繼承:一個子類也可以從它的多個
23、父類繼承屬性和方法。如果在一般/特殊的結構中包含有多繼承,則為網格結構(lattice structure)。w 繼承有傳遞性。一個子類不但可以從它的直接父類繼承屬性和方法,也可以通過其父類繼承祖先類的屬性和方法。 Generalization37Class Hierarchy38Property inheritance39w 泛化涉及面向對象技術的多態性、重載、多繼承等概念,這在建立泛化聯系時需特別注意。w 重載是實現多態性的方法,它修改繼承來的屬性和操作的內容,而不改變其名字。 w 表示重載的約束“overlapping”,說明子類型“風動交通工具”、“機動交通工具”、“陸上交通工具”、“
24、水上交通工具”雖然繼承了超類“交通工具”的屬性和操作,但是對于某些具有多態性的屬性和操作,各個子類型的對象都有自己不同的含義和實現,而屬性和操作的名字則是一樣的。 w 對于一個操作,可以用約束“polymorphic”規定為多態性操作,即該操作可以為子類重載。w 對于一組泛化,可以用約束“overlapping”規定為是可重載的,即它的實例可以有多種類型。 Overlapping and polymorphic40w 依賴(Dependency)是指一個模型元素的變化必影響到另一個模型元素。 w 對象類之間的依賴用一條虛箭線表示,位于虛箭線尾端的對象類(稱為客戶)依賴于箭頭所指向的對象類(稱為
25、供應者)。 w 對于依賴可以加上構造型,規定依賴的含義和作用,常用的構造型有(使用)、(實例)、(調用)、(友元)等。w 依賴的一些詳細的說明可以用注釋圖形來描述。 Dependency41先看清有哪先看清有哪些類,然后些類,然后看看類之間看看類之間存在的關系,存在的關系,并結合多重并結合多重性來理解類性來理解類圖的結構特圖的結構特點以及各個點以及各個屬性和方法屬性和方法的含義的含義 。Example42Multiplicity多重性:用來說明關聯的兩個類之間的數量關系多重性:用來說明關聯的兩個類之間的數量關系 源類及多重性目標類及多重性分析Customer(1)Order(0n)訂單是屬于某
26、個客戶的,網站的客戶可以有0個或多個訂單Order(1)Consignee(1)每個訂單只能夠有一個收貨人Order(1)OrderItem(1n)訂單是由訂單項組成的,至少要有一個訂單項,最多可以有n個Order(1)DeliverOrder(1n)一個訂單有一個或多個送貨單說明:系統根據訂單項的產品所屬的商戶,將其分發給商戶,拆成了多個送貨單!DeliverOrder(1)OrderItem(1n)一張送貨單對應訂單中的一到多個訂單項DeliverOrder(1)Consignee(1)每張送貨單都對應著一個收貨人Peddlery(1)DeliverOrder(0n)每個商戶可以有相關的0
27、個或多個送貨單OrderItem(1)Product(1)每個訂單項中都包含著唯一的一個產品Peddlery(1)Prodcut(0n)產品是屬于某個商戶的,可以注冊0到多個產品43Complex class diagram44導航箭號:類的實例之間只能沿著導航箭頭的方向傳遞導航箭號:類的實例之間只能沿著導航箭頭的方向傳遞 ,在在Order中可以獲取其相應的中可以獲取其相應的Consignee,而從,而從Consignee中是無法了解與其相關的中是無法了解與其相關的Order。角色名稱:角色名稱:Customer端有一個端有一個“+Owner”字符串字符串 ,這表,這表示示Customer扮演
28、的角色是扮演的角色是Owner,也能對關聯進行命名,也能對關聯進行命名關聯名稱應為動詞短語,表示該關聯的語義;關聯名稱應為動詞短語,表示該關聯的語義;角色名稱是名詞短語,表示由關聯實例鏈接的對象所扮演的角色角色名稱是名詞短語,表示由關聯實例鏈接的對象所扮演的角色Complex class diagram45導出屬性:是指可以根據其他值計算出來的特性,這種導出屬性:是指可以根據其他值計算出來的特性,這種屬性應在其名稱前加上一個屬性應在其名稱前加上一個“/”符號。符號。限定符:在限定符:在Order和和OrderItem之間的組合關系中,之間的組合關系中,OrderItem這端多了一個方框,里面寫
29、著這端多了一個方框,里面寫著“ProductId”。它在它在UML中稱為限定符,存在限定符的關聯稱為受限關中稱為限定符,存在限定符的關聯稱為受限關聯。它用來表示某種限定關系。在本例中,它的用途是聯。它用來表示某種限定關系。在本例中,它的用途是說明:對于一張訂單,每一種產品只能用一個訂單項說明:對于一張訂單,每一種產品只能用一個訂單項 約束:用來說明規則,約束:用來說明規則,xor職責:在類的屬性欄中添加注釋行表示,或增加了一個職責:在類的屬性欄中添加注釋行表示,或增加了一個新的分欄新的分欄Complex class diagram46w 使用建議使用建議這些增強機制擁有很強的語義規則,但是在這
30、些增強機制擁有很強的語義規則,但是在類建模實踐中不要濫用,也不要刻意使用,類建模實踐中不要濫用,也不要刻意使用,否則容易陷入過度設計,并使類圖的可讀性否則容易陷入過度設計,并使類圖的可讀性降低。降低。Complex class diagram47Interfaces and abstract classes抽象類是一種不能夠被直接實例化的類,也就是說不能抽象類是一種不能夠被直接實例化的類,也就是說不能夠創建一個屬于抽象類的對象夠創建一個屬于抽象類的對象接口接口則是一種類似于抽象則是一種類似于抽象類的機制,它是一個沒有類的機制,它是一個沒有具體實現的類具體實現的類 48Template clas
31、s可以根據占位符或參數來定義類,而不用說明屬性、方可以根據占位符或參數來定義類,而不用說明屬性、方法返回值和方法參數的實際類型法返回值和方法參數的實際類型 49Active classes and nested classes主動類的實例稱為主動對象,一個主動對象擁有一個控主動類的實例稱為主動對象,一個主動對象擁有一個控制線程并且能夠發起控制活動;它不在別的線程、堆棧制線程并且能夠發起控制活動;它不在別的線程、堆棧或狀態機內運行,具有獨立的控制期。從某種意義上說,或狀態機內運行,具有獨立的控制期。從某種意義上說,它就是一個線程它就是一個線程在諸如在諸如Java的語言中,允許你將一個類的定義放在
32、另一的語言中,允許你將一個類的定義放在另一個類定義的內部,這就是嵌套類,在個類定義的內部,這就是嵌套類,在Java中也稱為內層中也稱為內層類。嵌套類是聲明在它的外層類中的,因此只能夠通過類。嵌套類是聲明在它的外層類中的,因此只能夠通過外層類或外層類的對象對它進行訪問外層類或外層類的對象對它進行訪問 50常見依賴關系與常見依賴關系與Java程序實現程序實現依賴構造型含義例子程序create表明目標對象是由源對象創建的,目標對象創建后將傳遞給系統其他部分。public class ClassApublic ClassB createB() return new ClassB();local或cal
33、l 源類對象創建目標類對象實例,并將該實例包含在一個局部變量中。例如右邊的例子中,將賦給一個名為test的變量 public class ClassApublic void testMethod() ClassB test=new ClassB(); parameter 源類對象通過它的某個成員函數的參數得以訪問目標類對象實例。它的意思是指:類ClassA的操作需要類ClassB的實例作為參數,或返回類ClassB的實例。 public class ClassA public void testMethod(ClassB test) / use b; delegate 源類對象把一個對于成員函
34、數的調用傳遞給目標類對象。這是現代編程語言和設計模式中很常用的一種機制,但這不屬于UML的標準關系。 public class ClassA private ClassB objectB; public void testMethod() objectB.testMethod(); 51Class StereotypeUML中三種主要的類版型w 邊界類, boundary classw 控制類, control classw 實體類, entity class引入多種類版型幫助分析和設計人員確定系統中的類引入多種類版型幫助分析和設計人員確定系統中的類. .52Boundary class邊界類
35、位于系統與外界的交界處邊界類位于系統與外界的交界處,包括包括:用戶界面類用戶界面類, , 如如: : 窗口、對話框、報表類等窗口、對話框、報表類等通訊協議類通訊協議類, , 如如: TCP/IP: TCP/IP的類的類直接與外部設備交互的類直接與外部設備交互的類直接與外部系統交互的類直接與外部系統交互的類邊界類的邊界類的UML表示方法表示方法:53Boundary class通過用例圖可以確定需要的邊界類通過用例圖可以確定需要的邊界類, 每個每個Actor/User case對至少需要一個邊界類對至少需要一個邊界類.但并不是每個但并不是每個Actor/Use case都需都需要生成惟一邊界類要
36、生成惟一邊界類, 多多個個actor啟動同一啟動同一use case可以使用同一邊可以使用同一邊界類界類.54Entity class實體類保存要放進持久存儲體實體類保存要放進持久存儲體( (數據庫數據庫/ /文件等文件等) )的信息的信息. .實體類通過事件流和交互圖發現實體類通過事件流和交互圖發現, , 采用目標領域術語命名采用目標領域術語命名. .通常實體類對應數據庫中的表通常實體類對應數據庫中的表, , 其屬性對應表的字段其屬性對應表的字段, , 但但實體類與數據庫中的表不一定是一一對應關系實體類與數據庫中的表不一定是一一對應關系. .55Control class控制類是負責管理或控
37、制其他類工作的類控制類是負責管理或控制其他類工作的類. .每個用例通常有一個控制類每個用例通常有一個控制類, , 控制用例中的事件順序控制用例中的事件順序, , 控制類也可以在多個用例間共用控制類也可以在多個用例間共用. . 控制較少接收消息控制較少接收消息, , 發出較多消息發出較多消息. .56Main Pointsw Class Diagram w How to read the Class diagram w How to draw the Class diagramw Class diagram Application Notes w Class diagram Case Study
38、w Object Diagram 57Class Design Stepsw Create Initial Design Classesw Define Operationsw Define Statesw Define Attributesw Define Dependenciesw Define Associationsw Define Internal Structurew Define Generalizationsw Resolve Use-Case Collisionsw Handle Nonfunctional Requirements in Generalw Checkpoin
39、ts581. 研究分析問題領域2. 發現對象與類,明確它們的含義和責任,確定屬性。3. 發現類之間的關系。把類之間的關系用關聯、泛化、聚集、組合、依賴等關系表達出來。4. 設計類與關系。調整和細化已得到的類和類之間的關系,解決諸如命名沖突、功能重復等問題。5. 繪制類圖并編制相應的說明。Steps to draw the Class diagram59Main Pointsw Class Diagram w How to read the Class diagram w How to draw the Class diagramw Class diagram Application Notes
40、 w Class diagram Case Studyw Object Diagram 60A class should have a single well-focused purpose. A class should do one thing and do it well!How Many Classes Are Needed?w Many, simple classes means that each class Encapsulates less of the overall system intelligence Is more reusable Is easier to impl
41、ementw A few, complex classes means that each class Encapsulates a large portion of the overall system intelligence Is less likely to be reusable Is more difficult to implement61軟件系統模型軟件系統模型類圖是類圖是UML建模中使用頻率最高的一種,應用場景歸為三類:業建模中使用頻率最高的一種,應用場景歸為三類:業務性模型、軟件系統模型和數據庫邏輯模型務性模型、軟件系統模型和數據庫邏輯模型業務性模型涉及的范圍比軟件系統更加
42、廣泛業務性模型涉及的范圍比軟件系統更加廣泛領域模型是從面向對象的視角看待現實世界的結果,也就是通過類領域模型是從面向對象的視角看待現實世界的結果,也就是通過類圖來描述現實世界中各種事物的關系。圖來描述現實世界中各種事物的關系。62軟件系統模型軟件系統模型分析模型和領域模型是很相近的,分析模型主要是針對軟件系統的分析模型和領域模型是很相近的,分析模型主要是針對軟件系統的分析,領域模型則更多是偏重對業務領域的分析分析,領域模型則更多是偏重對業務領域的分析實體類:實體對象的類,通常來自領域模型實體類:實體對象的類,通常來自領域模型控制類:控制對象的抽象,主要用來體現應用程序的執行邏輯控制類:控制對象
43、的抽象,主要用來體現應用程序的執行邏輯邊界類:邊界對象的抽象,通常是用來完成參與者與系統之間邊界類:邊界對象的抽象,通常是用來完成參與者與系統之間交互的對象,如交互的對象,如Form,菜單,接口等。,菜單,接口等。63軟件系統模型軟件系統模型設計模型則是在分析模型的基礎上添加設計元素的結果。與分析模設計模型則是在分析模型的基礎上添加設計元素的結果。與分析模型相比,設計模型中的類的屬性集更趨完善;型相比,設計模型中的類的屬性集更趨完善;可以加入模板類、抽象類可以加入模板類、抽象類/接口等設計元素,以及框架類的使用和接口等設計元素,以及框架類的使用和設計模式的使用設計模式的使用64數據庫邏輯模型數
44、據庫邏輯模型從某種意義上說從某種意義上說UML中的類圖是中的類圖是E-R圖的超集,圖的超集,E-R圖圖只針對存儲的數據,而類圖則在些基礎上,增加了行為只針對存儲的數據,而類圖則在些基礎上,增加了行為建模的能力。在使用類圖來表示建模的能力。在使用類圖來表示E-R模型時,要注意遵模型時,要注意遵循以下策略循以下策略 將表示將表示E-R模型的類,用模型的類,用UML的標準構造型的標準構造型“persistent”來表示;來表示; 展開類的結構性細節,并且加強關聯和多重性分析;展開類的結構性細節,并且加強關聯和多重性分析; 盡量消除循環關聯、盡量消除循環關聯、n-元關聯元關聯 65Main Point
45、sw Class Diagram w How to read the Class diagram w How to draw the Class diagramw Class diagram Application Notes w Class diagram Case Studyw Object Diagram 66Case Study: 個人圖書管理系統個人圖書管理系統小王是一個愛書之人,家里各類書籍已過千冊,而平時小王是一個愛書之人,家里各類書籍已過千冊,而平時又時常有朋友外借,因此需要一個個人圖書管理系統。又時常有朋友外借,因此需要一個個人圖書管理系統。該系統應該能夠將書籍的基本信息按計
46、算機類、非計算該系統應該能夠將書籍的基本信息按計算機類、非計算機類分別建檔,實現按書名、作者、類別、出版社等關機類分別建檔,實現按書名、作者、類別、出版社等關鍵字的組合查詢功能。在使用該系統錄入新書籍時系統鍵字的組合查詢功能。在使用該系統錄入新書籍時系統會自動按規則生成書號,可以修改信息,但一經創建就會自動按規則生成書號,可以修改信息,但一經創建就不允許刪除。該系統還應該能夠對書籍的外借情況進行不允許刪除。該系統還應該能夠對書籍的外借情況進行記錄,可對外借情況列表打印。另外,還希望能夠對書記錄,可對外借情況列表打印。另外,還希望能夠對書籍的購買金額、冊數按特定時間周期進行統計籍的購買金額、冊數
47、按特定時間周期進行統計 67w 名詞動詞法名詞動詞法:從從名詞與名詞短語中提取對象和屬性;從動名詞與名詞短語中提取對象和屬性;從動詞與動詞短語中提取操作與關聯,而所有格詞與動詞短語中提取操作與關聯,而所有格短語通常表明名詞應該是屬性而不是對象。短語通常表明名詞應該是屬性而不是對象。發現類發現類68發現類發現類小王小王是一個愛書之是一個愛書之人人,家里家里各類各類書籍書籍已過千冊,而平時已過千冊,而平時又時常有又時常有朋友朋友外借,因此需要一個外借,因此需要一個個人圖書管理系統個人圖書管理系統。該系統應該能夠將書籍的該系統應該能夠將書籍的基本信息基本信息按按計算機類計算機類、非計算非計算機類機類
48、分別建檔,實現按分別建檔,實現按書名書名、作者作者、類別類別、出版社出版社等等關關鍵字鍵字的組合查詢的組合查詢功能功能。在使用該系統錄入。在使用該系統錄入新書籍新書籍時時系統系統會自動按會自動按規則規則生成生成書號書號,可以修改,可以修改信息信息,但一經創建就,但一經創建就不允許刪除。該系統還應該能夠對書籍的外借情況進行不允許刪除。該系統還應該能夠對書籍的外借情況進行記錄記錄,可對,可對外借情況列表外借情況列表打印。另外,還希望能夠對書打印。另外,還希望能夠對書籍的籍的購買金額購買金額、冊數冊數按按特定時間周期特定時間周期進行統計進行統計 69篩選備選類篩選備選類“小王小王”、“人人”、“家里
49、家里”很明顯是系統外的概念,無須對其建模;很明顯是系統外的概念,無須對其建模;而而“個人圖書管理系統個人圖書管理系統”、“系統系統”指的就是將要開發的系統,即系指的就是將要開發的系統,即系統本身,也無須對其進行建模;統本身,也無須對其進行建模;很明顯很明顯“書籍書籍”是一個很重要的類,而是一個很重要的類,而“書名書名”、“作者作者”、“類類別別”、“出版社出版社”、“書號書號”則都是用來描述書籍的基本信息的,因則都是用來描述書籍的基本信息的,因此應該作為此應該作為“書籍書籍”類的屬性處理,而類的屬性處理,而“規則規則”是指書號的生成規則,是指書號的生成規則,而書號則是書籍的一個屬性,因此而書號
50、則是書籍的一個屬性,因此“規則規則”可以作為編寫可以作為編寫“書籍書籍”類類構造函數的指南。構造函數的指南。“基本信息基本信息”則是書名、作者、類別等描述書籍的基本信息統稱,則是書名、作者、類別等描述書籍的基本信息統稱,“關鍵字關鍵字”則是代表其中之一,因此無需對其建模;則是代表其中之一,因此無需對其建模;“功能功能”、“新書籍新書籍”、“信息信息”、“記錄記錄”都是在描述需求時使用都是在描述需求時使用到的一些相關詞語,并不是問題域的本質,因此先可以將其淘汰掉;到的一些相關詞語,并不是問題域的本質,因此先可以將其淘汰掉;70篩選修選類篩選修選類“計算機類計算機類”、“非計算機類非計算機類”是該
51、系統中圖書的兩大分類,因此是該系統中圖書的兩大分類,因此應該對其建模,并改名為應該對其建模,并改名為“計算機類書籍計算機類書籍”和和“非計算機類書籍非計算機類書籍”,以減少歧義;以減少歧義;“外借情況外借情況”則是用來表示一次借閱行為,應該成為一個候選類,則是用來表示一次借閱行為,應該成為一個候選類,多個外借情況將組成多個外借情況將組成“外借情況列表外借情況列表”,而外借情況中一個很重要,而外借情況中一個很重要的角色是的角色是“朋友朋友”借閱主體。本系統中并不需要建立借閱主體。本系統中并不需要建立“朋友朋友”的的資料庫,因此無需建模。為了能夠更好地表述,將資料庫,因此無需建模。為了能夠更好地表
52、述,將“外借情況外借情況”改改名為名為“借閱記錄借閱記錄”,而將,而將“外借情況列表外借情況列表”改名為改名為“借閱記錄列借閱記錄列表表”;“購買金額購買金額”、“冊數冊數”都是統計的結果,都是一個數字,因此不都是統計的結果,都是一個數字,因此不用將其建模,而用將其建模,而“特定時限特定時限”則是統計的范圍,也無需將其建模;則是統計的范圍,也無需將其建模;不過從這里的分析中,我們可以發現,在該需求描述中隱藏著一個不過從這里的分析中,我們可以發現,在該需求描述中隱藏著一個關鍵類關鍵類書籍列表,也就是執行統計的主體。書籍列表,也就是執行統計的主體。71得到候選類得到候選類在使用在使用“名詞動詞法名
53、詞動詞法”尋找類的時候,很多團隊會在此尋找類的時候,很多團隊會在此耗費大量的時間,特別是對于中大型項目,這樣很容易耗費大量的時間,特別是對于中大型項目,這樣很容易迷失方向。其實在此主要的目的是對問題領域建立概要迷失方向。其實在此主要的目的是對問題領域建立概要的了解,無需太過咬文嚼字的了解,無需太過咬文嚼字 書籍 計算機類書籍 非計算機類書籍借閱記錄 借閱記錄列表 書籍列表72關聯分析,建模,多重性分析,再建模關聯分析,建模,多重性分析,再建模73職責分析職責分析書籍類:從需求描述中,可找到書籍類:從需求描述中,可找到書名、類別、作者、出版社書名、類別、作者、出版社;同時;同時從統計的需要中,可
54、得知從統計的需要中,可得知“定價定價”也是一個關鍵的成員變量。也是一個關鍵的成員變量。書籍列表類:書籍列表就是全部書籍列表類:書籍列表就是全部的藏書列表,其主要的成員方法的藏書列表,其主要的成員方法是新增、修改、查詢(按關鍵字是新增、修改、查詢(按關鍵字查詢)、統計(按特定時限統計查詢)、統計(按特定時限統計冊數與金額)。冊數與金額)。借閱記錄類:借閱人(朋友)、借閱記錄類:借閱人(朋友)、借閱時間。借閱時間。借閱記錄列表類:主要職責就是借閱記錄列表類:主要職責就是添加記錄(借出)、刪除記錄添加記錄(借出)、刪除記錄(歸還)以及打印借閱記錄(歸還)以及打印借閱記錄 職責的添加是一個循序漸進的過程,職責的添加是一個循序漸進的過程,在領域類分析、設計時都將逐步對類模型進行完善在領域類分析、設計時都將逐步對類模型進行完善74限定與修改限定與修改導航性分析:導航性分析:Book與與BookList之間、之間、BorrowRecord和和BorrowList之間是組合關系均無需添加方向描述,而之間是組合關系均無需添加方向描述,而Book與與BorrowRecord之間則是雙方關聯,也無需添加之間則是雙方關聯,也無需添加約束:約束:Book對象創建后就不能夠對象創建后就不能夠被
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025江蘇揚州工業職業技術學院博士專項招聘16人筆試備考試題完整答案詳解
- 2025廣西來賓市招聘鄉村振興專員221人筆試備考題庫及答案詳解1套
- 2025年東營市公務員考試行測試卷歷年真題附答案詳解(模擬題)
- 山東省濟寧市微山縣2023-2024學年七年級下學期7月期末考試生物試卷(含答案)
- 山東省廣饒縣2024-2025學高二下學期第一次月考物理試題(解析版)
- 江蘇省蘇州市2024-2025學年高一下學期4月期中調研物理試卷(解析版)
- 護理中的體溫調節
- 房地產項目招投標管理技巧
- BIM在污染治理工程中的應用案例
- 綠色施工案例分析成功項目分享
- 山西財經大學華商學院《Java程序設計》2023-2024學年第二學期期末試卷
- 2025年AI在中醫診斷中的創新應用探討
- 油氣管道輸送試題及答案
- 直飲機管理制度
- 醫院DRG培訓課件
- 農業經濟的基礎試題及答案
- 2024年中國計量發展白皮書
- 廣東食品安全管理人員抽查考核題庫附答案
- 糧食公司筆試題庫及答案
- 《DTP藥房管理中靜脈注射類創新藥物患者用藥風險識別分析5400字》
- 肥胖中醫養生知識講座
評論
0/150
提交評論