{UML 2.0} 關聯類別(association class) - Kenmingの鮮思維

文章推薦指數: 80 %
投票人數:10人

An association class connection is a UML construct that allows an association connector to have attributes and operations (features). Skiptocontent 一般UML書籍對“關聯類別(assocationclass)”的定義及說明如下: AnassociationclassconnectionisaUMLconstructthatallowsanassociationconnectortohaveattributesandoperations(features). 「UMLDistilled」一書提及:關聯類別(assocationclass)允許你在關聯上面增加屬性、操作和其它(類別)特性。

書中所舉參考範例如下圖: 圖一 關聯類別—摘錄自"UMLDistilled3rdedition" 文中說明為:從圖一,我們可以看見Person(個人)可能會參加很多會議。

我們必須保有這個人對這些會議的出席情況:藉由新增一個attentiveness(出席意願)屬性到關聯上,我們可以達到這個目的。

說真的,我對以上對於關聯類別(assocationclass)的定義及說明並不盡滿意! 也有些說法是從E-R(Entity-Relationship)的角度來說明associationclass是為了保存及紀錄額外的資訊(additionalinformation)而衍生。

因為在多對多的情況下,資訊儲存在任一個class下均不甚理想。

例如下圖二。

圖二 學生與科目的關聯 若需要記錄關於學生選擇了哪些課程的訊息,該記錄儲存在"學生"或是"科目"類別內均不太適合。

所以為了記錄關於選課的資訊,於是衍生出關聯類別"Student-Course"或稱之為"選課"。

如下圖三。

圖三 學生與科目的關聯類別—選課 我仍覺得,因為要記錄額外的資訊而衍生出"選課"這樣的關聯類別,還是很不自然,"人工化"的意味很重,而非從Domain的概念觀點來解釋。

我覺得,稱之為"關聯類別(associationclass)"實在挺不自然的,怎麼解釋說明都感覺不是那麼的合理化。

但,若從商業交易(Transaction)的角度來看時,那麼,反而會先看到"事件(Event)"的發生。

例如上圖一的"出席"與圖三的"選課"。

然後,再找出相關聯於該事件的"人"與"物"。

例如圖三,"選課"這個事件的發起者為"學生",而"學生"所選課的"物"即為"課程"。

所以,若從"交易"的角度來切入,關聯類別消失了,取而代之的是"事件(Event)",而且,從Domain概念的層次來解釋也比較合理。

最後,再舉一個例子。

"教授"與"班級"這兩個類別,是屬於多對多的關係。

一個教授會在多個班級授課;相對地,一個班級會有好幾個教授來授課。

顯然,一個很明顯的交易事件:授課,自然而然就會出現了,而且,在學校教務系統上,這樣的詞彙是合情合理的。

圖四 授課成為主要的類別 相關文章: {UML2.0}Class與ObjectDiagram簡單範例與說明 類別之間的關係(Relationship)—結合(Association)關係(1) 物件(Object)的媽媽是類別(Class)? 淺論「類別(Class)是什麼?」 SA需不需要懂“領域知識(DomainKnowledge)”? 建構領域概念模型的來源—Y型結構理論 利用TransactionPattern快速捕捉問題領域內的概念物件 【4thUML2.0/EA軟體設計系列講座(5/2113:00~17:00)*免費*】 UMLOCUP題型Reveiw與解析<1> 軟體設計與交易<1> 歷史上的今天:【軟體設計單元課程(兩天)】UML2.0實務操作入門(2006/03/11~12)-2006MT系統安裝建置~theFirst-2004Kenming's部落格開張了!-2004 文章導覽  新年台中一日遊 成功的兩個訣竅  共有4則迴響 Commentnavigation himilkyway: 我們可以把問題轉移到http://www.hsdc.com.tw來討論。

關於技術面的文章,我在那邊也同時放了一篇。

說真的,就是因為我之前也不知道關聯類別是啥,我才去思考這問題。

建立軟體概念模型時,找出關聯類別並不是一件自然的事情。

所以,我才會用另一個角度先找出“event”。

但,交易物件與關聯類別是兩回事,可不是等號。

回覆 小子駑鈍,照您的意思是說,我們可以從event的角度,去找到關聯類別(交易物件)囉!? 我還是不太了解關聯類別到底是啥!?🙁 回覆 Himilkyway: 不是這樣看待的。

從Domain的觀點,我已經不將之稱為「關聯類別」,而是從“Event”的角度來看待,來捕捉其交易物件。

關聯類別仍是關聯類別,與事件是沒有直接的關係。

回覆 所以關聯類別可以視為事件+資料保存的綜合體囉!? 回覆 Commentnavigation 發佈留言取消回覆發佈留言必須填寫的電子郵件地址不會公開。

必填欄位標示為*留言*顯示名稱* 電子郵件地址* 個人網站網址 Δ 文章分類 個人知識管理 筆記工具 筆記方法論 未分類 學思歷程 文(書)摘 學思觀點與體悟 心智圖創作分享 無厘頭點子創意發想 好書分享與閱讀心得 軟體大家 微服務架構設計與實作 軟體開發方法論 軟體設計與分析 [電子書]軟體需求分析與塑模 軟體實作與編程技術 軟體開發工具 軟體五四三與經驗談 LinuxC++學習實作筆記 Maker自造 RaspberryPi Arduino 3D印表機DIY CNC雕刻機DIY Make雜項 交易投機 投機者的修鍊 交易系統/Multicharts 交易筆記 生活日誌 生活雜記 單車樂活 單車環島 寵物日誌 購物敗家心得分享 寶貝女兒們的養成教育 其它 電腦硬派分享 應用軟體使用分享 系統(含架站)安裝與設定 [備檔]軟體課程規劃與公佈 文章彙整 文章彙整 選取月份 2022年9月 (1) 2022年8月 (4) 2022年7月 (2) 2022年6月 (2) 2022年5月 (4) 2022年4月 (2) 2022年3月 (1) 2022年2月 (4) 2021年11月 (1) 2021年10月 (5) 2021年9月 (5) 2021年8月 (5) 2021年7月 (3) 2021年5月 (2) 2021年4月 (2) 2021年3月 (4) 2020年9月 (1) 2020年4月 (2) 2020年3月 (1) 2020年1月 (1) 2019年12月 (2) 2019年5月 (1) 2019年4月 (4) 2019年2月 (4) 2019年1月 (1) 2018年12月 (3) 2018年11月 (6) 2018年10月 (4) 2018年9月 (4) 2018年7月 (3) 2018年6月 (7) 2018年5月 (4) 2018年4月 (4) 2017年9月 (2) 2017年8月 (6) 2017年7月 (4) 2017年6月 (6) 2017年5月 (5) 2017年4月 (5) 2017年3月 (5) 2017年2月 (7) 2017年1月 (9) 2016年12月 (4) 2016年11月 (2) 2016年10月 (3) 2016年9月 (8) 2016年8月 (5) 2016年7月 (5) 2016年6月 (5) 2016年5月 (4) 2016年4月 (9) 2016年3月 (8) 2016年2月 (5) 2016年1月 (1) 2015年12月 (9) 2015年11月 (10) 2015年10月 (17) 2015年9月 (7) 2015年7月 (1) 2015年6月 (1) 2015年5月 (5) 2015年4月 (4) 2015年3月 (4) 2015年1月 (3) 2014年12月 (2) 2014年11月 (1) 2014年10月 (2) 2014年9月 (8) 2014年8月 (15) 2014年7月 (4) 2014年6月 (6) 2014年5月 (13) 2014年4月 (17) 2014年3月 (11) 2014年2月 (1) 2014年1月 (10) 2013年12月 (7) 2013年11月 (11) 2013年10月 (2) 2013年9月 (2) 2013年8月 (6) 2013年7月 (8) 2013年6月 (10) 2013年5月 (12) 2013年4月 (10) 2013年3月 (7) 2013年2月 (4) 2013年1月 (7) 2012年12月 (12) 2012年11月 (16) 2012年10月 (10) 2012年9月 (5) 2012年8月 (8) 2012年7月 (2) 2012年4月 (6) 2012年2月 (7) 2012年1月 (2) 2011年12月 (7) 2011年11月 (4) 2011年10月 (4) 2011年9月 (8) 2011年8月 (3) 2011年7月 (9) 2011年6月 (5) 2011年5月 (9) 2011年4月 (5) 2011年3月 (24) 2011年2月 (6) 2011年1月 (1) 2010年12月 (5) 2010年11月 (7) 2010年10月 (3) 2010年9月 (15) 2010年8月 (18) 2010年7月 (5) 2010年5月 (10) 2010年3月 (14) 2010年2月 (11) 2010年1月 (8) 2009年12月 (10) 2009年11月 (4) 2009年10月 (9) 2009年9月 (14) 2009年8月 (10) 2009年7月 (8) 2009年6月 (11) 2009年5月 (15) 2009年4月 (12) 2009年3月 (9) 2009年2月 (5) 2009年1月 (12) 2008年12月 (13) 2008年11月 (2) 2008年10月 (9) 2008年9月 (18) 2008年8月 (6) 2008年7月 (11) 2008年6月 (7) 2008年5月 (14) 2008年4月 (9) 2008年3月 (11) 2008年2月 (9) 2008年1月 (4) 2007年12月 (14) 2007年11月 (2) 2007年10月 (13) 2007年9月 (4) 2007年8月 (12) 2007年7月 (9) 2007年6月 (9) 2007年5月 (8) 2007年4月 (10) 2007年3月 (7) 2007年2月 (13) 2007年1月 (11) 2006年12月 (12) 2006年11月 (14) 2006年10月 (10) 2006年9月 (9) 2006年8月 (10) 2006年7月 (14) 2006年6月 (11) 2006年5月 (12) 2006年4月 (19) 2006年3月 (8) 2006年2月 (14) 2006年1月 (16) 2005年12月 (18) 2005年11月 (14) 2005年10月 (9) 2005年9月 (12) 2005年8月 (18) 2005年7月 (14) 2005年6月 (22) 2005年5月 (30) 2005年4月 (26) 2005年3月 (23) 2005年2月 (19) 2005年1月 (25) 2004年12月 (25) 2004年11月 (21) 2004年10月 (10) 2004年9月 (10) 2004年8月 (8) 2004年7月 (15) 2004年6月 (11) 2004年5月 (20) 2004年4月 (10) 2004年3月 (16) 2004年2月 (20) 最新文章 更換羅技GoWirelessPro大容量電池 小狗堡貝與玄鳳粉圓的客製化抱枕 擴展桌機前置面板–USB3+USB-C+HDAudio [簡單開箱與安裝]升級微星3080-12G顯卡與850W全模組金牌電源 2022開春帶著狗堡自駕環島遊–Day3台東-太麻里-高雄旗山 入手KingroonKP3S超便宜單懸臂3D印表機 Zotero6的同步與雲端硬碟設置 數位文件整理與摘記的好工具–Zotero6 C#.NETCoreCRUD基本資料維護實作範本–三層式架構以及可以切換E.FCore6與ADO.NET實作 關於台灣用戶購買京東書城電子(或實體)書與線上支付心得分享 最新迴響隨機文章 WangKenming @ 更換羅技GPW(狗屁王)滑鼠微動、編碼器、電池與清潔與一般焊接元件方式沒什麼兩樣喔。

WangKenming @ [實作筆記]VisualStudio2012新增MVC5Project哇~我根本已忘記這麼多年前我有整理這設定文。

!^^...Jimmy @ 更換羅技GPW(狗屁王)滑鼠微動、編碼器、電池與清潔版大你好 請問你文中滑鼠側鍵(貼片式微動)怎麼焊的? 求解m(__)m...c @ [實作筆記]VisualStudio2012新增MVC5Project感謝大大的教學! 客戶的環境只有VS2012且不能連網,無法藉NuGet自動更新。

我平時用VS2022,對...WangKenming @ 更換羅技GPW(狗屁王)滑鼠微動、編碼器、電池與清潔淘寶賣家認為是該顆電池有問題,所以寄了一顆650mAH電池給我,可以說很乾脆大方,服務還是不錯的。

...RabuAme @ 更換羅技GPW(狗屁王)滑鼠微動、編碼器、電池與清潔文中有提到懷疑電池容量灌水,想請問之後是否有測試更換後續行呢?...WangKenming @ [設定摘要]Windows10WSL2執行LinuxGUI(XFCE)謝謝您的支持:XD 現在大都把短文直接寫道FB(軟體社群或個人FB),較少有更新Blog。

打算今年...skypaterh @ [設定摘要]Windows10WSL2執行LinuxGUI(XFCE)每隔一段時間會來你這裡逛一下。

常常可以挖到寶–譬如這篇。

謝謝。

^_^...WangKenming @ [設定摘要]Windows10WSL2執行LinuxGUI(XFCE)是的,它可以透過WSLg直接執行。

Windows10則必須更新到21364以後也可以。

...Chunyu @ [設定摘要]Windows10WSL2執行LinuxGUI(XFCE)Windows11直接支援執行LinuxGUIApplication了。

... 2016農曆年前台中長榮桂冠酒店的住宿&早餐吧2016-02-22  18:36[食記]中和麵之彩拉麵館2014-03-26  19:42蓁妮可愛素描系列2004-03-26  22:46Prusai3自動調平—改用BLTouch探針接觸感應式2017-02-27  23:09【HSDc軟體設計鮮思維】1st(2006)講座(2006/05/1313:10~17:00)2006-04-16  22:36Blog串連接力~我最喜歡的五個作家2006-02-07  19:58討人厭的垃圾及病毒郵件2005-07-13  23:18【資訊月敗家採購】買了ViewSonic22吋寬螢幕液晶顯示器2006-12-08  07:52JavaSpring簡單範例操作與學習指引〈2〉2008-07-21  15:42蓁妮去年(2005)的英文班導師發生意外,驟然去逝2006-04-27  13:04



請為這篇文章評分?