-
UML的组合,依赖20
今天和一个家伙对一个uml图有意见分歧,他说我画的不对。说我把一个引用(这是他用的词,我从来不知道uml里引用到底是什么东西)画成了组合。我后来想想可能他说的引用就是依赖的意思。我先说说我的理解,组合就是说某个类作为另一个类的成员变量,比如现在有类B,类A定义如下:public class A{ B b; }
那么A和B就是组合关系,A组合了B,难道说A和B之间必须要有实际上的整体部分关系才能构成组合关系吗。我认为组合就是B作为A的一部分,增强了A的功能,这就是组合。
然后是依赖,如果B是A某个方法的参数或方法中的局部变量,B就依赖于B。
现在极度迷茫中,请指教,谢谢
问题补充:
[quote "lovewhzlq"]你的理解基本上是正确的
基本上是什么意思,我就是不清楚,所以想找清楚的答案。
刚才提问完发现有http://www.iteye.com/topic/343488,看此贴一楼的回答。但是还是不能肯定,如果按一楼的说法,那么基本上可以说不存在“组合”。根据一楼的例子,如果B是StringUtil类,因为B是单独存在的,所以是关联关系,那么方向盘难道不是单独存在的吗
UML是让各个人之间能更好的理解,如果像这样,还要考虑情形进行区分恐怕只能让所有人都不理解设计。对于整体和局部,每个人都有自己的看法
问题补充:
----------最佳答案的评论-------------------
对大部分人来说,你说的是对的。我对组合和依赖的理解确实是错误的。
然而我不明白uml为什么要搞的这么复杂,非要扯出这么多难以理解的概念。就像我问题中说的,uml的本意是为了让大家清楚地理解你的设计,但按uml现在的情况看,很多人都不是很清楚这些概念,更不要说清楚这些概念间的区别,画出来的uml图各有各的看法。如果uml和具体的代码结合起来,组合(不再区分组合聚合)就是作为成员变量,依赖就是作为方法参数,那么看得uml图就知道你的代码将会是什么样子,各人在理解上也不会有偏差,uml更简单。难道这样不好,还是为了抽象出一个语言无关的层?
另外,感谢lovewhzlq的回答。我完全同意你的看法,不要怪我为什么而没选择你的答案为最佳答案2009年4月22日 19:13
5个答案 按时间排序 按投票排序
-
采纳的答案
引用
public class A{
B b;
}
从这里我只看出A和B的关联关系,至于是聚集还是结合,我实在看不出,这要结合上下文的。(聚集和结合都是特殊形式的关联)
举个例子吧。
聚集关系[/color]
假如A是Circle类(圆),B是Style类,一个圆可以有颜色,是否填充这些样式(style)方面的属性,可以用一个style对象表示这些属性,但同一个style对象也可以表示别的对象如三角形的一些样式方面的属性,也就是说,style对象可以用于不同的地方。如果circle对象不存在了,不一定意味着style这个对象也不存在了。
结合关系[color=red]
假如A是Circle类,B是Point类。一个圆可以由半径和圆心确定,如果圆不存在了那么表示这个圆的圆心也就不存在了。所以Circle和Point类是结合关系。2009年4月23日 08:24
-
其实uml的依赖关系嘛,本来就要看情况而定,就像组合本质上也是属于依赖的,
说真的,uml图不过也是帮助大家一起来理解系统,如果背离了用来理解系统这个初衷,而搞得这么学术化,就没什么意义的,2009年4月22日 19:34
-
uml手册的标准描述
依赖表示两个或多个模型元素之间语义上的关系。它只将模型元素本身连接起来而不需
要用一组实例来表达它的意思。它表示了这样一种情形,提供者的某些变化会要求或指示依赖关系中客户的变化。
根据这个定义,关联和泛化都是依赖关系,但是它们有更特别的语义,故它们有自己的
名字和详细的语义。我们通常用依赖这个词来指其他的关系。
依赖关系种类
依 赖 关 系 功 能 关 键 字
访问 允许一个包访问另一个包的内容 a c c e s s
绑定 为模板参数指定值,以生成一个新的模型元素 bind
调用 声明一个类调用其他类的操作的方法 c a l l
导出 声明一个实例可从另一个实例导出 d e r i v e
友员 允许一个元素访问另一个元素,不管被访问的元素是否具有可见性 f r i e n d
引入 允许一个包访问另一个包的内容并为被访问包的组成部分增加别名 i m p o r t
实例化 关于一个类的方法创建了另一个类的实例的声明 i n s t a n t i a t e
参数 一个操作和它的参数之间的关系 p a r a m e t e r
实现 说明和其实之间的映射关系 r e a l i z e
精化 声明具有两个不同语义层次上的元素之间的映射 r e f i n e
发送 信号发送者和信号接收者之间的关系 s e n d
跟踪 声明不同模型中的元素之间存在一些连接,但不如映射精确 trace
使用 声明使用一个模型元素需要用到已存在的另一个模型元素,这样才 u s e
能正确实现使用者的功能(包括调用、实例化、参数、发送)2009年4月22日 19:31
相关推荐
UML 中依赖泛化关联实现聚合组合的 C# 实现 UML 中类图是软件设计中最重要的工具之一,它能够帮助我们更好地设计和管理软件系统。今天,我们将讨论 UML 中的依赖泛化关联实现聚合组合的 C# 实现。 首先,让我们...
本文将深入探讨UML类关系中的四种关键概念:依赖、关联、聚合和组合,以及它们在软件设计中的应用。 1. 依赖(Dependency) 依赖是UML中最弱的一种关系,表示一个类(或对象)的实现或行为需要另一个类(或对象)的...
UML关系(泛化,实现,依赖,关联(聚合,组合))
### UML中依赖、泛化、关联、聚合与组合的Java实现详解 #### UML基础知识概览 统一建模语言(UML)作为一种图形化的标准化建模语言,为软件开发提供了强大的可视化工具,帮助开发者理解、设计和记录软件系统。UML...
UML类关系-依赖、关联、聚合和组合 UML(Unified Modeling Language)是软件设计领域中的一种标准化建模语言,用于描述软件系统的结构、行为和架构。UML类关系是UML中的一种基本概念,描述了类之间的关系。今天,...
### UML学习之依赖、关联、聚合、组合与继承 #### 一、泛化(Generalization) **概念:** 泛化表示的是类与类之间的继承关系、接口与接口之间的继承关系,或者是类对接口的实现关系。在UML中,泛化关系通常用一个带...
本文将详细探讨UML中的一些关键概念,包括依赖、泛化、关联、聚合、组合以及实现,并结合C#语言给出具体实现示例。 1. 泛化(Generalization): 泛化关系在UML中代表了继承,它表示一个类(子类)继承自另一个类...
UML 中继承、实现、依赖、关联、聚合、组合的联系与区别 UML 中的继承关系是指一个类继承另外一个类的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系。在 Java 中此类关系通过...
在这篇博客“#0x003B UML类图之关联、聚合、组合、依赖”中,作者探讨了类图中的四种主要关系:关联、聚合、组合和依赖,这些都是理解面向对象设计的关键概念。 关联是UML类图中最基本的关系,表示两个或多个类之间...
扩展关系,也称为组合(Aggregation),是一种弱于包含的关联类型,它表示一个类可以由多个其他类的对象组成,但这些部分不依赖于整体的生命周期。在UML中,扩展关系通常用一个空心的菱形箭头表示,箭头同样指向整体...
本文将详细介绍UML类图中的六种基本关系:依赖、类属、关联、实现、聚合和组合。 #### 二、依赖(Dependency) **定义**: - 当元素A的变化会影响元素B,但元素B的变化不会反过来影响元素A时,我们说B依赖于A。 - ...
本文将深入探讨UML中的五个关键关系:继承、实现、依赖、关联和聚合,以及它们在软件设计中的作用。 1. **继承(Inheritance)**: 继承是面向对象编程的核心概念之一,它允许一个类(子类或派生类)从另一个类...
本篇文章将深入探讨UML类图中的五种主要关系:关联、组合、聚合、依赖和泛化,以及它们在实际编程中的应用。 **关联** 是类之间的一种结构关系,表示类之间的连接或相互作用。它通常用一条实线表示,可以是单向或...
UML 类图关系大全中有多种关系,包括泛化、关联、依赖、聚合、组合等。 1. 关联关系 关联关系是类图中最基本的关系类型。它描述了类之间的相互关系,可以是单向的,也可以是双向的。双向关联关系表示两个类之间的...
在UML中,依赖用虚线箭头表示。 **UML的九种图**: 1. **用例图(Use Case Diagram)**:展示了系统外部参与者与系统提供的功能之间的交互。 2. **类图(Class Diagram)**:描绘类、接口以及它们之间的关系。 3...
主要包括类图(Class Diagram),用于描述类的属性和方法,以及类之间的关系,如关联、聚合、组合、泛化和依赖等。 3. **构件视图(Component View)**:描述系统的模块构成。这通常涉及到组件图(Component ...
UML类图关系泛化、继承、实现、依赖、关联、聚合、组合 UML类图关系是Unified Modeling Language(统一建模语言)的核心概念之一,用于描述系统中的对象之间的关系。本文将对UML类图关系中的泛化、继承、实现、依赖...
使用StartUML绘制类图 在软件开发过程中,类图是UML(Unified Modeling...5. StartUML可以创建类之间的关系,例如继承、依赖、关联关系、实现接口、组合等。 6. 使用StartUML可以帮助开发者更好地设计和实现软件系统。
以上只是UML学习的基础部分,实际上,UML还包括了许多其他复杂的概念,如接口、抽象类、继承、复合、依赖等,以及动态建模的活动图、序列图等。深入理解和掌握UML,对于提升软件设计的质量和效率具有显著作用。通过...