JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Software Engineering  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 小問題請問大家[ aggregation&composition ] [精華]
Biologic

生物學下的產物



發文: 524
積分: 4
於 2003-07-15 09:40 user profilesend a private message to usersend email to Biologicreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
對不起, 我有個小問題請問大家..

在我設計上 Class<>---Class3 為原本設計, 主要是表示 Class 有提供一系列的 Class3 的功能. 雖然她們關係是組合, 但是並非絕對共生存. 但在接後的設計中 Class2<*>----Class3 則強化了她們之間的關係. 表示他的服務 objects 也會跟隨 Class2 的消失一同消失...

我的問題是這種強化的關係可以嗎?? 且我有權力作這種關係的強化嗎? 還有我應該嗎?
如果可以我這樣的設計對嗎?

謝謝


Biologic edited on 2003-07-15 09:43
reply to postreply to post
作者 Re:小問題請問大家[ aggregation&composition ] [Re:Biologic]
Roberto

黑就黑好唄

版主

發文: 193
積分: 4
於 2003-07-15 11:31 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Biologic 兄:

一般來說 Interface 就是提供單純繼承或實作的介面
除了一些空殼 method 不大會掛一些額外 attribute 在上面
因為 association (包含aggregation&composition) 和 dependency
是針對"類別"(Class not mean Interface)間的關聯作描述

您畫的圖雖然沒有說不可以這樣做 程式實作時也不會有什麼大錯誤
舉個例來說 doSomething() 寫成 dosomething() 也是行
但可讀性降低

我的構想提供參考如下:


Roberto edited on 2003-07-15 11:52
reply to postreply to post
作者 Re:小問題請問大家[ aggregation&composition ] [Re:Roberto]
Biologic

生物學下的產物



發文: 524
積分: 4
於 2003-07-15 12:31 user profilesend a private message to usersend email to Biologicreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Roberto wrote:
Biologic 兄:

一般來說 Interface 就是提供單純繼承或實作的介面
除了一些空殼 method 不大會掛一些額外 attribute 在上面
因為 association (包含aggregation&composition) 和 dependency
是針對"類別"(Class not mean Interface)間的關聯作描述

您畫的圖雖然沒有說不可以這樣做 程式實作時也不會有什麼大錯誤
舉個例來說 doSomething() 寫成 dosomething() 也是行
但可讀性降低

我的構想提供參考如下:


Roberto:

不好意思

我的 Class: interface 也不包含 Attributes, 那 aggregation 只是表示她們的關係. 並非在程式碼中真的去定義 attributes, 且也真的辦不到...

他只是告知別人, 不論是程式碼用戶或開發人員她們的關係. sub-class 開發者也應該注意到這關係鍵.

但是可能後期開發, 發覺可能因為系統現實問題, 這必須把關係改成 composition. 也就是我的 diagram 裡面所表示的. 當然問題就來了...

在你的設計中, 我們無法經由 Class 來取得 Class3 的 objects(關係圖中). 必須先轉換成 Class1 或 Class2. 但是資源整合師不知道到底傳來的是哪個 Class... 那這樣會有困擾...

或許你會加 getClass3(xx): Class3 進去, 可是這已經表明了 Class3 是 Class 的一部分了(或是有關係的)... 那樣畫 關係與實際內容會有衝突...


Biologic edited on 2003-07-15 12:58
reply to postreply to post
作者 Re:小問題請問大家[ aggregation&composition ] [Re:Biologic]
Roberto

黑就黑好唄

版主

發文: 193
積分: 4
於 2003-07-15 13:12 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Biologic wrote:
不好意思

我的 Class: interface 也不包含 Attributes, 那 aggregation 只是表示她們的關係. 並非在程式碼中真的去定義 attributes, 且也真的辦不到...

他只是告知別人, 不論是程式碼用戶或開發人員她們的關係. sub-class 開發者也應該注意到這關係鍵.


hmmm... r u sure about that?
the UML spec says that attribute is semantically equivalent to an association
基本上不知您有否試過 自訂一個 attribute 和拉一條 association 其實是一樣的
差別在於class diagram的可讀性
aggregation(attribute by reference:空心菱形從屬關係謂"生死有命")
composition(attribute by value:實心菱形從屬關係謂"同生共死")

但是可能後期開發, 發覺可能因為系統現實問題, 這必須把關係改成 composition. 也就是我的 diagram 裡面所表示的. 當然問題就來了...

在你的設計中, 我們無法經由 Class 來取得 Class3 的 objects(關係圖中). 必須先轉換成 Class1 或 Class2. 但是資源整合師不知道到底傳來的是哪個 Class... 那這樣會有困擾...

或許你會加 getClass3(xx): Class3 進去, 可是這已經表明了 Class3 是 Class 的一部分了(或是有關係的)... 那樣畫 關係與實際內容會有衝突...


如果是這樣 你應該另外使用 Factory 去 instantiate Class1 and Class2


Roberto edited on 2003-07-15 13:28
reply to postreply to post
作者 Re:小問題請問大家[ aggregation&composition ] [Re:Roberto]
Biologic

生物學下的產物



發文: 524
積分: 4
於 2003-07-15 13:31 user profilesend a private message to usersend email to Biologicreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Roberto wrote:
hmmm... r u sure about that?
the UML spec says that attribute is semantically equivalent to a association
基本上不知您有否試過 自訂一個 attribute 和拉一條 association 其實是一樣的
差別在於class diagram的可讀性
aggregation(attribute by reference:空心菱形從屬關係謂"生死有命")
composition(attribute by value:實心菱形從屬關係謂"同生共死")

如果是這樣 你應該另外使用 Factory 去 instantiate Class1 and Class2


semantic 指意義上
association 指關聯

你的 Factory Pattern 應該不對:
[Factory] - - -(create)- - -> [<<interface>>Products]


reply to postreply to post
作者 Re:小問題請問大家[ aggregation&composition ] [Re:Biologic]
Roberto

黑就黑好唄

版主

發文: 193
積分: 4
於 2003-07-15 13:45 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Biologic wrote:
semantic 指意義上
association 指關聯

你的 Factory Pattern 應該不對:
[Factory] - - -(create)- - -> [<<interface>>Products]


Biologic兄...

如果你只是想表達關聯性用 dependency 就好
attribute & association是跟隨著owner而實質存在的屬性
前面說只是關聯性 那你後面還擔心怎麼從 Class取得Class3?
這似乎說起來有些矛盾...

Factory must create "concrete class" not interface.


Roberto edited on 2003-07-15 13:49
reply to postreply to post
作者 Re:小問題請問大家[ aggregation&composition ] [Re:Roberto]
Biologic

生物學下的產物



發文: 524
積分: 4
於 2003-07-15 14:12 user profilesend a private message to usersend email to Biologicreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Roberto wrote:
Biologic兄...

如果你只是想表達關聯性用 dependency 就好
attribute & association是跟隨著owner而實質存在的屬性
前面說只是關聯性 那你後面還擔心怎麼從 Class取得Class3?
這似乎說起來有些矛盾...

Factory must create "concrete class" not interface.


你意思是說 interface 只是介面不能定義該 interface 具有 association 嗎??
那請問 Statement 與 ResultSet 的關係應該如何製圖呢??

關於 Factory: Factory 是建立真實的物體, 但是他回傳的不一定要是實體物件的 class.
F->P 是代表他會建立繼承 P 的物件. 比方 DriverManager- -(create)- - >Connection

這個有錯嗎?? (我覺得跟你講的意思一樣, 但是製圖上我們無法苟同...)


reply to postreply to post
作者 Re:小問題請問大家[ aggregation&composition ] [Re:Biologic]
Roberto

黑就黑好唄

版主

發文: 193
積分: 4
於 2003-07-15 14:27 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
你意思是說 interface 只是介面不能定義該 interface 具有 association 嗎??
那請問 Statement 與 ResultSet 的關係應該如何製圖呢??


嗯...這一段已說明在我第一篇回覆你的文中
就是用 dependency 啊 還有啥好懷疑的

關於 Factory: Factory 是建立真實的物體, 但是他回傳的不一定要是實體物件的 class.
F->P 是代表他會建立繼承 P 的物件. 比方 DriverManager- -(create)- - >Connection

這個有錯嗎?? (我覺得跟你講的意思一樣, 但是製圖上我們無法苟同...)


這個應該不是茍不茍同的問題了
在diagram表示上 Factory class 的 instantiate 就是要指向 concrete class 而非 interface

有一點覺得好奇的是 UML 早期就是用文字敘述
但爲了更易於理解 才進化到圖形表示
怎麼現在又在用文字表示物件關聯?
看了有點痛苦ㄟDead


reply to postreply to post
作者 Re:小問題請問大家[ aggregation&composition ] [Re:Roberto]
Biologic

生物學下的產物



發文: 524
積分: 4
於 2003-07-15 14:58 user profilesend a private message to usersend email to Biologicreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Roberto wrote:
嗯...這一段已說明在我第一篇回覆你的文中
就是用 dependency 啊 還有啥好懷疑的

這個應該不是茍不茍同的問題了
在diagram表示上 Factory class 的 instantiate 就是要指向 concrete class 而非 interface

有一點覺得好奇的是 UML 早期就是用文字敘述
但爲了更易於理解 才進化到圖形表示
怎麼現在又在用文字表示物件關聯?
看了有點痛苦ㄟDead


1. 因為關係不明確, 那不是我要的.
2. DriverManager -->Connection, Statement-->ResultSet 的問題, 請問怎麼作?
3. 我猜要有正確的圖形那應該要加的 abstract class 對吧? 那如果 Class 是 abstract class 呢? 那是否可行呢??
4. 很抱歉, 你給我的答案沒有讓我可以理解的解釋(可能智商差了點... 難怪不能進 Jini 公司...), 我個人是真的無法接受. (我真的無法接受 "就是用 xxxx" 的解釋...)

5. 文字是輔助圖形, 畢竟並不是現有的圖形可以表示所有狀況.
6. 在某些 interface(e.g. List) 她們也定義一些 behaviour, 比方 remove, add, get. 任何 implement List 的 class 都需要依照 List 所規定的設計來實際加入內碼... 雖然只是單純的介面, 但很多情況都已經可以說是某些 class 的 (abstract) super-class...

如果可以請大家幫我解答...
(在我個人看來 interface=empty abstract class, 可能以前寫 C++ 太久了. 無法了解 interface 這種概念...)


reply to postreply to post
作者 Re:小問題請問大家[ aggregation&composition ] [Re:Biologic]
Roberto

黑就黑好唄

版主

發文: 193
積分: 4
於 2003-07-15 15:39 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
1. 因為關係不明確, 那不是我要的.
2. DriverManager -->Connection, Statement-->ResultSet 的問題, 請問怎麼作?
3. 我猜要有正確的圖形那應該要加的 abstract class 對吧? 那如果 Class 是 abstract class 呢? 那是否可行呢??
4. 很抱歉, 你給我的答案沒有讓我可以理解的解釋(可能智商差了點... 難怪不能進 Jini 公司...), 我個人是真的無法接受. (我真的無法接受 "就是用 xxxx" 的解釋...)
5. 文字是輔助圖形, 畢竟並不是現有的圖形可以表示所有狀況.


哎喲喂呀......
是要多明確 要用UML來寫程式喔
你就是有用到DriverManager,Connection,Statement,ResultSet這些東西嘛
如果每個繼承的類別都要用到 就寫在Interface當attribute也是可以(class variable)
如果不是 只是某些method用到(local variable) 就是dependency 因為只是說明要用到 但怎麼用是你家的事
基本上 attribute 有 by value, by reference 還有 undefined(default by value)
定了以後你實作上要同生共死或管他去死都隨你高興
照你原本那樣畫我就說 和 doSomething() 和 dosomething()一樣沒有什麼不可以
想的太複雜反而倒行逆施 會走火入魔

圖形表示確實有無法表達的狀況 所以才需要文字輔助沒錯
但OCL是用來補足一些條件限制的敘述 而不是有圖形可以表示卻還用OCL表示
至於人家公司幹嘛不用你 小弟是不予置評
不過可想而見 Biologic 兄是相當有主見的 也用不著老是拿這自我調侃了
好了 我IQ更低 沒屁可放了 就到這邊說聲保重~~~Sleepy


Roberto edited on 2003-07-15 15:43
reply to postreply to post
作者 Re:小問題請問大家[ aggregation&composition ] [Re:Roberto]
Biologic

生物學下的產物



發文: 524
積分: 4
於 2003-07-15 16:09 user profilesend a private message to usersend email to Biologicreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
首先 不好意思, 我絕對沒有傷害你的意思.


哎喲喂呀......
是要多明確 要用UML來寫程式喔
你就是有用到DriverManager,Connection,Statement,ResultSet這些東西嘛
如果每個繼承的類別都要用到 就寫在Interface當attribute也是可以(class variable)
如果不是 只是某些method用到(local variable) 就是dependency 因為只是說明要用到 但怎麼用是你家的事
基本上 attribute 有 by value, by reference 還有 undefined(default by value)
定了以後你實作上要同生共死或管他去死都隨你高興
照你原本那樣畫我就說 和 doSomething() 和 dosomething()一樣沒有什麼不可以
想的太複雜反而倒行逆施 會走火入魔

我用 UML 是希望可以更精確的把設計表示出來. 可以讓別人共容易了解, 並沒有打算用 UML 寫程式... >_<"
另外可能是我表示不好, Class<>---Class3 並非指 local variable (in methods). 中文不好, 抱歉...>_<"


圖形表示確實有無法表達的狀況 所以才需要文字輔助沒錯
但OCL是用來補足一些條件限制的敘述 而不是有圖形可以表示卻還用OCL表示
至於人家公司幹嘛不用你 小弟是不予置評
不過可想而見 Biologic 兄是相當有主見的 也用不著老是拿這自我調侃了
好了 我IQ更低 沒屁可放了 就到這邊說聲保重~~~Sleepy

我絕對沒有扁低任何人的意思. 抱歉
我用 ocl 是因為我不知道如何表示那個情況... 如果可以那我也不會用 ocl 了...
事實上你也糾正我很多, 讓我很有收穫. 謝謝


reply to postreply to post
作者 Re:小問題請問大家[ aggregation&composition ] [Re:Biologic]
Roberto

黑就黑好唄

版主

發文: 193
積分: 4
於 2003-07-15 16:24 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Biologic wrote:
首先 不好意思, 我絕對沒有傷害你的意思.

我用 UML 是希望可以更精確的把設計表示出來. 可以讓別人共容易了解, 並沒有打算用 UML 寫程式... >_<"
另外可能是我表示不好, Class<>---Class3 並非指 local variable (in methods). 中文不好, 抱歉...>_<"

我絕對沒有扁低任何人的意思. 抱歉
我用 ocl 是因為我不知道如何表示那個情況... 如果可以那我也不會用 ocl 了...
事實上你也糾正我很多, 讓我很有收穫. 謝謝


大哥 你又誤解我了Cry 我說到 local variable 只是舉例啊Cry 熱呼呼證據如下:


如果每個繼承的類別都要用到 就寫在Interface當attribute也是可以(class variable)
如果不是 只是某些method用到(local variable) 就是dependency 因為只是說明要用到 但怎麼用是你家的事
基本上 attribute 有 by value, by reference 還有 undefined(default by value)
定了以後你實作上要同生共死或管他去死都隨你高興


另外 我也很謝謝 Biologic 兄撥冗討論 按仔細Blush


reply to postreply to post
作者 Re:小問題請問大家[ aggregation&composition ] [Re:Biologic]
Biologic

生物學下的產物



發文: 524
積分: 4
於 2003-07-18 10:57 user profilesend a private message to usersend email to Biologicreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
補個資料:

Roberto 講的並沒有錯, 網路上的 Design Pattern (畫法)跟他講的一樣. 可是我手上的書 不知道為什麼則跟我講的差不多...

不知道是不是因為 Pattern 所以畫法就跟別人不太一樣?? 怪怪... 還是我的書有問題... >_<"


reply to postreply to post
作者 Re:小問題請問大家[ aggregation&composition ] [Re:Biologic]
studman





發文: 47
積分: 0
於 2004-08-06 03:12 user profilesend a private message to usersend email to studmanreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
小弟目前正在研究OCL2.0
希望能用在Real-Time 或是Safety Critical System的Constraints上
不知 Roberto版主對於OCL在時間跟狀態上描述完整性有否了解或是資料
希望能利用OCL做到Model Checking
在開規格時,就能驗證出是否正確,再修改需求
謝謝您


reply to postreply to post
» JWorld@TW »  Software Engineering

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8