赞
踩
目录
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图类型的定义和细节有所不同。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。