2009-03-06 44 views
1

我有以下方法數據類:UML類圖的關係類型的問題

  • ExecuteUDIQuery(查詢字符串)
  • ExecuteSelectQuery(查詢字符串)
  • ExecuteSP(串ANME,串[,] params)

我有很多使用數據類的類。現在我想創建一個類圖,但我不知道類與數據類有什麼樣的關係。它是一個複合材料嗎?它是1:1還是..?

一個使用數據類的類的例子是Staff類。這個類有一個方法Load(),它將使用工作人員的Id加載一個工作人員對象。此方法包含一個傳遞給Data類的ExecuteSelectQuery(字符串查詢)方法的查詢。編輯: 數據類不是靜態的。但是,我有我的疑惑。我其實不知道該怎麼辦。重點是,它唯一做的是執行查詢並返回結果。

回答

3

我會建議它的一個用法依賴關係。

有關簡要說明,請參閱here

0

聚合,合成和1對1關係之間的區別有點模糊,有些隨意。

我使用,如果一個類擁有另一個類(聚集(開放鑽石)負責的生命週期。

我在所有其他情況下1間的關係用1。

+0

實際上,在UML聚合中意味着聚合對象的生命週期獨立於聚合對象:http://www.agilemodeling.com/style/classDiagram.htm#AggregationComposition – VoidPointer 2009-03-06 12:25:39

0

是通過實例化的類如果它們是靜態的,我會將其表示爲非限定依賴性(虛線箭頭指向使用數據類到數據類的類)

如果類正在使用數據類創建它們自己的那個類t的私有實例他會是1:1組成(假設數據類實例的生命週期與使用它的對象綁定)

0

我不能避免評論您的整體設計,我會嘗試將Load方法移出Staff類,這樣這個類不直接依賴於Data類。

在你現有的設計範圍內,我會建議如下: 如果員工類包含數據類的實例變量,那麼它是一個關聯。如果數據類是爲了檢索實例而實例化的,那麼它就是給定類型的依賴關係,就像@toolkit所說的那樣。

+0

我在哪裏放置了Save方法?我的員工班負責與1名工作人員有關的所有事情,對嗎? – Martijn 2009-03-06 12:41:35

+0

您可以創建一個StaffService。單一責任並不意味着與員工有關的一切。 「員工」實例的堅持是與「代表」員工數據分開的責任。 – krosenvold 2009-03-06 14:43:32

0

沒有足夠的數據。

給我們一些課堂輪廓或什麼。從我所看到的,我實際上沒有稱這是一個數據類(它看起來更像是一個數據訪問者)聽起來像它可能是單身人士(多:1,聚合或關聯),或者如果instanced將是1:1組件。

1

我會查詢你的類的命名。一個類名通常應該是一個單數名詞。例子;

  • 窗口
  • 交易

數據是複數,並且在任何情況下,我覺得應該是數據庫。

同樣,對於工作人員 - 再次複數,我覺得應該是MemberOfStaff。除非它是一個員工名單,在這種情況下,我會稱之爲部門,項目或部門 - 無論您的問題域名是什麼。

你會發現,想出好名字上課,令人驚奇LY困難的,但它是非常值得的努力。

+0

Thnx的提示:)我會重新命名我的課程。 – Martijn 2009-03-06 12:40:43

0

現在我想創建一個類圖,但我不知道類與數據類有什麼樣的關係。

我們也不是 - 您只描述Data類,並沒有說員工如何獲取它使用的數據。

如果工作人員保持到數據類的一個或多個實例,則存在兩種工作人員和數據之間的關聯,或職員具有類型數據的屬性(如果數據具有值語義)。

如果數據實例由多個工作人員實例引用,並且它們的生命週期依賴於由工作人員實例那麼這可以被示出爲聚合關係被引用。如果數據實例未在Staff實例之間共享,並且它們的生命週期依賴於被引用,則可能會將其顯示爲組合關係。

如果X沒有保持它使用的數據實例的保持,那麼使用的關係是適當的。

0

依賴和使用是兩種最弱的「連接器」。你可能會考慮使用陳規,關鍵詞來改善關係。你可能會發現實例化,調用,創建,發送定型工作。沒有更多的信息,雖然正確的答案似乎是用法。