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幫助您創建具有專業外觀的圖表,以便理解、記錄和分析信息、數據、系統和過程。 |
溫馨提示:喜歡本站的話,請收藏一下本站!