簡體   English   中英

用服務類繪制UML類圖

[英]draw UML class diagram with Service classes

這是大型系統的一個小場景。 我想在類圖中對這種情況進行建模,然后在代碼中實現

這是書店中的一種情況。有客戶,客戶可以購買書籍,按名稱搜索書籍以及閱讀書籍

通過以下方式實現的類圖

1.將所有操作歸類到客戶類,因為客戶是執行這些操作的人,但是buyBooks(),searchBook(),readBooks()方法不負責更改客戶類的狀態(這些方法不適用於內部數據)客戶類)的存在,因為它違反了基本的oop原則封裝。

客戶可以購買,搜索,閱讀1本書或更多本書,因此其關聯關系如圖所示。

我發現很多類圖在引用INTERNET時都以此方式繪制

在此處輸入圖片說明

2.將所有操作歸入與上述相同的客戶類別。 並分別用三個單獨的行標記每個關聯

協會

  • 客戶可以購買一本或多本書
  • 客戶可以搜索一本或多本圖書
  • 客戶可以閱讀一本或多本書籍

在此處輸入圖片說明

3.在這里把所有操作都放到服務類上,因為那些方法不負責改變客戶,書本類的狀態

然后標記關聯。

在此處輸入圖片說明 -其中哪一個是正確的班級圖?
-在uml類圖中繪制服務類是否可以接受?

我認為第一個或最后一個圖都可以工作(一旦更正),但是我傾向於第一個實現。 第二個是完全錯誤的。

我之所以使用第一個,是因為“客戶”是指其系統中的唯一目的是與您的Book類進行交互的人,尤其是鑒於您的多重性值表明客戶必須與至少一個書類相關聯這一事實。 如果客戶要做的事情多於與書本互動,那么將客戶就書本所做的事情抽象為服務可能會很有用,但我認為這里沒有必要。

現在,您的類圖語法已關閉。 箭頭應該是打開的(如> ),而不是實心的。 同樣,您在Book類上的多重性值似乎是錯誤的:如果尚未購買,則該實例與該實例相關聯的客戶為零,而與該實例相關聯的客戶則為一個。 如果是這樣,則書末的多重性值應為0..1

最后,您的第二張圖是錯誤的,因為關聯是按類而不是按操作進行的。 您不必為每個操作都關聯一個關聯,而是為每個類關聯一個關聯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM