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

keatkeat1987 2014-06-11 09:34:24
刚接触到 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的组合?

希望大大们指导一下!感激不尽!
...全文
540 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
OenAuth.Net 2014-07-11
  • 打赏
  • 举报
回复
引用 4 楼 keatkeat87 的回复:
补上 : 购物车与产品是聚合关系吗?
是一个常用的聚合关系,购物车是一个整体,没有产品的购物车是没有实际意义的
OenAuth.Net 2014-07-11
  • 打赏
  • 举报
回复
我的困惑是: 1.是否说如果一个对象A的大部分方法都是用到了对象B,那么我就应该把对象B当成对象A的属性,用关联来表示,而非依赖? 既然大部分方法都用到B,那肯定要把B做成A的一个属性,是关联! 依赖强调的是临时的 2.聚合是否就是 List<Class> ? 通常来说List<>的成员就是聚合关系 但关联和聚合其实没有明确的分界线, 关联强调的是两个类是同一个层次, 而聚合中两个类不处于同个层次,可以看成整体与部分 3.组合,比如对象A和对象B,那么对象B是否也可以是对象C的组合? 组合是一种最强的关系,A包含B的话,B离开A的话就不能单独存在,这种情况其实用的还是比较少的
keatkeat1987 2014-06-12
  • 打赏
  • 举报
回复
补上 : 购物车与产品是聚合关系吗?
keatkeat1987 2014-06-12
  • 打赏
  • 举报
回复
引用 2 楼 devmiao 的回复:
依赖关系: class A { public void foo() { Console.WriteLine("hello"); } } class B { public void bar() { new A().foo(); } } 很显然,B依赖A,删除了A,B就运行不了了。反过来,A不依赖B,删除了B,A照样成立。 关联: class A { public B b; } class B { ... } 那么A关联了B。
谢谢, 怎么决定对象间是依赖而不是关联? 帖子说依赖是属于"使用" 的关系,对象A 使用了 对象B (某个方法调用了对象B) 关联是"拥有"的关系,对象A拥有对象B (某个属性是对象B) 举个题目: 一次购物活动。 设计的对象有3个 人,购物车,产品 人和购物车是单向关联关系 人有个购物方法, 方法依赖产品 是这样吗?
devmiao 2014-06-11
  • 打赏
  • 举报
回复
依赖关系: class A { public void foo() { Console.WriteLine("hello"); } } class B { public void bar() { new A().foo(); } } 很显然,B依赖A,删除了A,B就运行不了了。反过来,A不依赖B,删除了B,A照样成立。 关联: class A { public B b; } class B { ... } 那么A关联了B。
wangnaisheng 2014-06-11
  • 打赏
  • 举报
回复

13,189

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧