Python設計模式 - UML - 包圖(Package Diagram)

來源:互聯網
上載者:User

標籤:font   公用服務   ted   python   簡單   檔案夾   原因   嵌套   曆史   

 

 

簡介

包圖是對各個包及包之間關係的描述,展現系統中模組與模組之間的依賴關係。一個包圖可以由任何一種UML圖組成,可容納的元素有類、介面、組件、用例和其他包等。包是UML中非常常用的元素,主要作用是分類、容納其他元素。包與包之間的關係有泛化、細化和依賴,主要取決於包內部成員之間的關係。

 

包圖建模步驟

    - 分析系統的模型元素,運用分層設計把概念、語義和邏輯上相近的元素包含在同一個包中

    - 對於每個包,分析包內每個元素的可訪問屬性,並標識出該元素的可見度

    - 確定包與包中元素之間的泛化、細化、依賴關係,相應處理重載、多重性及匯入等關係

    - 分析包結構,對包進行refine, merge等操作

 

包圖中的元素

包圖中可以容納很多元素,如類、介面、組件、注釋等,這些元素在相應的UML圖中都有涉及,這裡主要介紹包元素。

 

  • 包名的位置:UML中使用檔案夾的表徵圖來表示包,包名可以放在第一欄,也可以放在第二欄

        放在第一欄

 

放在第二欄

   

 

  • 包名的格式:每個包都有一個字串格式的包名唯一標識該包,其中包名的格式有兩種:

 

    - 簡單包名

    - 帶路徑包名

 

 

  • 可見度

      ‘+‘: public:對所有包可見

      ‘-‘: private:對本包之外不可見

      ‘#‘: protected:對本包的子包可見

 

  • 傳遞性:包與包之間的關係和可見度具有具有傳遞性

      - 關係傳遞:如果包A和包B之間存在關係,包B和包C之間存在關係,那麼包A和包C之間也存在關係          

      - 可見度傳遞:根據包與包之間依賴關係的不同傳遞可見度

            - <<import>>因為添加為公有元素的原因所以可見度可以傳遞

            - <<access>>的可見度由於添加為私人元素的原因可見度不可傳遞

 

  • 構造特性:和類的構造性相似,就是在包名關鍵字旁加入<<xxx>>作為補充說明,UML提供了5種構造型來描述包的特性

      - <<system>>: 表示該包代表一個系統

      - <<subsystem>>: 表示該包代表一個子系統

      - <<facade>>: 表示該包是由其他包構成的一個視圖

      - <<stub>>: 表示該包是一個代理包,該代理包為其他包提供公用服務

      - <<framework>>:表示該包代表一個架構

 

 

包圖類的關係

 

  • 泛化:繼承關係,跟類之間的泛化關係相似,表明是一個包家族

 

 

  • 細化:一個包中有另一個包中的所有元素,則第二個包是第一個包的細化

 

 

 

  • 依賴:一個包中引用到了另一個包,箭頭從輸入方包指向輸出方包

     

      <<use>>:一種預設的包依賴關係,表示客戶包中的元素以某種方式使用著提供者包中的公用元素

 

      <<import>>:最普遍的包依賴關係,表示提供者包中的公用元素被添加為客戶包中的公用元素

 

      <<access>>:表示提供者包中的公用元素被添加為客戶包中的私人元素

 

 

      <<merge>>:表示提供者包中的元素被擴充為客戶包中的元素

 

 

      <<trace>>:表示一個包的曆史版本發展為另一個包的進化版本

 

 

 

包圖的進階特性

 

  • 分層:根據職責分層,目的是為瞭解耦。雙向箭頭表示相互依賴。

   

 

  • 嵌套:包裡面是可以有包的。但應盡量避免使用多層嵌套包,2-3層就好

 

 

 

包圖樣本

以書店線上訂購系統為例

 

 

 

包圖的注意事項

    - 若包被撤銷,則其中的元素也會被撤銷掉

    - 合理最小化包之間的依賴

    - 合理最小化每個包中public, protected元素的個數及最大化private元素個數

    - 避免包之間的循環相依性

    - 根據類之間的依賴關係對包進行分層、分組、合并、細化

    - 包之間關係遵循高內聚、低耦合的特性

 

Python設計模式 - UML - 包圖(Package Diagram)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.