2012-03-10 174 views
15

我有一個關於關聯問題,是準確的,我想知道的多重性,我明白這些,但是例如,如果我想有:UML關聯多重

​​

劑量意味着在任何時候期間系統存在的情況下,如果系統運行正常,那麼必須至少有一名學生被分配到該班級,或者那些多元化應該是真實的。

我在問這個問題,因爲我想知道創建對象的時刻。首先我們創建一個空課,然後用學生填充它。一段時間以來,班級是空的,但只有在創建和填充期間,纔有至少一名學生。因爲如果我將1更改爲0..1,它會表明可能有空課,它不是假的(這是填充的時刻),但後來我不想允許沒有學生的課程。

編輯:將0 .. *更改爲0..1,它應該像現在一樣,對不起混淆。

回答

9

劑量,這意味着在系統存在期間的任何點必須至少有一名學生分配給班級,或者如果系統正常運行,那麼這些多元化應該是真實的。

這是一個很好的問題。這意味着,當系統處於穩定狀態時,每個學生必須與正好一個類相關聯。這反過來又提出另一個問題:什麼構成「穩定狀態」?總的來說,UML並沒有將其正式化。直觀地說,它意味着什麼時候沒有進行中的活動正在積極地改變狀態。 UML的一些配置文件更加嚴謹。例如,可執行UML表示當狀態的動作正在執行時,系統可以違反基數約束。但是,當狀態動作完成時,它必須使系統處於有效狀態,即滿足所有基數約束條件。

數據庫在這裏提供了一個很好的比喻。當系統穩定時,DB約束(如非空&外鍵)必須爲真。在執行交易期間,可能會暫時違反約束條件。但是,當事務完成時,它必須使db處於有效狀態。

因此,對於您的示例如下所示:

  • 它是有效的一類與沒有學生存在時,系統是穩定的(*表示0以上 - 如此類不需要有任何的學生)
  • 當系統穩定時('1'表示正好一個),學生在沒有被分配到某個類別的情況下存在是無效的。因此,無論「交易」如何產生,學生還必須將學生與班級相關聯。

hth。

+0

感謝您的回答:) – Andna 2012-03-11 08:14:34

+0

不客氣 - 很好的問題。 – sfinnie 2012-03-11 16:06:17

0

不,該*表示不是每個班級中至少有一名學生在任何時間。但另一方面,從學生到班級,多樣性意味着任何學生在正好一個類。

由於建模的原因,您可能需要將1多樣性更改爲*,但這取決於您的上下文。

+0

好吧,但是這個「隨時」怎麼樣,這是否也排除了我描述的情況(創建一個對象),還是這些情況是沒有意義的? – Andna 2012-03-10 22:28:27

+0

關於* - 我認爲這意味着與0 .. *相同,至少它在「UML蒸餾」 – Andna 2012-03-10 22:36:01

+0

@Andna中所說的取決於您的UML編輯器如何解釋您的輸入......您應該能夠檢查該圖並查看每個端點的實際上限和下限。 – 2012-03-10 22:40:24

1

劑量是指在系統中存在的任何時刻必須有至少1名學生分配到類

這意味着恰好有分配給多個學生一個班。

關聯的每一端都有一個較高的多重邊界和一個較低的多重邊界,但是如果上邊界和下邊界相同,大多數UML編輯器將只顯示一個值。如果你想允許(零或一)很多,你可以寫這樣的:

0..1  * 
----------- 

你真的可能想在這裏什麼是許多一對多的關係......學生可以在許多類,而班級可以包含很多學生。

+0

約2年後,你的答案回答了我的問題:)這就是爲什麼有4個值的多樣性。在休眠狀態下,我們只將它建模爲多對一的一對一一對多,只需要2個值。 – lovespring 2014-03-30 23:43:04