2019独角兽企业重金招聘Python工程师标准>>>

今天尝试使用visio画了一个序列图。

话不多说,先打开visio,新建一个UML序列。

先新建几个对象生命线

加入几个激活

而后是消息,实线表示请求,虚线表示响应。

当然如果不影响理解,可以不用每个请求都配上一个响应。

此UML例子是在《UML精粹:标准对象建模语言简明指南》中拿过来的,为了更好的理解这个UML,下面使用java来实现此UML。

ps,源码上传到码云了。https://gitee.com/xixiw777/sequenceDiagramhttps://gitee.com/xixiw777/sequenceDiagram

  • procuct
package com.simon.uml.sequenceDiagram;/*** Created by IntelliJ IDEA.** @author: Simon* @date: 2019-05-09* @time: 14:50* @description:产品*/
public class Product {private String name;private double price;public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public double getPrice(int number) {double orderLinePrice = price * number;System.out.println("product name:" + getName()+ "\tprice:" + getPrice()+ "\tnumber:" + number+ "\torder line price:" + orderLinePrice);return orderLinePrice;}public void setPrice(double price) {this.price = price;}
}
  • customer
package com.simon.uml.sequenceDiagram;/*** Created by IntelliJ IDEA.** @author: Simon* @date: 2019-05-09* @time: 14:51* @description:客户*/
public class Customer {private double discount;public double getDiscountedValue(Order order) {return discount * order.getBaseValue();}public double getDiscount() {return discount;}public void setDiscount(double discount) {this.discount = discount;}
}
  • order
package com.simon.uml.sequenceDiagram;import java.util.List;/*** Created by IntelliJ IDEA.** @author: Simon* @date: 2019-05-09* @time: 14:50* @description:订单*/
public class Order {private double baseValue;private Customer customer;private List<OrderLine> orderLineList;public double calculatePrice() {double sumOrderLinePrice = 0;for (OrderLine orderLine : orderLineList) {double orderLinePrice = orderLine.calculatePrice();sumOrderLinePrice += orderLinePrice;}this.setBaseValue(sumOrderLinePrice);System.out.println("order base price:" + sumOrderLinePrice);double discountedValue = getCustomer().getDiscountedValue(this);System.out.println("order discounted price:" + discountedValue);return discountedValue;}public double getBaseValue() {return baseValue;}public void setBaseValue(double baseValue) {this.baseValue = baseValue;}public List<OrderLine> getOrderLineList() {return orderLineList;}public void setOrderLineList(List<OrderLine> orderLineList) {this.orderLineList = orderLineList;}public Customer getCustomer() {return customer;}public void setCustomer(Customer customer) {this.customer = customer;}
}

order line

package com.simon.uml.sequenceDiagram;/*** Created by IntelliJ IDEA.** @author: Simon* @date: 2019-05-09* @time: 14:50* @description:订单明细*/
public class OrderLine {private int number;private Product product;public OrderLine(int number, Product product) {this.number = number;this.product = product;}public double calculatePrice() {return product.getPrice(number);}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}public Product getProduct() {return product;}public void setProduct(Product product) {this.product = product;}
}
  • order的测试用例

package com.simon.uml.sequenceDiagram;import org.junit.Assert;import java.util.ArrayList;
import java.util.List;/*** Created by IntelliJ IDEA.** @author: Simon* @date: 2019-05-09* @time: 15:23* @description:*/
public class OrderTest {@org.junit.Testpublic void calculatePrice() {//这个商品是鞋子,123块钱一双Product productShoes = new Product();productShoes.setName("shoes");productShoes.setPrice(123);//这个商品是袜子,8块钱一双Product productSocket = new Product();productSocket.setName("socket");productSocket.setPrice(8);//这是一个老客户,打七折Customer customer = new Customer();customer.setDiscount(0.7);//这个客户下了一个单Order order = new Order();order.setCustomer(customer);//买了一双鞋子,两双袜子OrderLine orderLineShoes = new OrderLine(1, productShoes);OrderLine orderLineSocket = new OrderLine(2, productSocket);List<OrderLine> orderLineList = new ArrayList<OrderLine>();orderLineList.add(orderLineShoes);orderLineList.add(orderLineSocket);order.setOrderLineList(orderLineList);//算一算总共多少钱double priceActual = order.calculatePrice();Assert.assertEquals("97.3", String.valueOf(priceActual));}
}
  • 测试用例的输出

product name:shoes     price:123.0    number:1    order line price:123.0
product name:socket    price:8.0        number:2    order line price:16.0
order base price:139.0
order discounted price:97.3

转载于:https://my.oschina.net/u/3301706/blog/3047521

用visio画UML序列图相关推荐

  1. 四步轻松实现用Visio画UML类图

    原文链接:四步轻松实现用Visio画UML类图 四步轻松实现用Visio画UML类图 本节和大家一起学习一下用Visio画UML类图的方法,主要有四个步骤,这里和大家分享一下,相信通过本节的学习,你对 ...

  2. Visio画UML类图

    用Visio画UML类图 1.首先创建一个类图.接下来我们要做一下准备工作,因为我们这里用了PSDK中的POINT类型,在种数据类型在visio数据类型中找不到,所以我们先得追加这个数据类型.为了便于 ...

  3. visio画uml类图添加自定义数据类型

    类图(Class Diagram): 类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础.类图主要是用来显示系统中的类.接口以及它们之间的静态结构和关系的一种静态模型. 类图的3个基本组件 ...

  4. visio uml 画java类图_用visio画UML类图

    对于画类图的工具很多,曾经学过用starUML画类图,但这个是用于Java语言的,对于用vs编程C++语言,个人感觉用visio会好一点.以下用以前面的俄罗斯方块游戏中的一个Block类为例来讲述 c ...

  5. visio2013-软件UML序列图01

    Visio2013绘制软件UML序列图 绘图形状选择 1. 图形选择 2. 子图说明                 对象:序列图中的对象是类的实例,它可以是系统的参与者或者任何有效的系统对象:    ...

  6. Visio画UML图基本操作及技巧解析

    Visio如何添加枚举类型 1.  新建DataType 2. 选择DataType -> Property -> Stereotype -> enumeration 3. 添加其他 ...

  7. [ 利器篇 ] - 快速画一张UML序列图

    最近几个项目组的团队进行沟通,有APP交付组的,也有嵌入式设备的交付组,还有云端开发的交付组.几个组一起实现一个涉及APP / Device / Cloud 功能开发,开完讨论会之后,如何用一张图画出 ...

  8. 使用Visio画UML图(Java)

    2019独角兽企业重金招聘Python工程师标准>>> 1.全面认识UML类图元素:http://cqujsjcyj.iteye.com/blog/387546 2.类UML2:ht ...

  9. startuml如何画流程图_实例介绍用Visio画UML流程图方法

    本文和大家重点讨论一下用Visio画UML流程图方面的内容,通过实例 向大家介绍,相信通过本文的虚席你对用Visio画UML流程图有所了解. 用Visio画UML流程图 在一次会议中看到有个同事在讲解 ...

最新文章

  1. 直观地理解车辆的运动控制
  2. RabbitMQ学习总结(7)——Spring整合RabbitMQ实例
  3. Spark - 大数据Big Data处理框架
  4. PHP: to use scptask, you need to install the SSH extension.
  5. 链式前向星模板 建图+dfs+bfs+dijkstra
  6. MySQL表名不区分大小写的设置方法
  7. 【Android】Activity的四种launchMode
  8. angularJs跨域
  9. 02函数-03-闭包
  10. 省钱小贴士(ECS):教你如何每年省出8w+ 块
  11. Python学习笔记(十三)文件操作函数
  12. 在centos上安装mysql
  13. RedHat(CentOS 5)下安装FileZilla Client注意事项
  14. 软件项目开发报价指南
  15. 协方差矩阵及其计算方法
  16. c++实现多对多生产者消费者和socket连用
  17. ECCV 2022 | 稀有类别提升31%!如何解决3D检测中长尾问题?(Waymo最新)
  18. 量子物理 薛定谔的猫
  19. 46家公司的笔试题,拿去练练手吧
  20. 交叉编译libusb和libusb-compat-0.1.5

热门文章

  1. 微信小程序云数据库+云函数
  2. SQL优化篇--SQL TUNNING ADVICER使用
  3. Python的imread()函数
  4. Gitolite 构建 Git 服务器
  5. 剪枝与重参第三课:常用剪枝工具
  6. Bison^Flex=语法分析生成中
  7. 云原生实战学习视频笔记1【尚硅谷】
  8. 大学生谈创业之网络赚钱(副业推荐的一些无货源赚钱项目资源)
  9. (附源码)计算机毕业设计SSM基于vue的图书管理系统2022
  10. 厦门硅谷云 php,惊艳亮相!同安新地标效果公布!“厦门硅谷”长这样!