UML对象和类之间的相互关系知多少
答案:2 悬赏:50 手机版
解决时间 2021-02-11 15:08
- 提问者网友:捧腹剧
- 2021-02-10 16:05
UML对象和类之间的相互关系知多少
最佳答案
- 五星知识达人网友:拾荒鲤
- 2021-02-10 17:40
UML对象和类之间的相互关系总结
UML中描述对象和类之间相互关系的方式包括:
依赖(Dependency)
关联(Association)
聚合(Aggregation)
组合(Composition)
泛化(Generalization)
实现(Realization)等。
依赖(Dependency):元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依赖A;类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的用途,所以被单独描述。UML中用带箭头的虚线表示Dependency关系,箭头指向被依赖元素。
关联(Association):元素间的结构化关系,是一种弱关系,被关联的元素间通常可以被独立的考虑。UML中用实线表示Association关系,箭头指向被依赖元素。
聚合(Aggregation):关联关系的一种特例,表示部分和整体的关系。UML中用带空心菱形头的实线表示Aggregation关系,菱形头指向整体。
UML对象和类的聚合关系是关联的一种形式,代表两个类之间的整体/局部关系。聚合暗示着整体在概念上处于比局部更高的一个级别,而关联暗示两个类在概念上位于相同的级别。关联和聚合的区别纯粹是概念上的,而且严格反映在语义上。聚合还暗示着实例图中不存在回路。换言之,只能是一种单向关系。
组合(Composition):组合是聚合关系的变种,表示元素间更强的组合关系。如果是组合关系,如果整体被破坏则个体一定会被破坏,而聚合的个体则可能是被多个整体所共享的,不一定会随着某个整体的破坏而被破坏。UML中用带实心菱形头的实线表示Composition关系,菱形头指向整体。
泛化(Generalization):UML对象和类的泛化关系就是通常所说的继承关系,UML中用带空心箭头的实线线表示Generalization关系,箭头指向一般个体。
实现(Realize):元素A定义一个约定,元素B实现这个约定,则B和A的关系是Realize,BrealizeA。这个关系最常用于接口。UML中用空心箭头和虚线表示Realize关系,箭头指向定义约定的元素。
其中依赖(Dependency)的关系最弱,而关联(Association),聚合(Aggregation),组合(Composition)表示的关系依次增强。换言之关联,聚合,组合都是依赖关系的一种,聚合是表明对象之间的整体与部分关系的关联源码天空
,而组合是表明整体与部分之间有相同生命周期关系的聚合。
而关联与依赖的关系用一句话概括下来就是,依赖描述了UML对象之间的调用关系,而关联描述了对象之间的结构关系。
UML中描述对象和类之间相互关系的方式包括:
依赖(Dependency)
关联(Association)
聚合(Aggregation)
组合(Composition)
泛化(Generalization)
实现(Realization)等。
依赖(Dependency):元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依赖A;类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的用途,所以被单独描述。UML中用带箭头的虚线表示Dependency关系,箭头指向被依赖元素。
关联(Association):元素间的结构化关系,是一种弱关系,被关联的元素间通常可以被独立的考虑。UML中用实线表示Association关系,箭头指向被依赖元素。
聚合(Aggregation):关联关系的一种特例,表示部分和整体的关系。UML中用带空心菱形头的实线表示Aggregation关系,菱形头指向整体。
UML对象和类的聚合关系是关联的一种形式,代表两个类之间的整体/局部关系。聚合暗示着整体在概念上处于比局部更高的一个级别,而关联暗示两个类在概念上位于相同的级别。关联和聚合的区别纯粹是概念上的,而且严格反映在语义上。聚合还暗示着实例图中不存在回路。换言之,只能是一种单向关系。
组合(Composition):组合是聚合关系的变种,表示元素间更强的组合关系。如果是组合关系,如果整体被破坏则个体一定会被破坏,而聚合的个体则可能是被多个整体所共享的,不一定会随着某个整体的破坏而被破坏。UML中用带实心菱形头的实线表示Composition关系,菱形头指向整体。
泛化(Generalization):UML对象和类的泛化关系就是通常所说的继承关系,UML中用带空心箭头的实线线表示Generalization关系,箭头指向一般个体。
实现(Realize):元素A定义一个约定,元素B实现这个约定,则B和A的关系是Realize,BrealizeA。这个关系最常用于接口。UML中用空心箭头和虚线表示Realize关系,箭头指向定义约定的元素。
其中依赖(Dependency)的关系最弱,而关联(Association),聚合(Aggregation),组合(Composition)表示的关系依次增强。换言之关联,聚合,组合都是依赖关系的一种,聚合是表明对象之间的整体与部分关系的关联源码天空
,而组合是表明整体与部分之间有相同生命周期关系的聚合。
而关联与依赖的关系用一句话概括下来就是,依赖描述了UML对象之间的调用关系,而关联描述了对象之间的结构关系。
全部回答
- 1楼网友:野慌
- 2021-02-10 18:38
它只是描述了对象a于对象b之间存在一种业务上、概念上的逻辑关系,但是关联关系的双方不包含对方的属性。【聚合关系】===================================================================聚合关系是一种特殊的关联关系,除了具备关联关系的特性之外,还包括了以下的一些规则:a. 对象a和对象b之间存在一种包含的关系b. 对象a和对象b之间必有一方为“容器”,另外一方为“元素”。即“whole-part”关系c. 容器方和元素方对象的生命周期是彼此独立的,并不依赖于对方而存在,也就是说是一种“松散”的关联。容器和元素可以被独立创建、销毁,容器不存在了不影响元素的存在,元素不存在了容器可以依然存在d. 容器方可以没有元素,也可以有一个至多个元素e. 元素方可以“被包含于”一个容器,也可以“被包含于”多个容器f. 向容器添加元素,或者从容器中移除元素并不影响容器【组合关系】===================================================================组合关系是一种特殊的聚合关系,除了具备关联关系、聚合关系的特性之外,还包括了以下的一些规则:a. 容器方和元素方对象的生命周期是互相依赖的。即元素依赖于容器而存在,一旦容器不存在了那么元素也就不可能存在。容器必须优先于元素而被创建,元素必须优先于容器而被销毁。b. 元素方只能“被包含于”一个容器【举例分析】===================================================================a. 关联关系的例子分析:学生------------- 成绩学生与成绩之间就是一个关联关系,你不能把学生的属性写到成绩对象中去,同理不能把成绩的属性写到学生对象中去,但两者之间确实存在一种业务上的联系,而且是固定的b. 聚合关系的例子分析:班级------------- 学生 / 汽车 ------------- 配件班级与学生,汽车与配件之间的关系就是一个聚合关系。首先一个班级可以包含零至多个学生,一部汽车可以包含零(未组装之前)至多个配件。其次学生可以先被创建,然后创建班级,再向班级中添加,移除学生。配件可以先被创建并保存到仓库,然后再组装成汽车。在班级,汽车对象没有形成之前,学生与配件的对象可以已经存在(即容器和元素对象的生命周期是独立的)c. 组合关系的例子分析:基金账户 ------------- 单笔交易基金账户与单笔交易就是一个组合关系。首先单笔交易必须依赖于基金账户而存在,也就是说我们必须先创建基金账户这个“容器方”,之后才能够创建单笔交易这个“元素方”,然后再把单笔交易挂到(添加)基金账户下。没有基金账户预先存在,我们不能执行单笔交易。我们不能先创建单笔交易,再创建基金账户,然后再挂靠交易。这一点就不同于上面的班级与学生,汽车与配件的存在关系了。其次单笔交易只能挂靠在某一个特定的基金账户下,也就是说元素方只能“被包含于一个”容器【延伸思考】===================================================================在对象和对象之间的关系中,有时会提到“依赖”关系,即对象a依赖于对象b而完成某项操作,那么这种关系是不是也属于“关联关系”呢?个人认为这不属于一种“关联关系”。因为上面我们提到的三种关系中,每一种关系除了是固定的关系之外,还有一个重要的特点就是这些关系是需要“被持久化,被保存”起来的。而依赖关系只是对象和对象之间的引用(或称调用)关系,这种关系只发生在运行期间而不是业务上,概念上的联系,并不需要被保存。所以“依赖关系”并不属于uml中的对象关系。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯