Re: [問題] 類別之間的關係

看板OOAD作者 (SEAMAN)時間17年前 (2007/12/19 19:28), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串4/6 (看更多)
※ 引述《sfp (Fru:z)》之銘言: : http://www.ithome.com.tw/plog/index.php?op=ViewArticle&articleId=6679&blogId=296 : 縮網址 http://0rz.tw/f43g6 : 我的問題是第二張圖: : 針灸 : --------> : 長今 <-------- 吉娃娃 : 咬 : 問題: 「咬」是誰的method? 「針灸」又是誰的method? : 是 : 長今.針灸(吉娃娃); : 吉娃娃.咬(長今); : 還是 : 吉娃娃.被針灸(); : 長今.被咬(); : 看來好像第一種比較直覺, : 不過, 這不是代表, 被針灸時吉娃娃的狀態改變? : 也就是說長今必須對吉娃娃的資料進行操作? : 可是, 站在data hiding/encapsulation的立場, 對吉娃娃做的一切動作, : 不是都要透過吉娃娃的 public interface(methods, properties) 來達成嗎? : 也就是說, 也許要讓吉娃娃提供一個針灸的method, 讓它的client可以操作? : (也就是第二種 吉娃娃.被針灸(長今);) : 有點搞糊塗了, 請前輩指教. 說一下我的看法, 以針灸的例子來說 長今的方法是 長今.針灸(病人:吉娃娃) 有個病人提供方法 : 病人.被針灸(穴道) 吉娃娃繼承病人 (繼承或者實作,端看使用的語言不同) 在長今的針灸()裡,會去操作病人的被針灸(), 並且把針灸的穴道傳進去, 至於吉娃娃的這個穴道被針灸後的身理(心理?)反應,則是被隱藏在被針灸()裡面, 因此並不違反 data hiding 同理有個被咬的人提供方法 : 被咬的人.被咬(部位) 長今繼承被咬的人 在吉娃娃咬人的時候,呼叫被咬的人的被咬()... 好繞口 :P 並且把咬的部位傳進去, 長今被咬後會怎麼樣也是被隱藏在被咬()內 所以要是我的話,會寫成 被咬的人.被咬(部位) { 流血(部位); } 病人.被針灸(穴道) { 病好了(); } 長今.針灸(病人) { 病人.被針灸(湧泉穴); } 長今.被咬(部位) { 哭(); } 吉娃娃.被針灸(穴道) { 生氣(); 咬(長今); } 吉娃娃.咬(被咬的人) { 被咬的人.被咬(大腿); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.92.61.162

12/19 23:26, , 1F
暈了我....
12/19 23:26, 1F
文章代碼(AID): #17QG1ELO (OOAD)
討論串 (同標題文章)
文章代碼(AID): #17QG1ELO (OOAD)