两种重要的图——Snapshot diagram UML diagram
Snapshot diagram (代碼快照圖)
- 用于描述程序運行時的內部狀態,包括堆和棧的調用。
- 刻畫各類變化隨時間的變化,描述各類概念如:原始類型/對象類型,不可變對象/可變對象,引用別名
- 刻畫基本類型的值:直接用一個箭頭指向它。
- 刻畫對象類型的值:用圈圈起來,再用一個箭頭指向它,在圈的里面有一個label來標識它的類型。圈的內部可以包含類的各個屬性(基本類型/對象類型),一個箭頭由屬性的名字指向屬性的值。
- 不可變對象的值用雙線橢圓來表示,如String,下圖中s所指向的String對象就發生了改變。
- 可變對象的值用單線橢圓來表示,可變對象內部屬性的值可以發生改變,如StringBuilder。
- 不可變的引用(用final修飾)用雙線箭頭來表示。如下圖中,id是不可變的,age是可變的。
- 有的時候,變量的引用是不可變的,即只能指向這唯一一個對象,但這個對象的值是可以改變的,如final StringBuilder。
- Example
下面這段代碼的Snapshot diagram。
- 一些復雜數據類型的Snapshot diagram
List:
Set:
Map:
UML類圖
類圖基礎屬性
+表示public
-表示private
#表示protected
~表示default,也就是包權限
_下劃線表示static
斜體表示抽象類
在UML中,類使用包含類名、屬性和操作且帶有分隔線的長方形來表示,如定義一個Employee類,它包含屬性name、age和email,以及操作modifyInfo(),在UML類圖中該類如圖所示:
在UML類圖中,類一般由三部分組成:
類名、屬性、操作
UML規定屬性的表示方式為:可見性 名稱:類型 [ = 缺省值 ]
UML規定操作的表示方式為:可見性 名稱(參數列表) [ : 返回類型]
對于接口,可以在接口名的上方寫<<interface>>
類與類之間關系
在UML類圖中,常見的有以下幾種關系: 泛化(Generalization), 實現(Realization),關聯(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)
下面是一幅從網上摘取的生動形象的圖。
關聯關系通常將一個類的對象作為另一個類的成員變量。在使用類圖表示關聯關系時可以在關聯線上標注角色名,一般使用一個表示兩者之間關系的動詞或者名詞表示角色名。
如在一個登錄界面類LoginForm中包含一個JButton類型的注冊按鈕loginButton,它們之間可以表示為關聯關系,代碼實現時可以在LoginForm中定義一個名為loginButton的屬性對象,其類型為JButton。
關聯關系又分為單向關聯、雙向關聯、自關聯、聚合關系、組合關系。
其中聚合關系和組合關系比較特別。
聚合(Aggregation)關系表示整體與部分的關系。在聚合關系中,成員對象是整體對象的一部分,但是成員對象可以脫離整體對象獨立存在。在UML中,聚合關系用帶空心菱形的直線表示。例如:汽車發動機(Engine)是汽車(Car)的組成部分,但是汽車發動機可以獨立存在,因此,汽車和發動機是聚合關系。
在代碼實現聚合關系時,成員對象通常作為構造方法、Setter方法或業務方法的參數注入到整體對象中,上圖對應的Java代碼片段如下:
組合(Composition)關系也表示類之間整體和部分的關系,但是在組合關系中整體對象可以控制成員對象的生命周期,一旦整體對象不存在,成員對象也將不存在,成員對象與整體對象之間具有同生共死的關系。在UML中,組合關系用帶實心菱形的直線表示。例如:人的頭(Head)與嘴巴(Mouth),嘴巴是頭的組成部分之一,而且如果頭沒了,嘴巴也就沒了,因此頭和嘴巴是組合關系,如圖所示。
泛化關系
泛化有兩種——繼承、實現。
類與類之間的繼承關系用實線和空心三角來表示。
類對接口的實現用虛線和空心三角來表示。
總結
以上是生活随笔為你收集整理的两种重要的图——Snapshot diagram UML diagram的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ICS大作业——程序人生 Hello‘s
- 下一篇: 如何设计复用性较好的类?