UML学习之 依赖、关联、聚合、组合的联系与区别
说点废话: 说到UML,像我这样的业余画UML图的人,大多数时候在看源码库时喜欢用手画,对于工具也喜欢简洁的UML工具。这里推荐两个在线的画UML图的工具,当然这两款工具不仅仅只能画UML。 前者是国外开发的,后者是国内的,相对来说我喜欢前者,但是有时候网速不好=_=,前者操作舒服并且画出的图也好看些,具体看自己选择,还有很多可以用的客户端工具就不介绍了。 类之间可描述的关系大概有下面几种:继承、实现、依赖、关联、聚合、组合关系的总览图如下: 继承(也叫泛化generalization)用于Interface和Interface之间,或者用于Class和Class之间,如下图: 图中用java中常见的List集合的继承关系做为例子,List(子接口)接口继承自Collection接口(父接口),而ArrayList类(子类)继承自AbstractList(父类)这个抽象类。 实现(Realization)指的是一个class类实现interface接口(可以是多个)的功能;在Java中此类关系通过关键字implements明确标识,如下图: 依赖(Dependency)从字面理解的话,是说一个类用到了另一个类。这种使用关系是具有偶然性的、临时性的、非常弱的。比如下图中的依赖关系,司机开车,要依赖车。在代码上表现的话一般为 关联(association)
重数性关联: 重数性关联关系又称为多重性关联关系(Multiplicity),表示一个类的对象与另一个类的对象连接的个数。在UML中多重性关系可以直接在关联直线上增加一个数字表示与之对应的另一个类的对象的个数。 聚合(aggregation)
//汽车和引擎是一种聚合关系,java代码表现形式如下
public class Car {
private Engine engine;
public Car(Engine engine) {
this.engine = engine;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
……
}
public class Engine {
……
}
组合(composition)
//人和嘴是一种组合关系
public class Person {
private Mouth mouth;
public Person() {
mouth = new Mouth();
}
……
}
public class Mouth {
……
}
【参考文章】
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |