<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    MDA之路

    MDA,UML,XML,Eclipse及Java相關的Blog
    posts - 53, comments - 494, trackbacks - 0, articles - 2
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    程序員眼中的UML(3)--類圖,就是比你高一點

    Posted on 2005-06-17 22:26 wxb_nudt 閱讀(6604) 評論(8)  編輯  收藏 所屬分類: 技術雜談

    程序員眼中的UML(3)

    --類圖,就是比你高一點

    UML的成功80%是因為類圖,提到UML的時候有90%的人想到了類圖,應用UML的時候100%應用了類圖。如果類圖和源代碼走到一起,肯定是要代碼抗釘耙的,因為論武功和智慧,類圖都高了那么一點點。

    亂談類圖

    如果說程序是一個人,那么類圖就是這個人的軀體。也就是說,光有類圖,一個程序已經成型了,看上去很像那么一回事了。UML在刻畫程序的靜態結構方面很成功,但是在刻畫程序的動態語義時很失敗,至今沒有一個好的解決方案,或者說,沒有一個能讓各方面都接受的方案。如果UML動態語義的問題解決了,那么MDA的目標就真的達到了,模型可以完全代替代碼了。

    目前的MDA工具,號稱模型代碼同步的,號稱代碼生成的,號稱PIM/PSM轉換的,大部分都只是和類圖打交道罷了。因為類圖和代碼之間的轉換是如此自然,以至于出現了Together這樣的工具,模型(類圖而已)和代碼是同步的。

    類圖是程序的軀體,動作語義才是程序的靈魂,可惜UML在刻畫程序靈魂的事情上做得太不出色了。很多研究者僅僅把目光放在類圖上,類圖到代碼的生成幾乎已經沒有什么可以研究了,還是抱住不放,在生成的代碼中加入約束、加入設計模式、加入持久化存儲等等。怒其不爭、哀其無志。想到自己也是其中的一員,不由臨表涕零。

    類圖難點問題總結

    類圖是非常容易學習的,因為它和面向對象編程是孿生兄弟,如今的程序員哪有不懂面向對象的,因此類圖對于他們,就如同奶瓶對于嬰兒一般。下面從硬盤中翻出一幅曾經自己畫的類圖,相信大家一看便知:
    image001.jpg

    類圖是一門易學難精的技術,正如面向對象技術一樣,一百個程序員九十九個都說自己懂面向對象,但是真正入門的可能不到十個,真正精通的也許只有一個,這個人還往往不是中國人,唉~

    自己重新學習UML的動機就來自于一次論文撰寫過程中,想查閱類圖的元模型圖,但是問遍同行,翻遍網絡,找不到合適的圖形或者描述,最后只能求救于OMGUML規范。一查之下,大驚失色,原來很多東西原來都是懵懵懂懂,不甚了了。因此痛下決心,要弄懂類圖中的疑點。

    翻看類圖,我發現有如下是疑點所在:

    l         AttributeProperty的關系如何?區別和共同點是什么?

    l         完整的描述一個操作(Operation),需要多少東西?

    l         類之間可以有關系(Relationship),關系可以是關聯(Association)或者泛化(Generalization),這個你知道么?

    l         關聯有七種:普通關聯、遞歸關聯、限定關聯、或關聯、有序關聯、三元關聯、聚合(聚合和組合),各自有什么含義?用法如何?

    l         關聯類(Association Class)的含義如何?應用場景如何?

    l         類的實例化是對象,關聯的實例化是什么呢?

    總結出了這些疑點要歸功于中文UML書籍的模糊和混亂,或者是翻譯者的語焉不詳。所以讓我在復習時找出了這么多的疑點。

    要查閱資料,解決疑難,并舉例說明,起碼需要34天的時間,因此這篇隨筆就作為類圖的引文先發了。也希望志同道合者和我一起研究上面的問題。

    后記

    周末了,想偷懶了,結果適得其反,剛剛完成這篇blog就停電了,后面的幾百字全沒了。這一點告訴我們,持久化存儲是多么重要啊~


    評論

    # re: 程序員眼中的UML(3)--類圖,就是比你高一點  回復  更多評論   

    2005-06-17 23:20 by xiterator
    1) Attribute和Property的關系如何?區別和共同點是什么?
    UML2.0中已沒有UML1.x的Attribute,取而代之的是Property。

    2) 完整的描述一個操作(Operation),需要多少東西?
    參見UML2.0的Operation的抽象語法圖及其描述。

    3)類之間可以有關系(Relationship),關系可以是關聯(Association)或者泛化(Generalization),這個你知道么?
    還有依賴(Dependency)、包關系(PackageImport/Merge)、。。。

    4)關聯有七種:普通關聯、遞歸關聯、限定關聯、或關聯、有序關聯、三元關聯、聚合(聚合和組合),各自有什么含義?用法如何?
    參見關聯(Association)元類描述、關聯所連接的Property的屬性描述。聚合和組合,詳見Franck Barbier, et al. Formalization of the Whole-Part Relationship in the Unified Modeling Language. IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 29, NO. 5, MAY 2003

    5)關聯類(Association Class)的含義如何?應用場景如何?

    它與UML2.0的Association所owned Property功能重疊嗎?

    6) 類的實例化是對象,關聯的實例化是什么呢?

    以M2層的元類關聯為頂點,若從關聯,同層實例化,則關聯的實例是關聯對象*。若從關聯,異層實例化,則關聯的實例是圖標記“線”。
    * 關聯對象本質上與圖文法是圖分類是類似的,在圖文法中,M1層的“線”的類型就是關聯的類似物。而M1層的“線”,在許多OO中沒有直接表示,只能轉換成指針、引用、整體部分關系。

    # re: 程序員眼中的UML(3)--類圖,就是比你高一點  回復  更多評論   

    2005-06-18 00:44 by wxb_nudt
    6) 類的實例化是對象,關聯的實例化是什么呢?

    以M2層的元類關聯為頂點,若從關聯,同層實例化,則關聯的實例是關聯對象*。若從關聯,異層實例化,則關聯的實例是圖標記“線”。
    * 關聯對象本質上與圖文法是圖分類是類似的,在圖文法中,M1層的“線”的類型就是關聯的類似物。而M1層的“線”,在許多OO中沒有直接表示,只能轉換成指針、引用、整體部分關系。
    --------------------------
    我的理解是:UML2.0中,關聯(Association)的實例化就是鏈接(Link)。鏈接在許多OO語言中表示為指針、引用或者其他的東西,是用來表示對象之間的聯系。
    看得出來阿飛的回答內容更豐富,不過很多地方看不懂。例如:
    “若從關聯,同層實例化”
    “若從關聯,異層實例化”
    “* 關聯對象本質上與圖文法是圖分類是類似的”
    這三句不懂。

    # re: 程序員眼中的UML(3)--類圖,就是比你高一點  回復  更多評論   

    2005-06-23 09:36 by leo
    佩服。
    繼續努力吧!

    # re: 程序員眼中的UML(3)--類圖,就是比你高一點  回復  更多評論   

    2005-06-24 19:36 by 歡迎來到 Java 一下
    我正想學一下UML,這篇文章對我有很大啟發

    # re: 程序員眼中的UML(3)--類圖,就是比你高一點  回復  更多評論   

    2005-07-01 14:08 by feng
    能解釋
    關聯類(Association Class)的含義如何?應用場景如何?

    # re: 程序員眼中的UML(3)--類圖,就是比你高一點  回復  更多評論   

    2005-07-01 22:19 by wxb_nudt
    對不起,最近忙著趕論文,因此我的blog暫時沒有更新,這個系列的文章我也沒有時間再寫。我想應該過幾天才能繼續更新。

    # re: 程序員眼中的UML(3)--類圖,就是比你高一點  回復  更多評論   

    2006-06-23 14:41 by tigertiger
    UML在實際項目中主要是用來溝通的,如果很多概念不是很容易的講清楚,不妨嘗試對它進行簡化(如關聯類有相應的替代方案),簡單就是美。

    # re: 程序員眼中的UML(3)--類圖,就是比你高一點  回復  更多評論   

    2006-12-06 15:26 by lattimore[匿名]
    不完整
    主站蜘蛛池模板: 一级做a免费视频观看网站| 99精品视频在线视频免费观看| 亚洲成a人一区二区三区| 二区久久国产乱子伦免费精品| 亚洲av无码一区二区乱子伦as| 99爱在线精品视频免费观看9| 亚洲AV无码精品蜜桃| 免费va在线观看| 高清一区二区三区免费视频| 国产色在线|亚洲| 亚洲欧洲久久av| 亚洲精品在线免费观看视频| 精品亚洲国产成人av| 亚洲成AV人片在| 免费观看的av毛片的网站| 精品97国产免费人成视频| 亚洲国产精品日韩在线观看| 亚洲国产精品成人久久蜜臀| 1000部免费啪啪十八未年禁止观看| 亚洲av成人无码网站…| 久久综合九九亚洲一区| 在线观看永久免费视频网站| 久久免费国产精品一区二区| 亚洲精品久久无码| 亚洲一区综合在线播放| 亚洲精品第一国产综合精品99| 亚洲大片免费观看| 久久久WWW成人免费精品| 亚洲性线免费观看视频成熟| 精品国产综合成人亚洲区| 尤物永久免费AV无码网站| 最近免费2019中文字幕大全| jizz日本免费| 亚洲精品天堂无码中文字幕| 亚洲色图在线播放| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 456亚洲人成在线播放网站| 国产av无码专区亚洲av果冻传媒| 成年女人免费视频播放77777| 99在线观看免费视频| 久久最新免费视频|