亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

在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另一種重要的圖形——交互圖,包括序列圖和協作圖。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久久av| 福利视频一区二区| 亚洲大胆人体av| 色播久久人人爽人人爽人人片视av| 久久久精品免费| 欧美极品少妇xxxxⅹ裸体艺术| 91久久精品美女| 亚洲区中文字幕| 精品无人国产偷自产在线| 国产一区二区成人| 国产精品女主播视频| 伊人青青综合网站| 亚洲成人1234| 欧美肥老太性生活视频| 国自在线精品视频| 亚洲jizzjizz日本少妇| 亚洲福利影片在线| 欧美日韩亚洲精品一区二区三区| 国产日韩在线精品av| 国产精品99一区| 国产99在线|中文| 日韩av第一页| 91色p视频在线| 国产精品久久久91| 亚洲国产高清自拍| 亚洲欧美精品一区二区| 伊人久久久久久久久久久| 亚洲天堂开心观看| 美女撒尿一区二区三区| 亚洲va国产va天堂va久久| 欧美激情区在线播放| 欧美超级乱淫片喷水| 亚洲精品福利视频| 国产亚洲一级高清| 亚洲综合精品一区二区| 久久精品国产亚洲精品2020| 日韩不卡在线观看| 色综合五月天导航| 91精品国产综合久久香蕉922| 日韩精品久久久久久福利| 久久精品99久久久香蕉| 亚洲成人久久网| 国产精品99导航| 欧美午夜电影在线| 欧美大片第1页| 亚洲精品电影在线| 91产国在线观看动作片喷水| 欧美视频不卡中文| 国产97免费视| 成人h猎奇视频网站| 成人夜晚看av| 亚洲精品自产拍| 成人免费视频网址| 国产成人精品午夜| 欧美极品美女电影一区| 精品久久久久久中文字幕大豆网| 国产精品综合不卡av| 亚洲人成绝费网站色www| 亚洲国产精品99| 欧美性猛交xxxx免费看久久久| 国产拍精品一二三| 久久999免费视频| 国外成人在线直播| 日本高清不卡在线| 色综合视频一区中文字幕| 日韩在线免费视频观看| 91po在线观看91精品国产性色| 欧美激情亚洲精品| 中文字幕精品www乱入免费视频| 欧美电影免费观看大全| 精品久久久久久电影| 最新中文字幕亚洲| 亚洲午夜女主播在线直播| 国产精品三级网站| 亚洲最大福利网站| 97香蕉超级碰碰久久免费的优势| 国产精品久久久久99| 欧美xxxx综合视频| 亚洲视频免费一区| 这里只有精品视频在线| 亚洲天堂第二页| 久久精品国产电影| 欧美激情三级免费| 成人性生交大片免费看视频直播| 尤物tv国产一区| 在线观看成人黄色| 国产欧美日韩高清| 亚洲已满18点击进入在线看片| 国产综合香蕉五月婷在线| 国产精品久久久久久久久粉嫩av| 亚洲综合国产精品| 青青草一区二区| 亚洲女人天堂视频| 日本一区二区三区在线播放| 亚洲欧美日韩另类| 亚洲欧美成人网| 在线观看国产精品淫| 在线观看欧美日韩国产| 亚洲综合在线中文字幕| 亚洲级视频在线观看免费1级| 久久精品国产成人| 精品香蕉在线观看视频一| 久久久久久国产精品久久| 成人免费视频97| 亚洲一区二区黄| 久久人人97超碰精品888| 韩国精品美女www爽爽爽视频| 久久久国产精彩视频美女艺术照福利| 国产精品久久久久久久av电影| 国产中文字幕亚洲| 中日韩美女免费视频网站在线观看| 97精品国产97久久久久久春色| 91在线视频九色| 亚州精品天堂中文字幕| 狠狠色狠狠色综合日日小说| 久久久精品一区二区三区| 日韩精品免费在线播放| 亚洲国产精品成人va在线观看| 日韩精品在线免费| 久久精彩免费视频| 一区二区三区视频在线| 国产91精品在线播放| 精品美女永久免费视频| 欧美日韩国产精品一区二区三区四区| 欧美在线亚洲在线| 亚洲美女av电影| 成人av电影天堂| 日韩hd视频在线观看| 欧美日韩国产精品专区| 日韩中文字幕精品| 久久久精品免费| 欧美激情国产日韩精品一区18| 久久久久久久久久久国产| 日韩精品免费看| 一区二区三区无码高清视频| www.亚洲男人天堂| 国产精品久久久久久中文字| 日韩av在线高清| 国产日韩av在线播放| 国产视频亚洲视频| 亚洲风情亚aⅴ在线发布| 欧美视频在线视频| 欧美又大又粗又长| 一区二区三区动漫| 91成人国产在线观看| 视频在线一区二区| 日韩高清电影免费观看完整| 日韩在线观看免费高清| 精品亚洲一区二区三区在线观看| 欧美中文字幕视频在线观看| 欧美一级大片在线免费观看| 国产精品jvid在线观看蜜臀| 国产精品第一第二| 久久中文字幕视频| 欧洲成人在线视频| 欧美人在线观看| 在线看国产精品| 亚洲日本成人网| 日本一区二区三区四区视频| 国产成人福利夜色影视| 国产精品免费视频xxxx| 亚洲精品久久在线| 亚洲色图17p| 国产精品老女人视频|