UML2.0类之间的关系

原文: http://blog.163.com/haizai219@126/blog/static/4441255520099274507758/


在类图中,除了需要描述单独的类的名称、属性和操作外,我们还需要描述类之间的关系。在UML类图中,关系用类框之间的连线来表示,连线上和连线端头处的不同修饰符表示不同的关系。类之间的关系有继承(泛化)、关联、聚合和组合。

1)继承(泛化)

1.1)图释

UML2.0类之间的关系 - Dinstone - Dinstone 的技术博客

1.2)java代码

 public abstract class Shape {
 public abstract float getArea();
}

public class Polygon extends Shape {
 private int sides; 
}

public class Rectangle extends Polygon {
 private float length;  
 private float width; 
}

 public interface Interface1 {}

public interface Interface2 extends Interface1 {

}

2)关联(单向关联,双向关联)

依赖和关联区别: 

依赖是比关联弱的关系,关联代表一种结构化的关系,体现在生成的代码中,以java为例: 

  若类A单向关联指向类B,则在类A中存在一个属性B b。 

  若类A依赖类B,则不会有这个属性,类B的实例可能存在于某个方法调用的参数中,或某个方法的局部变量中。

关联有双向与单向之分,类A与类B双向关联可以是A与B相互可以作为对方的一个attribute,单向的话,就指其中一个类作为另一个类中的 attribute;依赖就只有单向的,不存在attribute的问题,例如类A依赖类B,表示在类A中有三种类B的使用方法:一是类B是全局的,二是类B在类A中实例化,三是类B作为参数被传递。

关联是一种结构关系,表现为一个对象能够获得另一个对象的实例引用并调用它的服务(即使用它);依赖是一种使用关系,表现为一个对象仅仅是调用了另一个对象的服务。UML2.0类之间的关系 - Dinstone - Dinstone 的技术博客

2.1)

UML2.0类之间的关系 - Dinstone - Dinstone 的技术博客

public class ClassA {
 private ClassB b; 
}

public class ClassB {
 private ClassA a; 
}

2.2)

UML2.0类之间的关系 - Dinstone - Dinstone 的技术博客

 public class ClassC {
 
 private ClassD classD;
 
}

public class ClassD {
 
 private ClassC c;
 
}

2.3)

UML2.0类之间的关系 - Dinstone - Dinstone 的技术博客

 public class ClassE {
 
 private ClassF f;
 
}

public class ClassF {
 
}

2.4)

UML2.0类之间的关系 - Dinstone - Dinstone 的技术博客

 public class ClassG {
 
 private ClassH h;
 
}

public class ClassH {
 
 private ClassG g;
 
}

3)聚合

聚合:指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类包含的类。从而找出一些包含类,该整体类和包含类之间就形成了聚合关系。

UML2.0类之间的关系 - dinstone - Dinstone 的技术博客 

 public class Computer<T extends Brand> {
 
 private T brand;
 
 private Monitor[] monitors;
 
 private Host host;
 
 private keyboard keyboard;
 
 private Mouse mouse;
 
}

public class Monitor {
 
}

public class Host {
 
 private Computer computer;
 
}

public class keyboard {
 
 private Computer computer;
 
}

public class Mouse {
 
 private Computer computer;
 
}

4)组合

组合:也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。

 UML2.0类之间的关系 - Dinstone - Dinstone 的技术博客

 public class LightSensor {
 
 private Monitor monitor;
 
}

public class Monitor{
 
 private LightSensor[] lightSesors;
 
}

聚合和组合的区别在于:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值