我把鸡蛋放在篮子里

grayblaze 2006-03-08 11:10:33
c++中,这里有3个对象,我、鸡蛋、篮子分别属于3个不同的类。
如果你是类的设计者,应该把“放”这个method放在哪个类中?为什么??


纯属讨论。。。。
...全文
360 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenzhichao2008 2006-03-13
  • 打赏
  • 举报
回复
不能放在我手里,只能放在我肚子里,呵呵
nextel 2006-03-12
  • 打赏
  • 举报
回复
有第2者“你”或“他”,有“鸡蛋”或其他的,有“篮子”或其他的相信容易搞
不然我感觉好象都可以讲的通,看你强调什么
晨星 2006-03-12
  • 打赏
  • 举报
回复
哦,或许,“你”是client,“篮子”是container,而“鸡蛋”是element,这样一来,还是放“篮子”比较好。
september_29 2006-03-11
  • 打赏
  • 举报
回复
Class C人

void A东西放B物体(const CObj& objA, CObjCOntainer& 东西);


对象也有“主动”和“被动”对象


在实际的设计中“被动”的对象越多,系统越好弄

在这儿,蛋和篮都是被动的,篮的Load函数其实是个被动的动作,

需要有主动类的对象(比如“C人”对象)来调用之...
就现在看来

class CObj




Class C鸡蛋:public Cobj





Class CObjContainer

virtual Load(const CObj& input)=0


class C篮子:public CObjContainer

public:
Load(const CObj& input){,,,}
private:
stack<const Cobj&> m_con;


Class C人

void A东西放B物体(const CObj& objA, CObjCOntainer& 东西);

void main()

C人 我;
C鸡蛋 蛋;
C篮子 篮子;
我.A东西放B物体(鸡蛋,篮子);


的设计是最合理的,
zengkun100 2006-03-11
  • 打赏
  • 举报
回复
都说了是“放”这个动作了,除了“我”这个人可是施行这个动作外,还有什么可以呢?:)
grayblaze 2006-03-11
  • 打赏
  • 举报
回复
完善一下,可以成为个面试题^_^
呵呵。。。。。这20分给谁啊?
september_29 2006-03-11
  • 打赏
  • 举报
回复
蛮有意思的帖子,我来给你顶
september_29 2006-03-11
  • 打赏
  • 举报
回复
class CObj




Class C鸡蛋:public Cobj





Class CObjContainer

virtual Load(const CObj& input)=0


class C篮子:public CObjContainer

public:
Load(const CObj& input){,,,}
private:
stack<const Cobj&> m_con;


Class C人

void A东西放B物体(const CObj& objA, CObjCOntainer& 东西);

void main()

C人 我;
C鸡蛋 蛋;
C篮子 篮子;
我.A东西放B物体(鸡蛋,篮子);


chenzhichao2008 2006-03-10
  • 打赏
  • 举报
回复
忽略主语:“鸡蛋放在篮子里”
这样只要有拥有“篮子”,你也可以放,我也可以放,通用性较好
qybao 2006-03-10
  • 打赏
  • 举报
回复
我同意Darkay_Lee()
如果不考虑扩展的话,那么"放"放在哪个类基本都差不多,但考虑到将来扩展就不一样了
比如现在要跨扩展为我把石头放在篮子里,那么除了添加石头新类,"放"这个方法也要重载了,而不管"放"是在哪个类里,篮子肯定都要作相应的修改,因为篮子要添加对石头新类型存放支持,所以,当"放"放在篮子类的时候,扩展时所涉及到的类变更最少。
当然,可以能扩展为把鸡蛋放在桌子上,那么理由同上,只需要添加一个新的桌子类,而该类实现了相应的"放"方法,那么其他两个类也不用变更。

纯属个人看法
lid0770 2006-03-10
  • 打赏
  • 举报
回复
“放”是人的一个动作吧!!
晨星 2006-03-09
  • 打赏
  • 举报
回复
偶个人觉得,楼主已经把答案基本说出来了:“我把鸡蛋放在篮子里”。
如果是“篮子把我放在鸡蛋里”,那答案又变了。-_-
chenzhichao2008 2006-03-09
  • 打赏
  • 举报
回复
个人认为“放”在“篮子”里
如果定义在“我”里,调用“放”方法要3个对象
如果定义在“篮子”里,调用“放”方法只需2个对象,这样使接口更简单,要求更低


又因为“篮子”是一个容器,所以“放”在“篮子”里较好
Darkay_Lee 2006-03-09
  • 打赏
  • 举报
回复
篮子是一个容器,鸡蛋是一个数据,“我”是一个控制者。
篮子(容器)应该可以存放符合某个接口类型的数据,有一个“放”的方法,如果鸡蛋也符合这个接口的话,它就可以被放在篮子中。“我”只是一个控制类,控制整个方的过程而以。
如果是在设计库的话,“我”应该不包含在库中,“我”指示一个“使用者”。
lovexpshl 2006-03-09
  • 打赏
  • 举报
回复
我觉得应该是放到“我”

类“我”具有放这个动作(Operations),参数是篮子和鸡蛋。
类“篮子”具有被放这个事件(Event)。
类“鸡蛋”具有被拿这个事件(Event)。
guyanhun 2006-03-09
  • 打赏
  • 举报
回复
放到 我 中 是比较好的设计吧,

呵呵,其实也不无聊的。
grayblaze 2006-03-09
  • 打赏
  • 举报
回复
我的意思是“放”这是个动作,对鸡蛋、篮子、也许不叫这个名字,但都是同一个动作。

也许我表达不清楚。。。。

也可以考虑放在鸡蛋这个类中,因为鸡蛋是唯一和“我”还有“篮子”有接触的类,这样不好吗???
yanfan_ever 2006-03-09
  • 打赏
  • 举报
回复
篮子
fisker0303 2006-03-09
  • 打赏
  • 举报
回复
bool 我::放(const 鸡蛋& 蛋,篮子& 篮)
{
... ...
}

哈哈哈
chon81 2006-03-09
  • 打赏
  • 举报
回复
个人观点:
我觉得应该放在篮子类里.
因为鸡蛋是给篮子的.接收方是篮子.
只是不应该用"放"这个动作,如果用"放"这个词的话,按常理就会被放在人上面了.
加载更多回复(7)

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧