类图是UML建模中使用最多的一种图,类和类之间大部分是由各种联系相连接。这些关系有强有弱,关系的不同,在代码中的体现也不同。
![](https://img-blog.csdn.net/20151007195541550?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20151007215226102?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
类图关系的强度关系(有弱到强)依次为:
依赖关系(Dependency)---关联关系(Association)---聚合(Aggregation)---组合(Composition)---泛化(Generalization)
【依赖关系】
依赖关系有三种表现形式:
(1)作为调用类的局部变量
Class Animal
{
public void A()
{
Water water=new Water();
water.B();
}
}
(2)
作为调用类方法的参数
Class Animal
{
public void A(Water water)
{
water.B();
}
}
(3)
调用被调用类的静态方法
Class Animal
{
public void A()
{
Water.StaticB();
}
}
Class Water
{
public static void StaticB()
{
}
}
【关联关系】
作为调用类的引用
Class Water
{
Climate climate;
public Water()
{
b=new B();
}
public void A()
{
climate.B();
}
}
作为调用类的属性
Class Water
{
Climate climate;
public propertyB
{
Get{return this.climate;}
Set{this.b=value;}
}
}
【组合聚合】
组合和聚合关系是关联关系的特殊表现形式,我个人认为虽然组合或者聚合在代码中有着自己独有的体现方式,但是他们也会体现关联关系的特点。
Class GooseGroup
{
public Goose goose;
public GooseGroup(Goose g)
{
goose=g;
}
}
【小结】
类之间的关系是类图核心,类之间关系在代码中的体现不是理解或者看就能明白的,所以还需要多多实践,在真正的项目中去寻求答案。