Office Visio 是Office软件系列中的负责绘制流程图和示意图的软件,是一款便于IT和商务人员就复杂信息、系统和流程进行可视化处理、分析和交流的软件。使用 Office Visio 图表,可以促进对系统和流程的了解。 ?今天尝试使用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 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 returnorderLineList; } publicvoidsetOrderLineList(List 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 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帮助您创建具有专业外观的图表,以便理解、记录和分析信息、数据、系统和过程。 |
温馨提示:喜欢本站的话,请收藏一下本站!