2011-11-29 57 views
0

我需要一些幫助來確認我正處於正確的軌道上。 我做了流行的在線購物場景的用例圖和類圖。這個類圖是否正確?

請仔細閱讀並進行建設性批評,因爲我仍然在學習UML,所以讓我對你有所看法。

造型背後的故事如下:

公司的名稱是X-公司,他們都進入銷售的 塗料。 X公司有一個網站銷售這些油漆在線銷售給兩個 類型的客戶 - 零售商和批發商。 X公司目前有幾種顏色,尺寸和成本不同的顏料,這些顏料在這些特性上明顯不同。零售商可登錄 網站並以 的時間購買單位數字(如1或2種顏料)的塗料,批發商購買大量塗料的價格爲 10%,10種塗料及以上爲20%,20種以上塗料爲20% ,30%以上爲30%以上的油漆及以上。

該網站已儘可能容易。客戶到達 網站,選擇油漆類型並顯示油漆特徵 。如果顧客購買,他們選擇他們需要的數量。如果客戶對價格合適,他們然後 確認他們的訂單。在確認後,網站會檢查油漆的庫存 ,看是否有足夠的油漆可用。如果 不可用,則會通知客戶並要求選擇另一種 類型。如果它們可用,則客戶提供支付卡 的詳細信息,例如地址,卡號,卡銷。通過外部整合完成付款 。付款時,客戶訂單 發送給客戶,除非客戶通過網站管理員請求取消或 訂單。

網站組織者或管理員負責將新的 塗料添加到網站,並在有新的塗料庫存時取出舊塗料。

我畫的類圖如下所示:

Class Diagram

+0

這看起來太像家庭作業了。你有特定的UML問題嗎? – vainolo

+0

Im假設類'用戶'是抽象的,這將是很好的標籤。 –

回答

1
  • 將類奇異的名字。訂單,而不是訂單。折扣,而不是折扣。如果你有一個類是一個集合\訂單列表,然而,「訂單」將罰款。

  • 用戶一次只能購買一種以上的油漆! Order類應該有一個Paint的集合,而不是一個Paint實例。

  • Paint,PaintType設計看起來不合邏輯。我不明白爲什麼應該有不止一節課。組合成一個Paint類。

  • 我認爲應該有一個PaintStock類。 Administrator類中的方法似乎是對PaintStock完成的事情,所以將它們移動過來。 Administrator類需要一個PaintStock引用,以便它可以調用PaintStock.Add等。

  • 鑑於其中的內容,支付類別應稱爲CreditCardPayment。我懷疑信用卡不是付款的唯一方式。我會創建一個支付基類,這樣我們可以輕鬆地擴展以後付款的方式。

  • 添加/刪除繪圖功能對管理員類不合適。將這些方法放入PaintStock類中。

  • 重命名BulkBuyer到批發商

  • 考慮一個用戶類。擺脫零售商和批發商。我看不出有什麼不同的價值。在User類中創建一個BuyerType字段以區分。如果你的商業規則規定了基於零售商和批發商的購買限制,那麼這個簡單的規則差異就很容易生活在一個類別中。

  • 作爲一般規則 - 這是一個很好的規則 - 不要存儲計算結果。所以Order.TotalCost應該是一個方法而不是字段。

  • 訂單需要取消方法。不是管理員類。 Administrator類需要一個Order引用,因此它可以調用Order.Cancel。