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

看板OOAD作者 (非天夜翔)時間17年前 (2008/01/12 00:42), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/6 (看更多)
※ 引述《sfp (Fru:z)》之銘言: : http://www.ithome.com.tw/plog/index.php?op=ViewArticle&articleId=6679&blogId=296 : 縮網址 http://0rz.tw/f43g6 : 我的問題是第二張圖: : 針灸 : --------> : 長今 <-------- 吉娃娃 : 咬 : 問題: 「咬」是誰的method? 「針灸」又是誰的method? : 是 : 長今.針灸(吉娃娃); : 吉娃娃.咬(長今); : 還是 : 吉娃娃.被針灸(); : 長今.被咬(); interface 可以針灸 { void 針灸(可以被針灸); } interface 可以咬 { void 咬(可以被咬); } interface 可以被咬 { void 被咬(可以咬); } interface 可以被針灸 { void 被針灸(可以針灸); } class 醫女 implements 可以針灸,可以被咬 { void 被咬(可以咬 施咬者) { //被咬的反應 } void 針灸(可以被針灸 對象) { //... 對象.被針灸(this); //... } } class 狗 implements 可以咬,可以被針灸 { void 被針灸(可以針灸 施針者) { //被針灸的反應 } void 咬(可以被咬 對象) { //... 對象.被咬(this); //... } } : 看來好像第一種比較直覺, : 不過, 這不是代表, 被針灸時吉娃娃的狀態改變? : 也就是說長今必須對吉娃娃的資料進行操作? : 可是, 站在data hiding/encapsulation的立場, 對吉娃娃做的一切動作, : 不是都要透過吉娃娃的 public interface(methods, properties) 來達成嗎? : 也就是說, 也許要讓吉娃娃提供一個針灸的method, 讓它的client可以操作? : (也就是第二種 吉娃娃.被針灸(長今);) : 有點搞糊塗了, 請前輩指教. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.28.47
文章代碼(AID): #17XvoDiM (OOAD)
討論串 (同標題文章)
文章代碼(AID): #17XvoDiM (OOAD)