代碼的文件頭與備忘一中的一樣,這裏不再列出。因爲我一直在對博客進行修改,其他網站轉載的內容可能已經與原文不一樣,所以請關注51CTO中的原創文章。
示例七
% 51CTO陸巍的博客
\begin{center}
\begin{tikzpicture}
\umlclass[x = 0, y = 0, draw = purple]{DB}{}
{+ store(ProductData)\\ + getProductData(sku)\\ + deleteProductData(sku)}
\umlsimpleclass[left = 1cm of DB, draw = purple]{ProductData}
\umlsimpleclass[right = 1cm of DB, draw = purple]{Application}
\begin{umlpackage}[x = -3.86, y = -3.0, draw = purple, fill = umlyellow]{java{.}sql}
\umlsimpleclass[x = 0, y = 0, draw = purple]{Connection}
\umlsimpleclass[x = 3, y = 0, draw = purple]{Statement}
\umlsimpleclass[x = 6.4, y = 0, draw = purple]{Driver Manager}
\umlsimpleclass[x = 0, y = -1, draw = purple]{ResultSet}
\umlsimpleclass[x = 3.5, y = -1, draw = purple]{Prepared Statement}
\umlsimpleclass[x = 7.4, y = -1, draw = purple]{SQLException}
\end{umlpackage}
\umluniassoc[draw = purple]{Application}{DB}
\umluniassoc[draw = purple]{DB}{ProductData}
\umlVHVuniassoc[arm1 = 1.5cm, draw = purple]{Application}{ProductData}
\umluniassoc[draw = purple]{DB}{java{.}sql}
\end{tikzpicture}
\\[0.4cm]\heiti 圖15.1 DB FACADE\song
\end{center}
效果如下:
說明:
1) 示例中包的名稱爲java.sql,但是在代碼中不能直接這樣打,會報錯,所以使用大括號把小數點括起來,這樣就不會報錯了。對於英文的逗號之類的符號也是如此處理。
2) umlpackage的位置雖然也可以使用“below = 1cm of DB”這樣的方式來確定,但這樣做的話,包內class的座標會以整個圖形爲參照,而不是以包的位置爲參照。所以這裏對包的位置使用了座標值表示,而不是使用相對位置來表示。
3) 我目前還沒有找到給名稱換行的方法(\\、\newline等命令無效),所以這些標題都在一行,看上去不太美觀。對外觀要求高的朋友可以直接使用tikz中的基本繪圖語句來繪製,可以做得很好看。這裏使用的tikz-uml宏包本身就是由tikz擴展而來,所以完全可以在這裏面使用tikz繪圖語句。