作者csihcs (非天夜翔)
看板OOAD
标题Re: [问题] 类别之间的关系
时间Sat Jan 12 00:42:52 2008
※ 引述《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