我不知道';不理解关联类-UML类图
我似乎还没有完全理解关联类是如何工作的,为什么角色类属性不能只在person类中 例如: 人我不知道';不理解关联类-UML类图,uml,class-diagram,Uml,Class Diagram,我似乎还没有完全理解关联类是如何工作的,为什么角色类属性不能只在person类中 例如: 人 名字 位置 描述 为什么角色类属性不能只在person类中 请注意多重性1..*,如果将职位和描述移动到Person中,则必须管理这些职位和描述的集合,并将它们与相应的公司关联 [你的评论] 对于给定的人员,位置和描述取决于每个关联的公司,因此不可能有您建议的字段,除非位置和描述都是一个集合,并且有方法/规则知道位置和描述中的哪个条目对应于正确的公司 当你移动这些信息的时候,你就消除了对称性,你也可
- 名字
- 位置
- 描述
1..*
,如果将职位和描述移动到Person中,则必须管理这些职位和描述的集合,并将它们与相应的公司关联
[你的评论]
对于给定的人员,位置和描述取决于每个关联的公司,因此不可能有您建议的字段,除非位置和描述都是一个集合,并且有方法/规则知道位置和描述中的哪个条目对应于正确的公司
当你移动这些信息的时候,你就消除了对称性,你也可以移动这些信息,用和移动人一样的方式
关联类既是一个类,也是一个关系,当你用C++或java等语言实现它时,当然这个概念不存在,所以一种方法是建议你在两个类中的一个字段中移动字段,或者创建一个第三个类,其中一个字段是一个给一个人的,另一个是给一个公司的。p> 第三类的优点是将所有相关信息分组,并具有以下等效信息:
例如,对象图可以是: 如果没有第三类,您需要知道如何关联所有分离的信息,例如,让所有人亲自使用三个向量来记忆公司、职位和描述,您可以对所有人使用相同的索引值,但这一点不太清楚,当你为一个人添加/删除一家公司时,你必须更新所有这些向量 为什么角色类属性不能只在person类中 请注意多重性1..*
,如果将职位和描述移动到Person中,则必须管理这些职位和描述的集合,并将它们与相应的公司关联
[你的评论]
对于给定的人员,位置和描述取决于每个关联的公司,因此不可能有您建议的字段,除非位置和描述都是一个集合,并且有方法/规则知道位置和描述中的哪个条目对应于正确的公司
当你移动这些信息的时候,你就消除了对称性,你也可以移动这些信息,用和移动人一样的方式
关联类既是一个类,也是一个关系,当你用C++或java等语言实现它时,当然这个概念不存在,所以一种方法是建议你在两个类中的一个字段中移动字段,或者创建一个第三个类,其中一个字段是一个给一个人的,另一个是给一个公司的。p> 第三类的优点是将所有相关信息分组,并具有以下等效信息:
例如,对象图可以是:如果没有第三类,您需要知道如何关联所有分离的信息,例如,让所有人亲自使用三个向量来记忆公司、职位和描述,您可以对所有人使用相同的索引值,但这一点不太清楚,当你为一个人添加/删除一家公司时,你必须更新所有这些向量。假设我们生活的世界中,一个人必须在一家公司中扮演一个角色才能生存,而一家公司可能根本没有人 如果这就是你想知道的关于个人和公司之间关系的全部信息,即只有这样一个事实,即存在这样的关系,仅此而已,,你可以这样建模: 然后,如果您希望另外捕获
人员的角色的位置
和描述
,您可以使用所谓的AssociationClass(角色
):
角色
的每个实例都有四个属性(属性和关联的结尾都是UML中的属性):
公司
人
位置
描述
例如,假设一个名叫Scott Tiger的人在两家公司——Food Inc和Water Ltd——中担任角色,而两家公司都知道Scott Tiger在其中担任角色。然后将有两个角色的实例(显示为元组):
现在,回到您的问题,应该很清楚的是,具有姓名,职位,描述属性的人员的实例实际上“缺少”公司,如果您“添加”一家公司,您将获得角色,而不是人员
因此,如果你对公司和角色进行建模,并且一个人只是角色的一个属性,那么你在问题的最后提出的是一个有效的设计:
其内容如下:公司
的每个实例有零个或多个角色
s,而角色
的每个实例只有一个公司
。关联的两端都是可导航的,即角色
知道其公司
和公司
知道其角色
s
在第9.5.3条中,您可以得到以下建议:
属性可以表示分类器的属性、关联的memberEnd,或者在某些情况下同时表示两者
对于一般建模场景,一个有用的约定是,类型为类的属性是关联
end,而类型为数据类型的属性则不是。此约定不是由UML强制执行的
假设我们生活在这样一个世界里,一个人必须在一家公司中扮演一个角色,才能获得成功
(Food Inc., Scott Tigger, eater, eats here)
(Water Inc., Scott Tigger, drinker, drinks here)