Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从UML图创建java类_Java_Uml - Fatal编程技术网

从UML图创建java类

从UML图创建java类,java,uml,Java,Uml,我必须基于这个UML图创建java类。 问题是我不知道红色形状里面的关系是什么。 我做了A,B,C,D类之间的所有其他关系,但这一个我无法理解 谁能给我一个提示吗 到目前为止,我已经: class A extends B class D extends C class C List<B> bElement; class D List<A> aElement; A类扩展B类 D类扩展了C类 C类 列表标线; D类 List这意味着较低的关联继承自较高的关联。就像

我必须基于这个
UML图创建java类。
问题是我不知道红色形状里面的关系是什么。
我做了
A,B,C,D
类之间的所有其他关系,但这一个我无法理解

谁能给我一个提示吗

到目前为止,我已经:

class A extends B

class D extends C

class C 
List<B> bElement;

class D 
List<A> aElement;
A类扩展B类
D类扩展了C类
C类
列表标线;
D类

List

这意味着较低的关联继承自较高的关联。就像下层阶级继承上层阶级一样

连接器继承的概念仅在最近的UML版本中引入(根据@Henriette从2.0开始的回答)。无论如何,实际上不需要低级关联或它的泛化,因为它和这两个泛化一起继承

就我个人而言,我还没有发现这个概念有什么好的用途,但我知道有人使用它(他们在本体中从事非常高的抽象级别的工作)

另外,除了p。692:

关联线之间的泛化箭头交换为UMLEdges,泛化为modelElements,源和目标交换为UMLEdges,关联(包括显示为线的AssociationClass)为modelElements


关联继承是2005年在UML2.0中引入的。尽管UML可能最常用于面向对象的分析和设计,但它旨在成为一种通用的建模语言。因此,它包括诸如多重继承、属性专门化/细化和关联继承之类的特性,这些特性在编程语言中不一定受支持。然而,在像OWL2这样的本体语言中,这些概念是自然表达的

出于其他一些目的,我写了一篇w.r.t.关联继承和等效UML表示的文章,我在这里提供了这些内容,以防对其他人有所帮助

关于关联和属性,UML规范定义了三个密切相关的概念,即
关联专门化
子集
重新定义
。关联专门化应用于完全关联的级别,同时进行子集和重新定义 在关联端点和属性级别应用

关联专门化的含义与类的含义相似。也就是说,关联
A2
是图(a)中关联
A1
的特化。因此,类
C3
C4
实例之间的每个链接都必然是类
C1
C2
实例之间的链接。然而,类
C1
C2
实例之间的每个链接不一定是类
C3
C4
实例之间的链接

由于图(a)中的
C3/C4
专门化
C1/C2
,因此
C1
C2
之间的所有关联将由
C3
C4
继承。此外,
C3
C4
之间的所有继承关联必然是
C1
C2
之间关联的子集。然而, 图(a)更进一步:不仅关联
A1
C3
C4
继承,它还引入了一个新关联
A2
。由于
A2
是一个新的关联,没有关联专门化,人们将无法推断
A1
A2
的关系。因此,在图(a)中,关联继承的目的是引入一个新的关联
A2
,并说明它与现有关联
A1
的关系

在图(b)中,说明
c4{子集c2}
。这意味着关联端
c4
表示的实例集合是关联端
c2
表示的实例集合的子集。对于关联端点
c3
c1
也是如此。子集 与关联专门化的区别在于,子集只考虑集合成员资格,而关联专门化专门化确定链接成员资格的特征

重新定义用于更改特征的定义。例如,图(c)中关联端
c4
重新定义了
c2
。重新定义与关联专门化的区别在于,重新定义是为关联端定义的,而不是为完整关联定义的

虽然最初的问题与在继承层次结构中使用的关联继承有关,但注意到在没有继承层次结构的情况下也可以使用关联继承可能会有所启发。在图(d)中,男人与之离婚的所有女人都是他与之结婚的女人的子集

在图(a)和(d)中,协会是该模式的一等公民。因此,它们可以由关联类(
A1/A2
MarriedTo/DivorceFrom
)来表示,关联类之间具有继承关系,尽管使用关联专门化可能比关联类之间的专门化更简洁地表明您专门化关联的意图


总而言之:关联的专门化相当于其目的之一的子集,重新定义可以被视为子集的子概念。

你确定它是否是有效的UML吗?它似乎是用UML工具创建的。这里所附的图片有点修改。所以,我猜这是一个有效的方法。所以,这意味着它只用于“图表美”?没有任何东西可以添加到java类中来转换这种关系?在本例中是