麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

在Java中保留Stereotype

2019-11-18 13:29:27
字體:
來源:轉載
供稿:網友

  我們比較了在java編程語言以及UML建模語言這兩種環境中,類以及類之間關系在表達方式以及概念方面的差異。下面我們要來看看UML Stereotype機制對于編寫Java代碼的影響。
  在Java程序中保留Stereotype
  UML擁有一系列可用來擴展其核心概念的機制,但最為人們熟知的也許就是Stereotype。Stereotype一般譯作“構造型”,它是一種擴展元模型語義的建模元素。構造型必須基于元模型中特定的現有類型或類。構造型可擴展已有類型和類的語義,但不能改動它們的結構。構造型默認的表示方法是在要害詞四周加上尖角雙括號,這種雙括號在某些歐洲語言中自然存在,因為它很象兩個尖括號,所以用兩個尖括號也是一種被認可的表示方式。
  構造型幾乎適用于UML中的任何元素,包括類、屬性、操作以及關聯等。例如,我們可以用構造型來顯示UML圖中一個類別的類。圖一顯示了用構造型來表示State設計模式中一個類扮演的角色,改編自《Design Patterns》一書。UML定義了大量的標準構造型,我們既可以使用這些標準構造型,也可以定義自己的構造型。
   在Java中保留Stereotype(圖一)
  圖一:UML構造型用于表示類在設計模式中的角色
  圖一中的MessageStatus接口本來應該讓interface這個詞位于尖括號之內。但是,為了把接口和其他構造型區分出來,用來制作本文UML圖的Together ControlCenter工具已予以省略。這是因為接口與其他構造型不同,“在UML元模型中接口也具有與類相似的特性”。
  
  直到UML1.4之前(20001年9月),UML中的一個圖形元素只能有一個構造型。但在UML 1.4中,OMG(對象治理組織)取消了這個限制,現在一個圖形元素可以有多個構造型。許多UML工具由于未能跟上這一變化,所以仍沒有提供這方面的支持。
  
  那么,構造型對于我們的Java代碼又有何影響呢?從某種意義上講,答案是“完全沒有”,因為Java沒有提供任何讓我們按照這種方式對類進行分類的手段(前面幾篇文章已經討論了接口和繼續,在UML中它們都有自己特定的表示方法)。但是,另一方面,我們可以利用構造型更清楚、明白地說明Java代碼的含義:首先約定構造型的具體意義,然后在源代碼注釋中以一個新的javadoc標記的形式包含構造型,有效地減少為了說明Java代碼含義而需要手工編寫的說明文字數量。下面的代碼片斷就是圖一Sent類的骨架代碼,構造型以一個定制javadoc標記的形式加入到了注釋之中:
  
  /**
   * @Stereotype concreteState
   * @author AuthorName
   * @version 0.0001
   */
  public class Sent implements MessageStatus {
  }
  在UML中,并非只有類可以通過指定構造型而約束其定義。圖二顯示了兩個類之間的依靠關系,用構造型來表示這種依靠關系的類型。在這個例子中,Factory類的對象負責創建Item類的對象。Factory類的代碼顯示了定制的javadoc標記如何用構造型來簡潔明了地說明這種依靠關系。
   在Java中保留Stereotype(圖二)
  圖二:加注instantiate構造型的UML依靠關系
  符號說明:在前面的文章中,我們看到了三種類之間的關系,這里出現的是第四種。關聯關系用一根實線加上開叉的箭頭表示(假如關聯關系是單向的話),一般化關系用實線加上封閉的箭頭(從子類指向超類)表示,Realization關系用虛線加上封閉的箭頭(從實現接口的類指向接口)表示。現在我們看到了第四種箭頭與線型的組合:虛線加上開叉箭頭表示的依靠關系。
  
  public class Factory
  {
   /**
  * @dependency <> Item
  * @return a new Item
  */
   public Item createItem() {
    return new Item();
   }
  }
  操作和屬性同樣可以指定構造型。如圖三所示,兩個操作被加注了構造型,用來表示它們是否會修改屬性的值。與圖三對應的源代碼同樣利用定制的javadoc標記說明該方法的構造型信息。
   在Java中保留Stereotype(圖三)
  圖三:為類的操作加注UML構造型
  public class Sale
  {
  ...
   /**
  * @Stereotype query
  * @return total PRice of sale
  */
   public BigDecimal calcTotal() {
   }
  ...
  }
  在java源代碼中加上了描述構造型信息的定制javadoc標記之后,好處不僅僅在于減少了需要手工編寫的注釋,而且使得UML工具有可能處理這些標記并完成下面這類任務:
  
  從Java源代碼重新生成(比沒有定制javadoc標記的情況下)更加完整的UML圖。
  
  在Javadoc生成的文檔中增加額外的信息。
  例如,本文所用的建模工具TogetherSoft的Together ControlCentre,就是用這種方法來保留各種無法直接在Java源代碼中保留的UML類圖語義信息。
  其他表示方法
  本文開頭提到,尖括號是顯示構造型的默認方式。實際上,構造型還可以用改變圖形符號或外形的方式表示。圖四的例子顯示了兩個帶有<>構造型的類。Cashier利用<>構造型的替代符號畫出,Manager類用默認的矩形畫出。在使用替代符號時,很難再列出類的各種屬性和操作,所以通常省略。還有第三種表示方法,即在常規的矩形符號內的類名稱右邊放上一個很小的替代符號,但現在這種表示方法已經不太見到了。
   在Java中保留Stereotype(圖四)
  圖四:<>構造型的替代符號
  在類圖中使用替代符號表示構造型有一個很大的缺點,假如有些人不熟悉類圖用到的符號,要理解類圖表達的是什么意思就很困難了。另外,多一種符號,理解圖形的負擔就增加一分。在這個系列的文章中,我們只關注那些最常見的UML類圖符號。
  
  除了用改變符號外形的方法來表示已經指定了某種構造型之外,我們還可以通過改變圖形元素的顏色或紋理來表達同樣的信息。運用色彩意味著我們可以保留常規的圖形外形和符號,同時又能表達出與改變外形同樣多的視覺信息(假如不是更多的話)。另外,與抽象的外形相比,簡單的配色方案一般更輕易把握一些。
  在Java中保留Stereotype(圖五)
  圖五:在類圖中運用色彩
  圖五的彩色類圖運用了Peter Coad等人的四色原型(Archetype)組合來定義類。
  粉紅色的<>類表示在一個系統中,由于業務或者合法性的原因必須跟蹤的事件或活動。CarSale和CarRental就是兩個粉紅色類的例子。
  黃色的<>類代表參與事件或活動的方式,例如,CarSalesperson和Customer都是黃色類的例子。
  綠色的類可進一步分成<>(通常是一個人或組織)、<>(事件或活動發生的地點)以及>(實際涉及事件或活動的物體)。
  第四種原型是藍色的catalog-entry-like-description(簡稱<>),表示的是諸如現實當中的汽車與展覽目錄中的描述之間的差異:汽車型號屬于藍色的類,它包含一系列的值和取值范圍描述所有屬于該類別的車,而每一輛現實中的車則由綠色的<>來表示。
  屬于特定原型的類具有或多或少相似的屬性和行為,屬于同一原型的類還會傾向于以通常而言可猜測的方式與其他原型的類交互。這些特征和行為模式可以幫助我們快速構造出健壯的、可擴展的對象模型,迅速把握有可能被忽略的屬性和操作,增強我們對代碼結構的信心。圖五顯示了我們可能在各種原型的類中找到的屬性和操作,以及各種原型之間的典型關系。
  結束語:在這篇文章中,我們了解了對于UML中一些很有用的概念,假如它在Java語言中沒有直接的等價概念,如何在Java代碼中利用UML的這些概念來保留高層次的設計思想。在下一篇文章中,我們將離別UML類圖,轉而討論UML另一種重要的圖形——交互圖,包括序列圖和協作圖。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 狠狠干天天操 | 国产1区2区3区中文字幕 | 最近中文字幕一区二区 | 在线观看视频亚洲 | 国产88久久久国产精品免费二区 | 一区二区三区四区高清视频 | 日本中文视频 | 久久91久久 | 青青草国产在线视频 | 91精品国产乱码久久久久 | 国产精品手机在线亚洲 | 孕妇体内谢精满日本电影 | 国产chinesehd精品91 | 午夜视频国产 | 久久精品亚洲精品国产欧美kt∨ | 国产精品视频自拍 | 国产精品久久久久久一区二区三区 | 国产亚洲精品综合一区91555 | 黄污污网站 | 天天碰天天操 | 九一成人| 欧美特一级片 | 黄色高清免费 | 免费啪视频在线观看 | 91社区电影 | 欧美视频国产 | 一区二区久久精品66国产精品 | 亚欧在线免费观看 | 美女网站黄在线观看 | 欧美日韩亚洲成人 | 羞羞色在线观看 | 毛片大全 | 本色视频aaaaaa一级网站 | 99re热视频这里只精品 | 久久网站热最新地址 | 美女在线观看视频一区二区 | 成人啪啪18免费网站 | 午夜免费一区 | 亚洲国产精品500在线观看 | 99国内精品视频 | 中文字幕免费在线观看视频 |