Q1:UML的基本图示
包含6大关系:泛化关系、实现关系、聚合关系、组合关系、关联关系、依赖关系
其中,两两互为一组相对关系。
Q2:泛化关系(generalization)
所谓的泛化关系代表A继承至B,A属于B。例如,青苹果是一个苹果的概念。
泛化是一种实体类的继承。
泛化关系在uml图中由带空心实线箭头表示。
Q3:实现关系(realize)
相较于泛化关系,实现关系则是对应于抽象的继承而言。
例如,水果是一个抽象的概念,苹果继承于水果。
实现关系在uml图中由空心虚线箭头表示。
Q4:泛化关系与实现关系的相似与区别
两者都是由空心箭头表示,都是代表继承的关系。
区别在于,泛化关系是对一个实在的类进行的继承,而实现关系则是对于抽象类的一个继承。
Q5:聚合关系(aggregation)
聚合关系用一条带空心菱形箭头的直线表示,如下图表示A聚合到B上,或者说B由A组成;
针对代码而言,聚合关系如下:
public class GooseGroup
{
public Goose goose;
public GooseGroup(Goose goose)
{
this.goose = goose;
}
}
所聚合的对象内存并不属于该对象。
聚合关系在uml图中由棱形空心实线箭头表示。
Q6:组合关系(composition)
组合关系用一条带实心菱形箭头直线表示,如下图表示A组成B,或者B由A组成;
针对代码而言,组合关系如下:
public class Goose
{
public Wing wing;
public Goose()
{
wing =new Wing();
}
}
所组合的对象内存属于该对象,但主对象销毁时,附加对象同时被销毁。
组合合关系在uml图中由棱形实心实线箭头表示。
Q7:聚合关系与组合关系的相似与区别
聚合关系与组合关系都是针对类的集合而言,都是由棱形实线箭头表示。
而在聚合关系中,从对象与主对象的关系不及组合关系中那么强依赖。
Q8:关联关系(association)
关联关系代表两个类直接有一定的结构。
在代码中则是以成员变量的形式来实现的。
其中关联关系的方向代表一个需求者类指向一个被需求类,如下图,A需要B的关系;
组合合关系在uml图中由直实线箭头表示。
Q9:依赖关系(dependency)
依赖关系与关联关系十分相似,但是依赖关系是在主对象运行中实现的,只需要使用到从对象的某些性质。
就如同打开啤酒需要开瓶工具等。
组合合关系在uml图中由直虚线箭头表示。
Q10:关联关系与依赖关系的相似与区别
关联关系与依赖关系不像前者那样的有较强的依赖性。
这两关系的对象双方可以互不干扰。
同时俩者都是由实箭头表示。
而在关联关系中,从对象都是在构造期间直接生成,而依赖关系则是在运行期间生成调用的。