UML之类图关系(继承实现依赖关联聚合组合)
Posted 花姓-老花
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UML之类图关系(继承实现依赖关联聚合组合)相关的知识,希望对你有一定的参考价值。
继承
指的是一个类(称为子类,子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能,继承是类与类或者接口与接口之间最常见得关系,一个类最多只能继承一个类
public class ClassA extends ClassB
public class ClassB
实现
指的是一个class类实现interface接口(可以多实现),实现是类与接口之间最常见关系。在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性
public class ClassA implements InterfaceA
@Override
public void test()
public interface InterfaceA
void test();
依赖
可以简单的理解,就是一个类A使用到另一个类B,而这种使用关系是具有偶然性、临时性,但B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖,为类B作为参数被类A在某个method方法中使用
public class ClassA
public void depend(ClassB b)
public class ClassB
或A为一个圆柱体类,要求A实例的体积
//圆柱体类
public class A
public static void main(String[] args)
double zArea = 0;
//底面积及为一个圆(B类)的面积
B b = new B();
double height = 1.6;
//调用B类的getArea()方法,形成依赖关系
zArea = b.getArea(4)*height;
//圆类B
public class B
public double getArea(int r)
double area = 0;
area = Math.PI*r*r;
return area;
关联(Association)
它体现的是两个类、或者类与接口之间语义级别的一种强依赖关系。比如我和我的朋友,这种关系比依赖更强、不存在依赖关系的偶然性、临时性,一般是长期性而且双方的关系一般是平等的;关联可以是单向的,也可以是双向的,表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;
public class ClassA
private ClassB classB;
public class ClassB
聚合
聚合是关联关系的一种特例,聚合关系是整体和个体/部分之间的关系,即has-a(包含)的关系;关联关系的两个类处于同一个层次上,而聚合关系的两个类处于不同的层次上,一个是整体,一个是个体/部分;在聚合关系中,代表个体/部分的对象有可能会被多个代表整体的对象所共享
has-a 是组成关系,在组成关系中,一个对象将一个或者多个其它对象作为自己的成员。
public class Family
int id;
String name;
Child child;//Child is a class
...
在这种情况下,Family有一个实体引用Child,因此关系是:Family HAS-A Child。
组合
组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;房子和房间的关系,当房子没有了,房间同样不可能单独存在
//房子
public class House
private Room room ;
public House()
room = new Room() ;
public void createHouse()
room.createRoom() ;
//房间
public class Room
public Room createRoom()
System.out.println("创建房间");
return new Room() ;
聚合和组合的区别:聚合是个体离开了整体,依然可以存在
组合是个体和整体不可以分开,个体不能离开整体单独存在
几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖;
以上是关于UML之类图关系(继承实现依赖关联聚合组合)的主要内容,如果未能解决你的问题,请参考以下文章