`
ocean
  • 浏览: 49005 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

对association class的疑问

UML 
阅读更多

今天看association class怎么看好像都不是很明白。

摘自UML2.0 in a Nutshell

2.6.6. Association Classes

Often the relationship between two elements isn't a simple structural connection. For example, a football player may be associated with a league by virtue of being on a team. If the association between two elements is complex, you can represent the connection using an association class. An association class is an association that has a name and attributes, like a normal class. You show an association class like a regular class with a dashed line connecting it to the association it represents. Figure 2-29 shows a football player's relationships to a league.

 

Figure 2-29. Example association class

 


When translated into code, relationships with association classes often result in three classes: one for each end of the association and one for the association class itself. There may or may not be a direct link between the association ends; the implementation may require you to traverse through the association class to get to the opposite end of the link. In other words, FootballPlayer may not have a direct reference to FootballLeague but may have a reference to FootballTeam instead. FootballTeam would then have a reference to FootballLeague. How the relationships are constructed is a matter of implementation choices; however, the fundamental concept of an association class is unchanged.

按照我的理解以上例子其实看成是FootballPlayer和FootballTeam的Aggregation relationship和FootballTeam和FootballLeague的Aggregation relationship.只不过用Association Classes可以更好的表达FootballPlayer和FootballLeague的间接关系。但这两种表达方法最后的代码表达应该都是一样的。

[代码表现](我认为)

java 代码
  1. public class FootballPlayer {   
  2.   
  3.     public int name;   
  4.   
  5.     public int number;   
  6.        
  7.     FootballTeam footballTeam;   
  8. }  
java 代码
  1. public class FootballTeam {   
  2.   
  3.     public String name;   
  4.   
  5.     public int numPlayers;   
  6.   
  7.     public String homeCity;   
  8.   
  9.     Collection<FootballPlayer> footballPlayer;   
  10.   
  11.     FootballLeague footballLeague;   
  12. }  
java 代码
  1. public class FootballLeague {   
  2.   
  3.     public String name;   
  4.   
  5.     public int numTeams;   
  6.   
  7.     Collection<FootballTeam> footballTeam;   
  8. }  

但用together生成的代码和我的想法又不一样

[代码表现](together generation)

java 代码
  1. public class FootballPlayer {   
  2.   
  3.     /**  
  4.      * @model.uin <code>design:node:::hnimszew7l00y4-ezsg1t:-tdsqjuew7kty3j-7fwj74</code>  
  5.      */  
  6.     public int name;   
  7.   
  8.     /**  
  9.      * @model.uin <code>design:node:::2plt7ew7l4dei-q4hyxp:-tdsqjuew7kty3j-7fwj74</code>  
  10.      */  
  11.     public int number;   
  12.   
  13.     /**  
  14.      * @model.uin <code>design:link:::ieje0rew8ip8hf-3ho9xj:-2urp5jew7l1xaj1vaegh</code>  
  15.      */  
  16.     FootballLeague footballLeague;   
  17.   
  18.     /**  
  19.      * @model.uin <code>design:node:::-s99ai1ew7l1xajmc7cgz</code>  
  20.      */  
  21.     FootballTeam footballTeam;   
  22. }   
  23.   
  24. public class FootballTeam {   
  25.   
  26.     /**  
  27.      * @model.uin <code>design:node:::hnimszew7lak9j-67pmjw:-s99ai1ew7l1xajmc7cgz</code>  
  28.      */  
  29.     public String name;   
  30.   
  31.     /**  
  32.      * @model.uin <code>design:node:::hnimszew7lb0vy-dlg5p6:-s99ai1ew7l1xajmc7cgz</code>  
  33.      */  
  34.     public int numPlayers;   
  35.   
  36.     /**  
  37.      * @model.uin <code>design:node:::hnimszew7lbej9s8soby:-s99ai1ew7l1xajmc7cgz</code>  
  38.      */  
  39.     public String homeCity;   
  40.   
  41.     /**  
  42.      * @model.uin <code>design:link:::ieje0rew8ip4w3-eo406e:-2urp5jew7l1xaj1vaegh</code>  
  43.      */  
  44.     FootballPlayer footballPlayer;   
  45.   
  46.     /**  
  47.      * @model.uin <code>design:link:::ieje0rew8ip8hf-3ho9xj:-2urp5jew7l1xaj1vaegh</code>  
  48.      */  
  49.     FootballLeague footballLeague;   
  50. }   
  51.   
  52. public class FootballLeague {   
  53.   
  54.     /**  
  55.      * @model.uin <code>design:node:::hnimszew7l0j2az6d4si:-tdsqjuew7ku7zj-apfzse</code>  
  56.      */  
  57.     public String name;   
  58.   
  59.     /**  
  60.      * @model.uin <code>design:node:::hnimszew7l0vjz-ahe69h:-tdsqjuew7ku7zj-apfzse</code>  
  61.      */  
  62.     public int numTeams;   
  63.   
  64.     /**  
  65.      * @model.uin <code>design:link:::ieje0rew8ip4w3-eo406e:-2urp5jew7l1xaj1vaegh</code>  
  66.      */  
  67.     Collection<FootballPlayer> footballPlayer;   
  68.   
  69.     /**  
  70.      * @model.uin <code>design:node:::-s99ai1ew7l1xajmc7cgz</code>  
  71.      */  
  72.     Collection<FootballTeam> footballTeam;   
  73. }  
所以我现在我都不清楚这个association class到底是怎么用的了。假如那位有任何思路请一起讨论下。
分享到:
评论
1 楼 ocean 2006-12-28  
今天看了UML Distilled这本书的解释才好像明白了这个association class关系。
摘自(UML Distilled third)
Association Class
Association classes allow you to add attributes, operations, and other features to associations.
然后再看了下
http://www.javaworld.com.tw/jute/post/view?bid=33&id=92661&tpg=7&ppg=1&sty=1&age=0#92661网上的另一个评论。
以下是我的总结。
Association Class其实对于数据库中的多对多关系时是非常有用的。而这个association class就相当于数据库中的那个中间表的作用。

相关推荐

    LATEX Class for the Association for Computing.pdf

    ACM 官方的提供的latex文档(英文),对于向ACM投稿的人来说非常实用,因为现在ACM录用的所有论文必需通过TAPS提交论文,如果使用word会遇到各种各样的错误,导致无法提交。而Latex相对可以轻松搞定。

    mybatis学习入门二、Association一对一关联

    在MyBatis中,实现一对一关联主要通过`association`标签来完成。首先,我们需要在Mapper XML文件中定义这个关联。以下是一个简单的示例: ```xml &lt;!-- 其他字段映射... --&gt; SELECT * FROM user LEFT JOIN ...

    powerdesigner Association 关联

    powerdesigner Association 关联

    5G Automotive Association.pdf

    5GAA的这些工作成果不仅推动了汽车行业的发展,也对可持续性、道路安全和连接性产生了深远影响。通过5G技术,我们可以期待更加协同的自动化移动性,这将为智能交通提供360度的解决方案,进一步提升城市生活的智能化...

    Association, Aggregation and Composition的区别

    Association, Aggregation and Composition 的区别 在 Java 应用程序开发中,理解 UML 类图元素及其与 Java 的映射关系是非常重要的。其中,Association、Aggregation 和 Composition 是三个常见的 UML 元素,它们...

    USB组合设备 Interface Association Descriptor (IAD)1

    USB Interface Association Descriptor (IAD) 是USB复合设备中用于整合多个接口的一种机制。在USB规范中,设备可以被设计成复合设备(Composite Device)或复合设备(Compound Device),两者虽然在中文翻译上容易...

    开源项目-jinzhu-gorm#association-mode.zip

    开源项目-jinzhu-gorm#association-mode.zip,Even easier to handle relationships, try out gorm's Association Mode

    apple-app-site-association服务器配置.rtf

    iOS通用链接(Universal Links),服务器端部署apple-app-site-association配置文件

    The Probabilistic Data Association Filter

    ### 概率数据关联滤波器(The Probabilistic Data Association Filter) #### 核心概念解析 在《概率数据关联滤波器》这篇文章中,作者Yaakov Bar-Shalom、Fred Daum和Jim Huang深入探讨了在远程传感设备测量不确定...

    apple-app-site-association

    apple-app-site-association,apple-app-site-association,apple-app-site-association,

    GSM Association

    - 2002年7月,文档首次引入了对3G的支持,并在随后几年内进行了多次更新,以反映最新的技术和市场趋势。 #### 四、文档结构与内容概览 虽然未提供完整文档内容,但可以推测该文档主要包含了关于现场试验的指导原则...

    Association Rules

    本文探讨了一种在数据挖掘领域中用于发现关联规则的新算法——封闭项集格剪枝(Pruning Closed Itemset Lattices for Association Rules),该算法由Pasquier等人于1998年提出并发表在《BDA》期刊上。传统上,关联...

    data association

    JPDA是解决多目标跟踪问题的一种经典方法,它基于贝叶斯理论,对所有可能的数据关联进行概率建模。JPDA的关键在于计算每一对目标-观测的联合概率,然后选择最有可能的关联方案。这种方法能够处理数据丢失和数据冗余...

    z-wave device class specification

    文档中提到的“Association command class”是用来管理设备之间关系的命令类别。它使得设备能够建立联系,例如,一个灯光控制设备可以与多个灯光设备关联起来,从而通过控制一个设备来间接控制多个灯光。 ...

    apple-app-site-association文件

    iOS开发Universal Links功能配置的文件格式,直接更改id内容就可以使用,文件名称为apple-app-site-association,配置过程:https://blog.csdn.net/ljc_563812704/article/details/105042215

Global site tag (gtag.js) - Google Analytics