2010-03-12 68 views
13

我希望您能夠從我的USE案例圖(請參閱下文)中準確地指導您如何創建類及其關係(泛化,關聯,聚合和組合)。使用案例到類圖 - 我如何?

我想創建這個類圖,以便我可以使用它創建一個簡單的在線PHP應用程序,允許用戶註冊一個帳戶,登錄和註銷以及存儲,搜索和從MySQL數據庫檢索數據。

我的類是否正確?或者我應該創建更多的課程?如果是這樣,哪些類缺失?將註冊,登錄,註銷,search_database和add_to_database連接到用戶時應使用哪些關係?

我是新來的設計模式和UML類圖,但從我的理解,關聯關係將一個對象與另一個對象相關聯;聚合關係是允許「一部分」屬於多個「整體」(例如,信用卡及其PIN)的特殊類型的關聯 - PIN類也可以用於借記卡類中;而構圖關係是一種特殊的聚合形式,它允許每個部分一次只能屬於一個整體。

我覺得我已經遺漏了一些課或什麼東西,因爲我似乎無法從我對關係的理解中找到關係。

任何援助將非常感激。提前致謝。

用例圖

alt text

使用案例說明:

註冊 任何用戶都可以通過註冊創建一個帳戶。系統將驗證用戶名和密碼,如果他們丟失或用戶名已被佔用,系統將拒絕他們。

登錄 任何用戶只有在他們已經註冊後才能登錄。他們的用戶名和密碼將以與註冊帳戶時相同的方式進行驗證。

搜索數據庫 任何用戶將比布爾輸入數據類型的字符串的searchkey,系統將打開數據庫,搜索searchkey,並返回true或false取決於searchkey是否被發現,並關閉數據庫。

數據添加到數據庫 所有用戶都可以輸入一些數據,系統會打開數據庫,存儲數據,返回true或false取決於是否被存儲的數據,並關閉數據庫。

註銷 用戶將按下注銷按鈕,系統將註銷用戶

從數據庫 只有管理員刪除可以從數據庫中刪除數據。

刪除普通用戶 只有管理員可以刪除普通用戶

類圖

alt text

回答

11

首先,如果你決定往下走建模路徑,那麼我d推薦Rosenberg和Stephens的一本書,Use Case Driven Object Modeling with UML。這個過程完全按照你所描述的過程進行:如何編寫好的用例,如何從中構建類圖,如何構建順序圖,以及如何將其編碼爲工作軟件。您可以通過Google獲得ICONIX流程並在線查找詳細信息。

一些休閒評論:

  • 任何用例圖的「圖」是用例的至少有用的方面。圖中的每個橢圓代表一段或兩段文字,講述正在發生的事情。這是真正有用的文本。
  • 通常,您的用例中有名詞的類和動詞的方法。你的一些動詞(Add_data_to_database,Logout,...)是類而不是方法。
    • 有時你會得到這樣的東西,如果你使用鼓勵命令模式的框架。即使如此,命令對象也可以/只應該調用真實類中的方法。
    • 我會說你錯過了一些名詞(你在數據庫中存儲了什麼類型的數據?)。如果你有這個,那麼你會發現User和那些數據類之間的關係。
+0

感謝您的回覆戴夫。感謝您的建議,我現在正在閱讀ICONIX流程。我將以文本字符串的形式存儲數據 - 這對初學者來說很簡單。我會聽取你的意見,寫出這些段落並修改我的文章。 – Anthony 2010-03-12 10:27:04

+0

我接受了你的建議並仔細地描述了每個用例。結果,我得到了一些有用的名詞,名詞短語和動詞,這使得創建我的班級圖變得更容易。再次感謝戴夫。 – Anthony 2010-03-13 19:29:39

1

爲什麼不能下載EssWork。 Esswork是開源的,它是基於敏捷實踐的,由Ivar Jacobson Int製作,這個人創建了用例...他們在那裏被稱爲基本用例練習,它描述了你如何將需求放到類...

+0

哇謝謝你,聽起來很有趣,我現在就去看看。 – Anthony 2010-03-12 19:28:02

+1

看來EssWork現在是商業的(2012年10月)。 – Andrei 2012-10-26 11:14:23

2

UC圖似乎沒有問題。

我同意Dave的評論。除此之外,我還想向你展示我的想法,爲這樣的UC圖做出相應的類圖。 (示出就在主點。)

class diagram

0

enter image description here

您需要通過 識別的類,屬性和相關函數來繪製上述場景的對象模型(類圖)。
您應該必須展示不同的 類之間的關係,例如Composition,Aggregation和Inheritance。