社区
C++ 语言
帖子详情
我把鸡蛋放在篮子里
grayblaze
2006-03-08 11:10:33
c++中,这里有3个对象,我、鸡蛋、篮子分别属于3个不同的类。
如果你是类的设计者,应该把“放”这个method放在哪个类中?为什么??
纯属讨论。。。。
...全文
360
27
打赏
收藏
我把鸡蛋放在篮子里
c++中,这里有3个对象,我、鸡蛋、篮子分别属于3个不同的类。 如果你是类的设计者,应该把“放”这个method放在哪个类中?为什么?? 纯属讨论。。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
回溯法解
鸡蛋
放
篮子
问题
4个相同的
鸡蛋
放入4个不同的
篮子
,有几种放法?允许
篮子
为空。 包括.cpp代码和设计文档。不带工程文件,需自建VC++工程(开发环境为VS2005)
银行业银行兴衰专题报告之三:当
鸡蛋
放在
同一个
篮子
里
-20190526-国海证券-17页.pdf
银行业银行兴衰专题报告之三:当
鸡蛋
放在
同一个
篮子
里
-20190526-国海证券-17页.pdf
鸡蛋
篮子
「The Egg Basket」-crx插件
书签被保存为“
鸡蛋
放在
篮子
里
的
鸡蛋
”。 创建
鸡蛋
后,您可以在http://codelikeachicken.com/?#/TheEggBasket的“
鸡蛋
篮”应用程序中查看它。 到达那
里
后,您可以查看和管理所有
鸡蛋
或添加其他
鸡蛋
。 该Chrome扩展...
各种云计算模式,在同一
篮子
里
吗?
对于企业使用者来说,将所有的
鸡蛋
都
放在
同一个
篮子
内,简直是自杀…………
数据中心四种备份方式.docx
俗话说"不要把
鸡蛋
放在
同一个
篮子
里
",暗含的意义是一旦发生危险,
篮子
掉地,整个
篮子
里
的
鸡蛋
都会被打坏,损失很大,正确的做法是将
鸡蛋
放到不同的
篮子
里
,降低风险,这对于数据中心同样如此。数据中心全年不休地...
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章