<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          沒想到吧!用代碼畫時(shí)序圖!YYDS

          共 7120字,需瀏覽 15分鐘

           ·

          2022-07-31 17:51

          大家好,我是小富~

          最近通過代碼來畫時(shí)序圖,UML用例圖,感覺很不錯(cuò),所以給大家分享一下。

          日常開發(fā),一般在設(shè)計(jì)階段,我們都需要畫時(shí)序圖、用例圖等等。大家平時(shí)畫圖的時(shí)候,是用draw.io還是processOn呢?用它們畫出的圖,其實(shí)都很挺好看的。但是呢,今天田螺哥介紹一個(gè)款開源的畫圖神器!用代碼就能畫圖,配合IDE使用,畫圖高效簡(jiǎn)單,信手拈來,還挺美觀的。這個(gè)神器就是PlantUML。

          1. PlantUML 簡(jiǎn)介

          PlantUML是一個(gè)開源項(xiàng)目,可以快速編寫UML圖的工具。它可以支持編碼的方式來生成圖形??梢杂脕懋?strong style="font-weight: bold;color: black;">時(shí)序圖、UML用例圖、類圖、思維導(dǎo)圖、ER圖等等。

          PlantUML 畫出來的圖,簡(jiǎn)潔美觀,先給大家看看,一個(gè)用PlantUML畫出來的登錄時(shí)序圖,以及對(duì)應(yīng)畫圖的代碼,如下:

          /**
           * 關(guān)注公眾號(hào):鍵撿田螺的小男孩
           */
          @startuml
          title Sequence Diagram of User login
          actor User as user

          participant "gateway" as gateway
          participant "user-core" as userCore
          database "MySQL" as mysql
          database "Redis" as redis

          autonumber
          user-> gateway:login request,param:username,password
          activate gateway
          gateway-> userCore:forward the login request
          activate userCore
          userCore-> userCore :check the login param
          userCore-> mysql:query user info from mysql by username
          activate mysql
          mysql-> userCore:response with username and password
          deactivate mysql
          userCore->userCore:compare the requested password with the DB's password
          userCore-> userCore: generate an unique token
          userCore--> redis: save the token to redis
          userCore-> gateway: response with the token
          deactivate userCore
          gateway-> user: login success with the token
          deactivate gateway
          @enduml

          登錄用例時(shí)序圖如下:

          2. PlantUML的安裝使用

          PlantUML的安裝很方便的.有個(gè)插件,名字是:PlantUML Integration,大家可以去IDE的插件市場(chǎng),搜索安裝即可,如下:

          安裝成功后,想快速體驗(yàn)一般的話.可以新建一個(gè)項(xiàng)目,然后新建一個(gè)plantUML File文件,然后把我上個(gè)小節(jié),登錄時(shí)序圖那個(gè)代碼復(fù)制進(jìn)去,就可以看到登錄時(shí)序圖啦.


          (如果是非時(shí)序圖,希望即時(shí)展示,需要安裝下Graphviz

          3.如何用PlantUML 畫時(shí)序圖

          什么是時(shí)序圖?

          時(shí)序圖(Sequence Diagram),又名序列圖、循序圖,是一種UML交互圖。它通過描述對(duì)象之間發(fā)送消息的時(shí)間順序顯示多個(gè)對(duì)象之間的動(dòng)態(tài)協(xié)作。它可以表示用例的行為順序,當(dāng)執(zhí)行一個(gè)用例行為時(shí),其中的每條消息對(duì)應(yīng)一個(gè)類操作或狀態(tài)機(jī)中引起轉(zhuǎn)換的觸發(fā)事件。

          如何用PlantUML畫時(shí)序圖呢?

          你可以先新建一個(gè)PlantUML文件

          然后選擇Sequence,并定義一個(gè)文件名稱

          就會(huì)有默認(rèn)的時(shí)序圖生成啦.

          我們照著登錄時(shí)序圖的代碼,來大概說下每個(gè)關(guān)鍵詞的意思吧.

          /**
           * 關(guān)注公眾號(hào):鍵撿田螺的小男孩
           */
          @startuml
          title Sequence Diagram of User login
          actor User as user

          participant "gateway" as gateway
          participant "user-core" as userCore
          database "MySQL" as mysql
          database "Redis" as redis

          autonumber
          user-> gateway:login request,param:username,password
          activate gateway
          gateway-> userCore:forward the login request
          activate userCore
          userCore-> userCore :check the login param
          userCore-> mysql:query user info from mysql by username
          activate mysql
          mysql-> userCore:response with username and password
          deactivate mysql
          userCore->userCore:compare the requested password with the DB's password
          userCore-> userCore: generate an unique token
          userCore--> redis: save the token to redis
          userCore-> gateway: response with the token
          deactivate userCore
          gateway-> user: login success with the token
          deactivate gateway
          @enduml

          關(guān)鍵詞解釋如下:

          • title:表示該UML用例圖的標(biāo)題
          • actor:表示人形的參與者
          • as: 使用as 關(guān)鍵字命名參與者。你可以把它理解成定義變量一樣,as后面跟著的就是變量,聲明后,我們后面就可以使用這個(gè)變量啦
          • participant:表示普通的參與者,它跟actor的主要區(qū)別是:形狀不一樣
          • database:表示參與者形狀是數(shù)據(jù)庫(kù).
          • 顯示的順序是怎么定義的:聲明的參與者順序?qū)⑹牵J(rèn)的)顯示順序。
          • autonumber:可以給參與者添加順序
          • ->:表示繪制兩個(gè)參與者之間的信息,如果你希望是虛線,可以使用-->.
          • activatedeactivate:表示參與者的生命線

          當(dāng)然,PlantUML功能挺豐富的,它還可以組合消息,雖然在我的登錄時(shí)序圖還沒體現(xiàn)出來. 它提供了alt/else、opt、loop來組合消息.如下:

          @startuml
          Alice -> Bob: 認(rèn)證請(qǐng)求

          alt 登錄成功

              Bob -> Alice: 認(rèn)證接受

          else 某種失敗情況

              Bob -> Alice: 認(rèn)證失敗
              group 我自己的標(biāo)簽
              Alice -> Log : 開始記錄攻擊日志
                  loop 1000次
                      Alice -> Bob: DNS 攻擊
                  end
              Alice -> Log : 結(jié)束記錄攻擊日志
              end

          else 另一種失敗

             Bob -> Alice: 請(qǐng)重復(fù)

          end
          @enduml

          對(duì)應(yīng)的時(shí)序圖如下:

          4. 如何用PlantUML 畫UML用例圖

          什么是用例圖?

          用例圖(英語(yǔ):use case diagram)是用戶與系統(tǒng)交互的最簡(jiǎn)表示形式,展現(xiàn)了用戶和與他相關(guān)的用例之間的關(guān)系。通過用例圖,人們可以獲知系統(tǒng)不同種類的用戶和用例。用例圖也經(jīng)常和其他圖表配合使用。

          如何用PlantUML畫UML用例圖呢?

          你可以先新建一個(gè)PlantUML文件,然后選擇user case,并定義個(gè)文件名

          就會(huì)有默認(rèn)的UML用例圖生成啦

          我挑官網(wǎng)一個(gè)用例圖demo來介紹吧,代碼如下:

          @startuml
          left to right direction
          actor Guest as g
          package Professional {
            actor Chef as c
            actor "Food Critic" as fc
          }
          package Restaurant {
            usecase "Eat Food" as UC1
            usecase "Pay for Food" as UC2
            usecase "Drink" as UC3
            usecase "Review" as UC4
          }
          fc --> UC4
          g --> UC1
          g --> UC2
          g --> UC3
          @enduml

          對(duì)應(yīng)生成的用例圖如下:

          來看下每個(gè)關(guān)鍵詞的意思:

          • left to right direction:表示從左到右繪制用例圖
          • actor Guest as g:定義一個(gè)人形參與者,變量別名是g.
          • package Professional:定義一個(gè)包package,名字為Professional.package可以用來對(duì)用例和角色分組.
          • usecase "Eat Food" as UC1:定義一個(gè)用例,別名為UC1.
          • fc --> UC4:表示角色fc和用例UC4關(guān)聯(lián)起來.角色和用例之間的關(guān)系,用-->來表示。

          5. 如何用plantUML 畫思維導(dǎo)圖

          什么是思維導(dǎo)圖?

          英文是The Mind Map,又名心智導(dǎo)圖,是表達(dá)發(fā)散性思維的有效圖形思維工具 ,它簡(jiǎn)單卻又很有效同時(shí)又很高效,是一種實(shí)用性的思維工具。

          寫了一個(gè)簡(jiǎn)單的思維導(dǎo)圖,代碼如下:

          @startmindmap
          * 公眾號(hào):撿田螺的小男孩,干貨面試題
          ** 計(jì)算機(jī)網(wǎng)絡(luò)面試題
          *** TCP/IP十五連問
          *** 兩萬字計(jì)算機(jī)面試題匯總
          ** MySQL面試題
          ** Redis面試題
          ** 大廠面試真題
          *** 蝦皮十五連問
          *** 五年Oppo后端面試真題
          *** 騰訊云十五連問
          @endmindmap

          plantUML畫思維導(dǎo)圖,還是挺簡(jiǎn)單的,大家可以看下效果

          6. 如何用planUML 畫活動(dòng)流程圖

          什么是活動(dòng)圖?

          動(dòng)態(tài)圖(activity diagram,活動(dòng)圖)是闡明了業(yè)務(wù)用例實(shí)現(xiàn)的工作流程。

          我畫了一個(gè)簡(jiǎn)單版的登錄活動(dòng)流程圖:

          @startuml
          title Activity Diagram of User login

          start
          :user request login;
          if (is request param null?) then (N)
            :query user info by username;
            if (is user info  null ?) then (N)
              :compare the password;
              if (Is password right?) then (Y)
                :generate a token ,and set it to redis;
                :response with login success;
              else(N)
                 :response with wrong password code;
                 stop
              endif
            else(Y)
              :response with error userinfo;
              stop
            endif
          else(Y)
            :response with error param;
            stop
            endif
          stop
          @enduml

          生成的流程圖如下:

          活動(dòng)圖關(guān)鍵解釋如下:

          • start表示活動(dòng)圖流程的開始
          • stop表示活動(dòng)圖流程的結(jié)束
          • :user request login;:表示活動(dòng)流程節(jié)點(diǎn)為user request login,需要加:;的哈
          • if+then+endif表示一個(gè)完整的條件判斷

          最后

          本文介紹了plantUML畫圖,有興趣的小伙伴,可以移步官網(wǎng)學(xué)習(xí)哈。如果這篇文章對(duì)您有所幫助,求一鍵三連:點(diǎn)贊、轉(zhuǎn)發(fā)、在看。

          瀏覽 64
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  男女啪免费的 | 成人片AV免费看FreeSex | 国产豆花视频在线播放 | 国产精品在线内射 | 少妇无套内谢久久 |