目录

交互图

是什么?

干什么的?

代码示例

顺序图

是什么

顺序图的构成

同步消息和异步消息的区别

代码示例

协作图

顺序图和协作图的关系

总结


UML图是一种用于软件开发的标准建模语言,它提供了多种类型的图形化表示方式,以帮助开发人员更好地理解和描述软件系统的不同方面。其中,交互图、顺序图和协作图是三种重要的UML图,本文将详细介绍它们的特点和使用方法,并结合代码进行实例演示。

交互图

是什么?


交互图用来描述系统中的对象是如何进行相互作用的。即一组对象是如何进行消息传递的

交互图是一种描述对象之间消息传递和交互的UML图,它包括序列图和协作图两种形式。序列图是一种时间顺序上按照对象交互展示的交互图,而协作图则是一种强调面向对象协作的交互图。

干什么的?

主要用于描述协作的动态行为方面

当交互建模时,通常既包括对象(每个对象都扮演某一特定的角色),有包括消息( 每个消息都代表对象之间的通信活动,并导致一定的动作发生)

代码示例

public class Example {
  public static void main(String[] args) {
    Person p = new Person("Tom");
    Car c = new Car("BMW");
    p.drive(c);
  }
}

class Person {
  private String name;

  public Person(String name) {
    this.name = name;
  }

  public void drive(Car car) {
    car.start();
    car.run();
    car.stop();
  }
}

class Car {
  private String brand;

  public Car(String brand) {
    this.brand = brand;
  }

  public void start() {
    System.out.println("The " + brand + " car starts.");
  }

  public void run() {
    System.out.println("The " + brand + " car runs.");
  }

  public void stop() {
    System.out.println("The " + brand + " car stops.");
  }
}
 

上述代码中,Person和Car是两个对象,它们之间进行了消息传递和交互。通过运行该代码,我们可以清晰地看到对象之间消息传递的过程

顺序图

是什么

顺序图描述按照时间的先后顺序对象之间交互动作过程

顺序图的构成

·对象

·消息:是对象之间的通信,可以是信号或者操作调用

·生命线(激活):表示在某段时间内对象是存在的

同步消息和异步消息的区别

同步消息:我去买票,给售票员50元,买电影票,售票员去找合适电影,我就在电影窗口等待,售票员做完这个操作了之后,它就递给我票。同步消息执行完了

异步消息:我在做某件事情的时候,我不等这件事情的结果返回就去做另外一件事情。比如,我要洗衣服,当我把全自动洗衣机打开,把衣服放进去,盖子盖上,我就可以离开。洗衣机就会自动注水,自动去洗衣服,我不需要一直等候在洗衣机的旁边,等它洗完,这个时候我可以去看看电视、做做饭。

代码示例

public class Example {
  public static void main(String[] args) {
    Person p = new Person("Tom");
    Car c = new Car("BMW");
    p.drive(c);
  }
}

class Person {
  private String name;

  public Person(String name) {
    this.name = name;
  }

  public void drive(Car car) {
    System.out.println(name + " drives " + car.getBrand() + " car.");
    car.start();
    car.run();
    car.stop();
  }
}

class Car {
  private String brand;

  public Car(String brand) {
    this.brand = brand;
  }

  public String getBrand() {
    return brand;
  }

  public void start() {
    System.out.println("The " + brand + " car starts.");
  }

  public void run() {
    System.out.println("The " + brand + " car runs.");
  }

  public void stop() {
    System.out.println("The " + brand + " car stops.");
  }
}
 

协作图

强调参加交互的对象的组织,侧重对象之间的关系.

public class Example {
  public static void main(String[] args) {
    Person p = new Person("Tom");
    Car c = new Car("BMW");
    p.drive(c);
  }
}

class Person {
  private String name;

  public Person(String name) {
    this.name = name;
  }

  public void drive(Car car) {
    System.out.println(name + " drives " + car.getBrand() + " car.");
    car.start();
    car.run();
    car.stop();
  }
}

class Car {
  private String brand;

  public Car(String brand) {
    this.brand = brand;
  }

  public String getBrand() {
    return brand;
  }

  public void start() {
    System.out.println("The " + brand + " car starts.");
  }

  public void run() {
    System.out.println("The " + brand + " car runs.");
  }

  public void stop() {
    System.out.println("The " + brand + " car stops.");
  }
}
 

顺序图和协作图的关系

二者在语义上等价;二者可以互相转化;二者侧重点不同:顺序图侧重时间顺序;协作图侧重对象之间的关系

总结

交互图、顺序图和协作图是UML图中的三种重要类型,它们分别强调了不同方面的对象交互关系和协作方式。通过结合Java代码进行演示,可以更好地理解和应用这些UML图形。

UML图类型交互图顺序图协作图
定义描述系统内对象之间的动态交互描述对象之间的时间顺序关系描述对象之间的合作关系
概述显示对象之间的消息传递显示对象之间的时序关系显示对象之间的协作关系
重点描述消息的发送和接收顺序描述对象之间的时间顺序描述对象之间的协作方式
用途捕捉用例的实现显示操作的时间流程显示对象之间的合作方式
参与者对象间的交互有时包括对象之外的其他元素对象之间的合作
关注点交互顺序和消息传递动态行为的时间顺序关注对象之间的协作方式
图形元素参与者、消息、生命线参与者、生命线、消息、控制构件参与者、消息、对象

注:以上内容仅为参考,不同教材或文献可能对UML图类型的定义和细节有所不同。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐