时间:2020-08-06 17:25作者:admin来源:未知人气:754我要评论(0)
今天尝试使用visio画了一个序列图。
话不多说,先打开visio,新建一个UML序列。
先新建几个对象生命线
加入几个激活
而后是消息,实线表示请求,虚线表示响应。
当然如果不影响理解,可以不用每个请求都配上一个响应。
此UML例子是在《UML精粹:标准对象建模语言简明指南》中拿过来的,为了更好的理解这个UML,下面使用java来实现此UML。
procuct
packagecom.simon.uml.sequenceDiagram;
/**
*CreatedbyIntelliJIDEA.
*
*@author:Simon
*@date:2019-05-09
*@time:14:50
*@description:产品
*/
publicclassProduct{
privateStringname;
privatedoubleprice;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicdoublegetPrice(){
returnprice;
}
publicdoublegetPrice(intnumber){
doubleorderLinePrice=price*number;
System.out.println("productname:"+getName()
+"tprice:"+getPrice()
+"tnumber:"+number
+"torderlineprice:"+orderLinePrice
);
returnorderLinePrice;
}
publicvoidsetPrice(doubleprice){
this.price=price;
}
}
customer
packagecom.simon.uml.sequenceDiagram;
/**
*CreatedbyIntelliJIDEA.
*
*@author:Simon
*@date:2019-05-09
*@time:14:51
*@description:客户
*/
publicclassCustomer{
privatedoublediscount;
publicdoublegetDiscountedValue(Orderorder){
returndiscount*order.getBaseValue();
}
publicdoublegetDiscount(){
returndiscount;
}
publicvoidsetDiscount(doublediscount){
this.discount=discount;
}
}
order
packagecom.simon.uml.sequenceDiagram;
importjava.util.List;
/**
*CreatedbyIntelliJIDEA.
*
*@author:Simon
*@date:2019-05-09
*@time:14:50
*@description:订单
*/
publicclassOrder{
privatedoublebaseValue;
privateCustomercustomer;
privateList<OrderLine>orderLineList;
publicdoublecalculatePrice(){
doublesumOrderLinePrice=0;
for(OrderLineorderLine:orderLineList){
doubleorderLinePrice=orderLine.calculatePrice();
sumOrderLinePrice+=orderLinePrice;
}
this.setBaseValue(sumOrderLinePrice);
System.out.println("orderbaseprice:"+sumOrderLinePrice);
doublediscountedValue=getCustomer().getDiscountedValue(this);
System.out.println("orderdiscountedprice:"+discountedValue);
returndiscountedValue;
}
publicdoublegetBaseValue(){
returnbaseValue;
}
publicvoidsetBaseValue(doublebaseValue){
this.baseValue=baseValue;
}
publicList<OrderLine>getOrderLineList(){
returnorderLineList;
}
publicvoidsetOrderLineList(List<OrderLine>orderLineList){
this.orderLineList=orderLineList;
}
publicCustomergetCustomer(){
returncustomer;
}
publicvoidsetCustomer(Customercustomer){
this.customer=customer;
}
}
orderline
packagecom.simon.uml.sequenceDiagram;
/**
*CreatedbyIntelliJIDEA.
*
*@author:Simon
*@date:2019-05-09
*@time:14:50
*@description:订单明细
*/
publicclassOrderLine{
privateintnumber;
privateProductproduct;
publicOrderLine(intnumber,Productproduct){
this.number=number;
this.product=product;
}
publicdoublecalculatePrice(){
returnproduct.getPrice(number);
}
publicintgetNumber(){
returnnumber;
}
publicvoidsetNumber(intnumber){
this.number=number;
}
publicProductgetProduct(){
returnproduct;
}
publicvoidsetProduct(Productproduct){
this.product=product;
}
}
order的测试用例
packagecom.simon.uml.sequenceDiagram;
importorg.junit.Assert;
importjava.util.ArrayList;
importjava.util.List;
/**
*CreatedbyIntelliJIDEA.
*
*@author:Simon
*@date:2019-05-09
*@time:15:23
*@description:
*/
publicclassOrderTest{
@org.junit.Test
publicvoidcalculatePrice(){
//这个商品是鞋子,123块钱一双
ProductproductShoes=newProduct();
productShoes.setName("shoes");
productShoes.setPrice(123);
//这个商品是袜子,8块钱一双
ProductproductSocket=newProduct();
productSocket.setName("socket");
productSocket.setPrice(8);
//这是一个老客户,打七折
Customercustomer=newCustomer();
customer.setDiscount(0.7);
//这个客户下了一个单
Orderorder=newOrder();
order.setCustomer(customer);
//买了一双鞋子,两双袜子
OrderLineorderLineShoes=newOrderLine(1,productShoes);
OrderLineorderLineSocket=newOrderLine(2,productSocket);
List<OrderLine>orderLineList=newArrayList<OrderLine>();
orderLineList.add(orderLineShoes);
orderLineList.add(orderLineSocket);
order.setOrderLineList(orderLineList);
//算一算总共多少钱
doublepriceActual=order.calculatePrice();
Assert.assertEquals("97.3",String.valueOf(priceActual));
}
}
测试用例的输出
productname:shoesprice:123.0number:1orderlineprice:123.0
productname:socketprice:8.0number:2orderlineprice:16.0
orderbaseprice:139.0
orderdiscountedprice:97.3
相关阅读 基于Visio绘制论文文献的技术路线图与研究流程图如何更改Visio连接器工具的默认属性?visio 如何通过代码将选择的对象设置为同一大小制作甘特图常用的几个软件,我盘点了几个好用的Microsoft Visio 2021软件下载安装教程想要精通弱电系统设计你得会Visio绘图软件,这些技巧一定要看VISIO如何裁剪完整的图形?如何在Microsoft Visio中使用MathType插入公式的方法如何利用WPS制作Visio流程图Visio2019激活密钥和激活方法
热门文章 visio 2019+project 2019专业版最新激活方法和密钥Visio 2013激活码序列号大全 Visio 2013最新产品密钥分享Visio2019激活密钥和激活方法Visio Pro 2019下载及安装激活教程
最新文章
基于Visio绘制论文文献的技术路线图与研究流程图如何更改Visio连接器工具的默认属性?
visio 如何通过代码将选择的对象设置为同一大小制作甘特图常用的几个软件,我盘点了几个好用的Microsoft Visio 2021软件下载安装教程想要精通弱电系统设计你得会Visio绘图软件,这些技巧一定要看
人气排行 visio 2019+project 2019专业版最新激活方法和密钥Visio 2013激活码序列号大全 Visio 2013最新产品密钥分享Visio2019激活密钥和激活方法Visio Pro 2019下载及安装激活教程超简单Visio2019激活步骤Visio 2010 64位/32位官方完整版正版安装,免费下载 安装和激活密Visio 2016与原本的office 安装冲突的最终解决方案visio 2013 如何自定义设置连接点,图形之间任意连接
盖楼回复X
(您的评论需要经过审核才能显示)
查看所有0条评论>>