刚接触到 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的话就不能单独存在,这种情况其实用的还是比较少的