/** * @Stereotype concreteState * @author AuthorName * @version 0.0001 */ public class Sent implements MessageStatus { } 在UML中,并非只有類可以通過指定構造型而約束其定義。圖二顯示了兩個類之間的依靠關系,用構造型來表示這種依靠關系的類型。在這個例子中,Factory類的對象負責創建Item類的對象。Factory類的代碼顯示了定制的javadoc標記如何用構造型來簡潔明了地說明這種依靠關系。 圖二:加注instantiate構造型的UML依靠關系 符號說明:在前面的文章中,我們看到了三種類之間的關系,這里出現的是第四種。關聯關系用一根實線加上開叉的箭頭表示(假如關聯關系是單向的話),一般化關系用實線加上封閉的箭頭(從子類指向超類)表示,Realization關系用虛線加上封閉的箭頭(從實現接口的類指向接口)表示。現在我們看到了第四種箭頭與線型的組合:虛線加上開叉箭頭表示的依靠關系。
public class Factory { /** * @dependency <> Item * @return a new Item */ public Item createItem() { return new Item(); } } 操作和屬性同樣可以指定構造型。如圖三所示,兩個操作被加注了構造型,用來表示它們是否會修改屬性的值。與圖三對應的源代碼同樣利用定制的javadoc標記說明該方法的構造型信息。 圖三:為類的操作加注UML構造型 public class Sale { ... /** * @Stereotype query * @return total PRice of sale */ public BigDecimal calcTotal() { } ... } 在java源代碼中加上了描述構造型信息的定制javadoc標記之后,好處不僅僅在于減少了需要手工編寫的注釋,而且使得UML工具有可能處理這些標記并完成下面這類任務: