UML知识总结

UML的几种关系

UML中有四种可用的关系:

  • 依赖(Dependency)
    这里写图片描述

依赖是两个事物之间的关系,如果一个元素发生改变,这种改变还会影响到另一个。
依赖如何去表示?通常依赖表示一个类去使用另一个类。

这里写图片描述

这里A类使用B类,但是A类并没有持有B类的引用来作为A类自己的状态的一部分,这就意味着如果B类的接口发生改变那么这会影响到A类。通常A类会将B类的一个实例当做一个方法的参数来使用,或者创建栈上的局部变量来引用B类的一个实例(没有状态上的依赖)。

import B; 
public class A { 
    public void method1(Bb) { 
        // . . . 
    } 
    public void method2() { 
        B tempDependency = new B(); 
        // . . . 
    } 
} 
  • 关联(Association)
    这里写图片描述
    关联基本上是一组连接UML模型元素的链接。 它还描述了有多少对象参与该关系。
    这里写图片描述

关联定义了一种依赖,但是这种依赖性比上述所说的依赖关系更强,A1类用B1类作为关联,换句话讲,A1类使用并包含了B1类的一个实例,但是B1类并不知道或者使用A1类的实例。

import B1;
public class A1 {
  private B1 b1;
  public B1 getB1() {
    return b1;
  }
}

关联关系定义了所依赖类的一个实例来作为自己的状态,因此A1使用了B1的一个实例b1来作为自己的状态的一部分。
我们现在讨论状态的依赖,可能需要定义构成依赖对象状态的实例的生命周期,以及有多少个关联的类实例,这就要说明一下聚合和组合的构成。

  • 聚合(Aggregation)

这里写图片描述

聚合描述了A1包含B1的一个实例来作为A1的状态一部分的关联关系,但是对于这个B1的实例可以在其它的聚集实例之间所共享。这就意味着,B1的实例可以和A1的实例有着不同的生命周期,如果A1被垃圾回收了,B1可以不被回收掉。(因为其它对象可以同时引用着B1)

  • 组合(Composition)

这里写图片描述

组合也定义了一种关联关系,A1由B1组合,同时A1和B1的生命周期是一样的,与聚合不一样的是A1包含多个B1实例的引用,

import B1;
public class A1 {
  private B1[] b1;
  // . . .
  public B1 getB1(int anIndex) {

    return b1[anIndex];
  }
}
  • 泛化(Generalization )
    这里写图片描述
    泛化可以定义为将指定元素与通用元素连接的关系。 它基本上描述了面向对象中的继承关系。

这里写图片描述

import B2;
public class A2 extends B2 { 
    // . . . 
}
  • 实现(Realization)
    这里写图片描述

实现可以定义为两个元素连接的关系。 一个元素描述了一些没有实现的功能,另一个实现它们。 这种关系在接口的情况下存在。

这里写图片描述

import B3;

public class A3 implements B3 {
  // . . .
}

A3实现了接口B3

UML标记方式

  • 类标记
    – 最上面是类的名字
    – 第二个部分是类的属性.
    – 第三个部分用来描述类能够执行的操作
    – 第四个部分用来展示其它额外的组件
    这里写图片描述
  • 对象标记
    对象用和类一样的方式来表示,唯一不同的是名字下面有个下划线。
    这里写图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值