当前位置: 代码迷 >> .NET分析设计 >> UML 类图关系之间的区别 , 傻傻分不清楚 =.=" 求教,该怎么处理
  详细解决方案

UML 类图关系之间的区别 , 傻傻分不清楚 =.=" 求教,该怎么处理

热度:321   发布时间:2016-05-01 22:33:15.0
UML 类图关系之间的区别 , 傻傻分不清楚 =.=" 求教
刚接触到 UML建图和面向对象思想。对类之前的关系不是很清楚

依赖和关联 
1.依赖就是一个对象的方法内部使用了另一个对象(可以是参数传进去的)就是依赖关系

2.关联(单向)就是一个对象的其中一个属性是另一个对象。(对象A可以访问对象B,对象B无法访问对象A)


组合和聚合
1.聚合就是一个对象A的属性有一群对象B,
比如 List<ClassB>
对象B是可以单独使用的,也可以是对象C的聚合

2.组合就是一个对象A的属性有一个(一群?)对象B而且这个对象B是对象A初始化时就需要的,且这个对象B不能被单独使用.

以上是我对关系的了解。(我相信很多地方是不太正确的)

我的困惑是:
1.是否说如果一个对象A的大部分方法都是用到了对象B,那么我就应该把对象B当成对象A的属性,用关联来表示,而非依赖? (什么时候应该是参数,什么时候是属性?)

2.聚合是否就是 List<Class> ?
  如果是那么关联和聚合的区别是? 

3.组合,比如对象A和对象B,那么对象B是否也可以是对象C的组合?

希望大大们指导一下!感激不尽!
------解决方案--------------------
我的困惑是:
1.是否说如果一个对象A的大部分方法都是用到了对象B,那么我就应该把对象B当成对象A的属性,用关联来表示,而非依赖? 

既然大部分方法都用到B,那肯定要把B做成A的一个属性,是关联!
依赖强调的是临时的


2.聚合是否就是 List<Class> ?
通常来说List<>的成员就是聚合关系
但关联和聚合其实没有明确的分界线,
关联强调的是两个类是同一个层次,
而聚合中两个类不处于同个层次,可以看成整体与部分


3.组合,比如对象A和对象B,那么对象B是否也可以是对象C的组合?
组合是一种最强的关系,A包含B的话,B离开A的话就不能单独存在,这种情况其实用的还是比较少的
  相关解决方案