国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

程序員都應學習的語言:看25張圖學UML

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-14 23:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

首發:嵌入式客棧
作者:逸珺

[導讀] 作為程序猿都最好掌握的一門語言,那就是UML(Unified Modeling Language),統一建模語言(UML)是軟件工程領域中一種通用的開發建模語言,旨在提供一種可視化系統設計的標準方法。是開發人員、系統設計人員交流的有效工具。今天來分享一下UML的一些體會,如有錯誤請幫忙指正。

注:UML工具有很多,本文描述的基于Enterprise Architect。最近微信平臺排序規則升級了,如不想錯過小號文章,建議給小號加下星標。

UML前世今生

UML時間進化線:


說到UML不得不提的三位大神,Grady Booch、Jacobson、James Rumbaugh,三位是UML的創始人,均為軟件工程界的權威,除了著有多部軟件工程方面的著作之外,在對象技術發展上也有諸多杰出貢獻,其中包括Booch方法、對象建模技術(OMT)和Objectory(OOSE)過程。三人被合稱為“UML三友”。

面向對象編程方法以及描述符號進化歷史:


然后逐步發展到UML2.5標準。

UML目前的官方組織是https://www.uml.org/

宏觀看UML

UML用圖去描述一個軟件系統,從需求、設計、到部署的方方面面都以及覆蓋。那么從總體上先來看看UML有哪些圖呢?

從描述系統建模目的,UML圖可以分成下面4大類:

從建模的動態視角/靜態視角,可以這樣去分類:

微觀看UML

UML由基本的組成可以從三大塊去了解:事物/關系/圖

事物(Things)

  • 構件事物:UML模型的靜態部分,描述概念或物理元素
  • 類:具有相同屬性相同操作 相同關系相同語義的對象的描述
  • 接口:描述元素的外部可見行為,即服務集合的定義說明
  • 協作 描述了事物間的相互作用的集合
  • 用例:代表一個系統或系統的一部分行為,是一組動作序列的集合
  • 構件:系統中物理存在,可替換的部件
  • 節點:運行時存在的物理元素
  • 另外,參與者、信號應用、文檔庫、頁表等都是上述基本事物的變體
  • 行為事物:UML模型圖的動態部分,描述跨越空間和時間的行為
  • 狀態機:描述事物或交互在生命周期內響應事件所經歷的狀態序列
  • 交互:實現某功能的一組構件事物之間的消息的集合,涉及消息、動作序列、鏈接
  • 分組事物:UML模型圖的組織部分,描述事物的組織結構
  • 注釋事物:UML模型的解釋部分,用來對模型中的元素進行說明,解釋

關系(Relationship)

下面是UML的基礎4大關系:

  • 實現(realization)是類元之間的語義關系,其中的一個類元指定了由另一個類元保證執行的契約
  • 泛化(generalization)是一種特殊/一般的關系。也可以看作是常說的繼承關系
  • 關聯(association)是一種結構關系,它指明一個事物的對象與另一個事物的對象間的聯系
  • 依賴(dependency)是兩個事物之間的語義關系,其中一個事物(獨立事物)發生變化,會影響到另一個事物(依賴事物)的語義

更為詳細的描述,看看下面這些表吧:

圖(Diagram)

  • 用例圖/Use Case Diagram:用于描述系統的參與者與用例間的關系
  • 類圖/Class Diagram:?類圖以反映類的結構(屬性、操作)以及類之間的關系為主要目的,描述了軟件系統的邏輯結構,是一種靜態建模方法
  • 對象圖/Object Diagram: 描述系統類在某個時刻的具體實例化情況,類似系統某時刻對象角度的快照
  • 序列圖/Sequence Diagram:描述對象間動態行為在一段時間的行為序列
  • 時序圖/Timing Diagram:描述對象在時間維度的動態行為
  • 通訊圖/Communication Diagram:類似序列圖,相對序列圖強調時間維度,通訊著重描述協作的邏輯關系
  • 相互作用概視圖/Interaction Overview Diagram:系統高層級的交互描述,可以引用其他序列圖、時序圖、通訊圖、以及交互概視圖
  • 復合結構圖/Composite Structure Diagram:復合結構圖反映了類,接口或組件(及其組件)的內部協作屬性來描述一個功能
  • 信息流圖/Info Flow Diagram:描述信息在對象間、構件、包、參與者之間的流向
  • 狀態機圖/State Machine Diagram:用于描述元素在不同狀態間如何遷移的邏輯聯系
  • 活動圖/Activity Diagram:常用于描述系統級行為的實現建模。需要考慮多種因素:邏輯條件、并發、中斷、數據訪問等等
  • 封裝圖/包圖/Package Diagram:包圖描繪了將模型元素組織到包中以及它們之間的依賴關系(包括包導入和包擴展等)。它們還提供相應命名空間的可視化。
  • 構件圖/Component Diagram:用于高層級描述系統的組成構件,以及構件間的依賴關系
  • 部署圖/Deployment Diagram:描述系統的部署方式(如何部署、部署在什么環境、硬件環境、軟件環境等等)
  • .....

用例圖

  • 參與者/Actor:圖中的小人,表示系統的用戶,如人/機器/內部的其他子系統/硬件等
  • 用例/Use Case:圖中的橢圓框及描述,描述參與者與系統交互所實現的工作內容經常會配合附加文本進行詳細描述。
  • 邊界/Boundary:方框,描述框里的都是屬于建模對象里的東東,建模的時候可以方便識別與其他系統交互的接口

用例圖在UML語言中處于至關重要的位置,所謂4+1架構設計,用例圖用于描述系統需求,處于核心位置。屬于Use-case drivering 大法的心臟。

類圖/ Class Diagram


這個類圖描述一個圖像管理系統。

對象圖/Object Diagram

描述一個圖書管理系統某時刻對象的快照。

序列圖/Sequence Diagram


此圖說明了在交互中滿足視圖歷史用例所需的對象。對象之間的消息流為用戶提供了事務歷史信息。描述圖書管理系統如何查閱歷史的操作系列,反應了客戶端與各對象間消息傳遞關系。

時序圖/Timing Diagram

這個類似于芯片的時序圖概念。下圖描述用戶在有卡/無卡對系統訪問的時間線場景圖:

通訊圖/Communication Diagram


這是一個嵌入式系統的UML建模,該圖描述一個壓力控制系統兩個主要用例的實現:

  • 壓力控制循環,上面的數字以及箭頭表示消息傳遞流向
  • 通過HMI設置壓力

交互概視圖/Interaction Overview

描述了一個圖書管理系統如何從訂單發起后的所有交互概要圖,每個子圖上面的ref表示引用了一個更詳細的圖,比如Add to Shopping Basket 放入購物籃的具體動作:

復合結構圖/Composite Structure

狀態機圖/State Machine Diagram


這是描述圖書訂購系統如何登錄的狀態機圖

活動圖/Activity Diagram

常見的活動圖

帶泳道活動圖

將活動分組,明確該組活動負責的對象,對象負責該組的全部活動

子活動圖


活動圖中,某幾個活動可以組成一個內聚的子活動。

可中斷活動圖

這里的中斷并不嚴謹,本圖中表示這個活動事物是可以取消的。

封裝圖/包圖/Package Diagram

構件圖/ Component Diagram

用以描述構件之間的相互關系。

部署圖/Deployment Diagram

總結一下

本文走馬觀花的將UML大致梳理了一下,并結合EA的例圖,將常見的UML圖的作用大致描述一遍,供大家參考。對于軟件開發人員而言,UML還是很有必要學習掌握的。

本文辛苦原創分享,如果覺得有價值也請幫忙點贊/轉發支持,不勝感激!

_END_—

審核編輯:符乾江
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • UML
    UML
    +關注

    關注

    0

    文章

    123

    瀏覽量

    31588
  • 深度學習
    +關注

    關注

    73

    文章

    5598

    瀏覽量

    124396
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    學習單片機快速方法

    那么多錢去養那些優化代碼的程序員還不如買一套新的硬件。我現在也是用C語言編程的。 匯編幾乎不用。知道怎么使用開發軟件之后,你就可以按照學習板的教程進行編程練習。練習要分模塊進行,比如流水燈模塊,你
    發表于 01-14 07:42

    大理的AI野心藏不住了——風花雪月中千名程序員探討人工智能

    2025 年12月4日至6日第二屆CCF程序員大會暨大理人工智能與應用國際開發者大會在大理圓滿落幕。
    的頭像 發表于 12-24 17:45 ?715次閱讀
    大理的AI野心藏不住了——風花雪月中千名<b class='flag-5'>程序員</b>探討人工智能

    程序員最常見謊言

    了。 28我已經測試過了,這個功能沒問題,可以上線了。 29別擔心,這個問題很快就能解決。 30代碼快寫完了,已經完成 90% 了 。 希望大家對程序員多一些容忍以及諒解! 各位程序員你們都被我說中了哪些?說說你們的觀點
    發表于 12-10 08:24

    單片機的誤區

    任何單片機程序的編寫。根本就不要學去C語言的高級用法,即使你用C語言的最基礎的語句能夠完成程序的編寫,底層運行的機制是學習重中之重! 等你積
    發表于 11-14 07:46

    圖解碼說-六大UML關系(依賴,繼承,實現,關聯,聚合,組合)

    UML是面向對象設計的 “施工”,而依賴、繼承、實現、關聯、聚合、組合這六大關系,就是圖中定義類與類互動規則的核心 “語法”。掌握它們,就能快速看懂類的協作邏輯與系統結構 1 UML
    的頭像 發表于 11-05 09:03 ?683次閱讀
    圖解碼說-六大<b class='flag-5'>UML</b>類<b class='flag-5'>圖</b>關系(依賴,繼承,實現,關聯,聚合,組合)

    奔赴熱AI,碼力全開!Talkweb House@1024程序員日系列活動圓滿收官

    1024程序員日”系列活動至此劃上了一個圓滿句號。本屆1024程序員節以“AI構建世界,智能引領未來”為主題,廣邀技術大咖、產業領袖、企業代表與全球開發者齊聚星城
    的頭像 發表于 10-27 18:59 ?768次閱讀
    奔赴熱AI,碼力全開!Talkweb House@1024<b class='flag-5'>程序員</b>日系列活動圓滿收官

    開鴻智谷“以賽促、以賽選才”|1024程序員節暨開源鴻蒙構建大會圓滿落幕!

    10月24日,由開鴻智谷聯合主辦的長沙1024程序員節暨開源鴻蒙構建大會在長沙圓滿落幕。本次活動以“湘聚長沙,共赴熱AI”為主題,通過技術分享與實戰競賽相結合的方式,著力培養“開源鴻蒙+AI”領域
    的頭像 發表于 10-27 17:58 ?702次閱讀
    開鴻智谷“以賽促<b class='flag-5'>學</b>、以賽選才”|1024<b class='flag-5'>程序員</b>節暨開源鴻蒙構建大會圓滿落幕!

    分享一個嵌入式學習階段規劃

    給大家分享一個嵌入式學習階段規劃: (一)基礎筑牢階段(約 23 天) 核心目標:打牢 C 語言、數據結構、電路基礎C 語言開發:變量 / 指針 / 結構體等核心語法,用 Dev-
    發表于 09-12 15:11

    如何在機器視覺中部署深度學習神經網絡

    人士而言往往難以理解,人們也常常誤以為需要扎實的編程技能才能真正掌握并合理使用這項技術。事實上,這種印象忽視了該技術為機器視覺(乃至生產自動化)帶來的潛力,因為深度學習并非只屬于計算機科學家或程序員。 從頭開始:什么
    的頭像 發表于 09-10 17:38 ?900次閱讀
    如何在機器視覺中部署深度<b class='flag-5'>學習</b>神經網絡

    深度操作系統deepin 25全面支持凹語言

    近日,deepin(深度)社區宣布,deepin 25 現已完成對國產通用編程語言語言 (Wa-Lang) 的兼容性測試。在 deepin 25 默認安裝環境下,即可直接使用凹
    的頭像 發表于 07-10 15:26 ?1004次閱讀
    深度操作系統deepin <b class='flag-5'>25</b>全面支持凹<b class='flag-5'>語言</b>

    跟老齊Python:從入門到精通

    礎的學習者介紹一門時下比較流行、并且用途比較廣泛的編程語言,所以,本書讀起來不晦澀,并且在其中穿插了很多貌似與Python 編程無關,但與學習者未來程序員職業生涯有關的內容。 獲
    發表于 06-03 16:10

    程序設計與數據結構

    的地址)出發,采用推導的方式,深入淺出的分析了廣大C程序員學習和開發中遇到的難點。 2. 從方法論的高度對C語言在數據結構和算法方面的應用進行了深入講解和闡述。 3. 講解了絕大多數C程序
    發表于 05-13 16:45

    如何在 樹莓派 上編寫和運行 C 語言程序

    ,一本很好的書是BrianKernighan和DennisRitchie所著的《TheCProgrammingLanguage》。這本書對經驗豐富的程序員和想學習C語
    的頭像 發表于 03-25 09:28 ?1155次閱讀
    如何在 樹莓派 上編寫和運行 C <b class='flag-5'>語言</b><b class='flag-5'>程序</b>?

    零基礎入門:如何在樹莓派上編寫和運行Python程序

    是一種非常有用的編程語言,其語法易于閱讀,允許程序員使用比匯編、C或Java等語言更少的代碼行。Python編程語言最初實際上是作為Linux的腳本
    的頭像 發表于 03-25 09:27 ?2032次閱讀
    零基礎入門:如何在樹莓派上編寫和運行Python<b class='flag-5'>程序</b>?

    為什么學了C語言,卻寫不出像樣的項目?

    學習編程的路上,C語言幾乎是每個程序員的“必修課”。不管你是打算從事嵌入式開發、系統編程,還是想要深入理解操作系統的底層原理,C語言都是一塊重要的基石。然而許多人在
    的頭像 發表于 03-14 17:37 ?917次閱讀
    為什么學了C<b class='flag-5'>語言</b>,卻寫不出像樣的項目?