软件工程 第三章:类图
生活随笔
收集整理的這篇文章主要介紹了
软件工程 第三章:类图
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第三章:類圖
概念
- 類圖的概念:類圖是描述類、接口以及它們之間關系的圖,它顯示了系統中各個類的靜態結構,是一種靜態模型。
- 分類可以有效地使復雜問題簡化。建立類模型的過程,是把現實世界中與問題有關的各種對象及其相互關系進行抽象和分類的過程。
類圖的組成
2類元素(接口、類),4種關系
-
對象:是人們對某個事物的一種抽象描述。對象的基本特征可以歸納為對象的屬性和行為兩類。
-
類:類是指對一組具有相同特征的對象的抽象描述;任何對象都是某個類的實例。
-
關聯關系:
- 泛化關系:
泛化(Generalization): 抽象化
特化(Specialization): 實例化
- 依賴關系:
區別:
- 依賴關系VS關聯關系
當一個類的實例與另一個類的一些特定實例存在固定的對應關系時,這兩個系統之間為關聯關系。只要一個類用到另一個類,但是和另一個類的關系不是太明顯的時候(可以說是“uses”了那個類),就可以把這種關系看成是依賴,依賴也可說是一種偶然的關系。
“我在某個方法中偶然用到了它,但在現實中我和它并沒多大關系”。
-
實現關系:
-
聚合與組合:
對于聚合:
聚合表示類之間的整體與部分的關系。聚合意味著一個類擁有但共享另一個類的對象。
當整體類不存在時,部分類仍可能存在。部分類被銷毀時,整體類也將能夠存在。
對于組合:
組合是一種特殊形式的聚合。與聚合相比,它有兩個特點:
一個部分類最多只能屬于一個整體類
當整體類不存在時,部分類將同時被銷毀。
- 關聯VS聚合(組合)
關聯關系所涉及的兩個類是處在同一個層次上的。比如學生和課程就是一種關聯關系,而不是聚合關系,因為學生不是由課程組成的。聚合關系涉及的兩個類處于不平等的層次上,一個代表整體,一個代表部分。比如電腦和顯示器、鍵盤、主板、內存就是聚合關系,因為主板等是電腦的組成部分。 - 聚合VS組合
組合:整體類端的重數必須是1,部分類的重數是任意的
聚合:整體類端的重數可以大于1,部分類的重數是任意的
聚合也是表示類和類之間的“整體-部分”關系,用空心菱形表示。
組合是聚合的一種特殊情形,用實心菱形表示
- 約束規則
在畫類圖的過程中,關聯、屬性和操作等基本要素都要為模型加注約束條件。
約束規則的語法:將約束條件放在括號{ }中,用自然語言或其他常見的設計語言來描述,其描述要簡潔準確。
在理想的情況下,在所使用的程序設計語言中,規則應該作為斷言來實現,并在調試代碼時調用它。
- 對象圖
三個層次的觀點
- 概念層:描述應用域中的概念,是對現實世界的直接描述,與實現它們的類有關,但與實現方案和實現語言無關。
- 說明層:描述軟件的接口,而不是軟件的實現。一個類型描述一個接口,但可能有多種實現。
- 實現層:從實現的角度定義類及其實現,揭示了軟件實現體的構成情況。
類圖建模分析步驟
(1)尋找出需求中的名詞(候選對象)。
(2)合并含義相同的名詞,排除范圍以外的名詞,并尋找隱含的名詞。
(3)去掉只能作為類屬性的名詞。
(4)剩下的名詞就是要找的分析類(候選類)。
(5)根據常識、問題域、系統責任確定該類有那些屬性。
(6)補充該類動態屬性,如狀態、對象間聯系(如聚合、關聯)等屬性。
(7)從需求中的動詞、功能或系統責任中尋找類的操作(候選操作)。
(8)從狀態轉換,流程跟蹤、系統管理等方面補充類的操作。
(9)對所尋找的操作進行合并、篩選。
(10)對所尋找的操作在類間進行合理分配(職責分配),形成每個類候選操作。
(11)補充每個類的的分析文檔,為類的進一步設計打下基礎。
小結:
(1)名稱;(2)屬性;(3)行為;
(1)繼承:子類繼承了超類的所有屬性和行為;
(2)關聯:兩個不同類之間關聯,可以單向或雙向;
(3)聚合:強關聯關系,整體與部分的生命周期分開;
(4)組合:強聚合,整體與部分的生命周期相同;
(1)概念層;(2)說明層;(3)實現層
總結
以上是生活随笔為你收集整理的软件工程 第三章:类图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android架构演进 · 设计模式·
- 下一篇: 【数据结构】一个简单的计算器