從0開始Powerdesign類圖

1. 爲什麼要畫類圖?

有了它整個項目的類結構更加清晰,或者說一個剛入職進入項目組的成員能更快的瞭解整個項目。
當一個新的項目產生,類圖可以從宏觀上體現領域模型。

2. 環境準備

使用的是powerdesign15.5版本,自行百度下載安裝

3. 創建類圖

在這裏插入圖片描述

又或者新建一個類圖
在這裏插入圖片描述

4. 常用類型、連線

4.1. 先要規劃好包package的層級結構

這個屬於在寫代碼前,先把項目的包目錄結構先定義清楚。一般情況下我們由dao、service、facade三層組織。

  • dao:可以是mybatis的mapper或逆向生成的dao類
  • service:是dao的具體實現,一般不會出現service之間的相互調用
  • facade:門面,作用是包裝多個service,進而實現一定複雜度的業務邏輯

4.2. 在powerdesign中創建package

這裏要求我們把package預先設定好
在這裏插入圖片描述

建好的package層級如下
在這裏插入圖片描述

4.3. 在畫圖之前,先理解一下要畫什麼圖形?要怎麼連線?

4.3.1. 繪製抽象類Person,含基本屬性和方法

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

預覽抽象類生成的代碼
在這裏插入圖片描述

4.3.2. 繪製實現類extends,舉例:Man extends Person

在這裏插入圖片描述

連線,說明Man extends Person
在這裏插入圖片描述

Man類會自動生成extends語句
在這裏插入圖片描述

4.3.3. 繪製接口和實現類

如何繪製接口?
在這裏插入圖片描述

實現類和接口的連線也是用Generalization
在這裏插入圖片描述

4.3.4. 關聯(Association)、聚合(Aggregation)、組合(Composition)、依賴(Dependency)

先來個網上的結論(注:這個描述的不清楚,簡單看看,然後看下面的例子)

  • 關聯關係:關係對象出現在實例變量中
  • 依賴關係:關係對象出現在局部變量或者方法的參數裏,或者關係類的靜態方法被調用
  • 聚合關係: 關係對象出現在實例變量中
  • 組合關係:關係對象出現在實例變量中
  • 泛化關係: extends
  • 實現: implements

可以看到,“依賴關係”說的比較清楚,其他的幾個就等於沒說了。要結合具體的案例說明:

4.3.4.1. 關聯關係(只是屬性引用),畫圖用Association。比如在facade中有個service作爲屬性,這就是關聯關係。

解釋:
就是一個對象facade中持有對象service的引用,這樣對象service中的屬性和方法facade也就知道了,就是這個意思,在實際的代碼中體現在一個類上聲明一個成員變量
在這裏插入圖片描述

tips:

  • 箭頭及指向:帶普通箭頭的實心線,指向被擁有者
  • 連接線,默認的是0…*,生成的屬性代碼是數組類型。所以要雙擊連線,在detail中更改
    在這裏插入圖片描述

改完之後看看PersonFacade自動生成的代碼差異
在這裏插入圖片描述

4.3.4.2. 聚合關係(屬性引用,可分別獨立存在),畫圖用Aggregation。比如車和輪胎是整體和部分的關係,輪胎離開車仍然可以存在

解釋:
是整體與部分的關係, 且部分可以離開整體而單獨存在,如車和輪胎是整體和部分的關係,輪胎離開車仍然可以存在
聚合關係是關聯關係的一種,是強的關聯關係;關聯和聚合在語法上無法區分,必須考察具體的邏輯關係
比如一個學校有高中部和初中部,這些學生加起來都是屬於這個學校的,那從聚合的概念上講整體就是這個學校,部分就是學生了,且部分可以離開整體而單獨存在,這意思是說學生可以轉校去別的學校,但是這個學校還是存在的,不會因爲一個學生轉校了找個學校就沒了
在這裏插入圖片描述

tips:

  • 箭頭指向:帶空心菱形的實心線,菱形指向整體
    在這裏插入圖片描述

4.3.4.3. 組合關係(屬性引用,不可獨立存在),畫圖用Compositon。比如公司和部門是整體和部分的關係, 沒有公司就不存在部門

解釋:
是整體與部分的關係, 但部分不能離開整體而單獨存在. 如公司和部門是整體和部分的關係, 沒有公司就不存在部門
組合關係是關聯關係的一種,是比聚合關係還要強的關係,它要求普通的聚合關係中代表整體的對象負責代表部分的對象的生命週期
代碼體現:成員變量
在這裏插入圖片描述

tips:
箭頭指向:帶實心菱形的實線,菱形指向整體
自動生成的代碼如下:
在這裏插入圖片描述

4.3.4.4. 依賴關係(非屬性,如局部變量),畫圖用Dependency。比如學校通知學生開學的方法裏,要用到學生類型

解釋:
是一種使用的關係, 即一個類的實現需要另一個類的協助,所以要儘量不使用雙向的互相依賴
代碼表現:局部變量、方法的參數或者對靜態方法的調用
在這裏插入圖片描述

tips:

  • 箭頭指向:帶箭頭的虛線,指向被使用者
    自動生成的代碼如下:
    在這裏插入圖片描述

4.3.5. 如何畫抽象類?

仍然選擇Class,在Class面板的General中勾選Abstract
在這裏插入圖片描述

4.3.6. 如何畫屬性?

在這裏插入圖片描述

4.3.7. 如何畫方法?

在這裏插入圖片描述

4.3.8. 如何畫方法入參和反參?

在這裏插入圖片描述

4.3.9. 如何畫泛型?

在這裏插入圖片描述

生成的泛型代碼
在這裏插入圖片描述

4.3.10. 如何創建一個快捷方式?

爲什麼需要快捷方式?
舉個例子,在facade層,我們需要用到service的接口,並且facade和接口之間是關聯關係Association。
如果我們不用快捷方式,那總不能在facade的設計面板裏再畫一個service的Class,那這個時候就需要用到快捷方式:即直接拖拽service到facade的畫板裏。
這樣,我們就可以組織一個全面的關聯關係,來表述facade和service之間的關係。
在這裏插入圖片描述

4.3.11. 如何快速的找到定義的Class?

在實際工作中,有時候爲了畫一個完整的邏輯關係,會用到不少Class的快捷方式,快捷方式雙擊是無法打開Class對話框的,那如何找到該Class的定義呢?
找到要找的Class類
在這裏插入圖片描述

輸入要找的類名稱
在這裏插入圖片描述

即可找到
在這裏插入圖片描述

4.3.12. 不能在2個快捷方式之間連線,除非就是簡單的Link

2個快捷之間無法畫關係連線。快捷和實際Class之間可以畫關係連線。
在這裏插入圖片描述

簡單的Link
在這裏插入圖片描述

Link的效果
在這裏插入圖片描述

4.3.13. *、0…1、1…1等的含義

在這裏插入圖片描述

怎麼調整數量關係?雙擊連線進行修改
在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

以上可以看出,如果在Department處是0…或者1…,那麼在Company中的Department屬性就是數組
如果在Department處是0…1或者1…1,那麼在Company中的Department屬性就是單元素屬性
所以:一般情況下,要修改成1…1

5. 類圖生成Java代碼

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

6. Java代碼生成類圖

  • 如果是想單個的Java文件或在一個目錄下的幾個Java文件生成類圖,那麼這麼操作:
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

在這裏插入圖片描述

  • 如果是想把整個目錄下的Java代碼生成類圖,那麼這麼操作:
    在這裏插入圖片描述

在這裏插入圖片描述
生成的圖會比較細緻(其實就是亂),需要自行調整

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章