2016-07-24 105 views
-1

有一點使用下面的信息與類圖來麻煩:UML類圖施工

  • 一個服務公司爲客戶提供服務。
  • 客戶可以分爲兩種類型:住宅企業
  • 住宅客戶只能購買住宅服務,企業客戶可以購買企業和住宅服務。
  • 住宿服務,可以預付費或後付費,企業服務總後付費
  • 預付費業務可以由客戶續期,後付費服務自動續期
  • 3G和ADSL業務出售給住宅和商業用戶,IFLY服務出售給住宅只要。

這是我做的UML圖,它會工作嗎? enter image description here

enter image description here

+1

可能有[Uml Diagram - 面向對象]的副本(http://stackoverflow.com/questions/38553719/uml -diagram-object-oriented) –

+0

正常的做法是更新舊的問題,而不是創建一個新的問題;他們在字面上是相同的。 –

+0

我刪除了舊的那個。這個解釋了問題 –

回答

1

至於你要學會做UML,我會讓你畫你的架構。不過這裏一些提示,開始您的類圖:

  • 一個服務公司爲客戶提供的服務=>這只是一般的框架。我們需要一個CustomerService
  • 客戶可以有兩種類型:法人住宅」 =>你需要的類ResidentialCorporate有泛化關係Customer
  • 住宅的客戶只能買住宅服務,企業客戶可以購買企業和住宅業務=>你需要一個ResidentialServiceCorporateService類必須Service泛化關係。另外,你可以畫出所提到的關係。
  • 住宅服務可以預付或後付,企業服務總是後付=>有幾種方法可以做到這一點。例如:您可以通過PaymendMode類和與Service的關係。加入則註釋與{ }之間寫入的約束的鏈接 - 另一種方法是預見類PrepaidProductPostpaidProductPaidProduct繼承和借鑑的強制或可選的關係(使用基數)
  • 預付費服務可以通過續約客戶,後付費服務自動更新=>再次,幾種方法來做到這一點。一種方法是在服務中添加一個方法renewal(),並通過一個轉折說明特殊情況 - 或者如果您選擇支付模式層次關係,則可以制定一個從ResidentialServicePrepaidProductBusinessServicePaidProduct的泛化關係,並且在父級上添加接口方法。
  • 「出售給住宅和商業用戶3G和ADSL服務,IFLY服務出售給居民只=>這是一個陷阱:3G,ADSL和IFLY的對象,而不是類,所以他們什麼都沒有做在類圖上。另一方面,這可能暗示您需要與Service相關的類Product

編輯:一些修正你的圖

你的圖應該代表反過來繼承:

enter image description here

您用來顯示一個多值的數組符號屬性:

enter image description here

實際上與基數的關係相同。身高的關係爲:

enter image description here

對於剩下的,邏輯上似乎沒什麼問題。除了不同服務中的預付費/後付費:基數應爲0..1(可選)(或強制爲1)。

最後說明:關於預付/後付:目前尚不清楚服務是否只是指明哪些付款方式被接受(獨立於客戶)還是該屬性是客戶特定的。如果是後者,則應該使用客戶與相關服務之間的關聯類(請參閱here

+0

您好,我的方法是有一個客戶類和2個子類,住宅和企業。住宅客戶有一系列的住宅服務,而企業客戶有一系列的服務。服務類有2個小類,住宅服務和公務員服務。其中每個服務類都有一個預付費和/或後付費數組。我做了兩個單獨的類,這是後付費和預付服務ID和付款方式。它的工作? –

+1

當你說數組是你說的實現?或者你的意思和聯繫?也許你可以編輯你的問題,並顯示你在此期間完成的模型,以便我們可以查看它。 – Christophe

+0

感謝您的幫助,我編輯了問題並上傳了我的模特的兩張照片。請給我您的意見 –