免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9757 | 回复: 52
打印 上一主题 下一主题

【狗蛋在吗?】我可能过不了 面向对象 这个坎了, [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-03 17:35 |只看该作者 |正序浏览
本帖最后由 三月廿七 于 2012-03-03 18:13 编辑

上次 狗蛋 举的那个 独臂神尼 的例子 简直太贴切了,找不到链接了,
至今都设计不好一个好的 对象系统(包括对象所具有的动画),
心理障碍了 ,!

假设:Player 和 Monster 单独分开
如果 Player  和 Monster 的动作完全一样, 状态转换显然是要放在 基类 Human中

问题在于有各种类型的 Player、各种类型的 Monster
如果还把状态转换放在 Human中,那么对于Player或Monster的特定动作对应的if语句
肯定还是要写在Human中的,Player自身没法重写
在基类的方法判断子类的类型,是不是不和谐了?

假设:Player 和 Monster 合成一个类 Role
Player 和 Monster 还是有一些不相同的属性,又不和谐了,!
不过,我感觉比继承要好一点,
   

论坛徽章:
0
53 [报告]
发表于 2012-03-06 13:21 |只看该作者
回复 10# 塑料袋


    这句话还是同意的。


至少在中国,用C/C++的都是比较低端的工作,真正的科研还是主要依靠matlab+数学+其他专业知识,语言是所有问题里面比较容易解决的

论坛徽章:
0
52 [报告]
发表于 2012-03-06 13:10 |只看该作者
三月廿七 发表于 2012-03-06 07:15
回复 44# xhl

还有一个问题:场中出现的兵器、物品,和商店中出现的兵器、物品? 如何给出一个合理的名称?                     
                     还有就是 兵器不也属于物品吗?,万物都是属于物品啊,
                     这种名字相同,实际不属于一个对象组,如何是好? 继承还是不继承?
                     概念上统一不起来?
如果物品和所谓的角色分开, 一个叫 Object, 一个叫Item,太别扭了, 唉,!分不了类了...
unknownName了,      ...



LZ你写程序是为了当C++或者面向对象的教科书, 还是为了做出靠谱的产品创造价值?

我曾经读过垃圾的不能在垃圾的非专业程序人员写的一个象棋的AI算法, 因为我自己写不出来, 硬这头皮去看。

虽然他的代码没有任何结构跟设计, 而且满地都是一个字母的全局变量, 但他实现了我想要的功能。 最后我也没完全看懂, 太复杂了。 但我学会咋用了, 把产品做出来了。

做产品首先要做到满足需求, 其次是性能良好, 在其次是代码完美, 可维护性良好。 可扩展性良好。

如果需求都无法满足, 后面的都没意义。


对于没做过的领域, 如果没有高手带你, 你自己要选择先动手做, 做到一定程度架构有问题, 重构是必须的, 这个是学费。 谁都避免不了。
不要成天纠结, 止步不前。 理想很完美, 现实很残酷, 良好的架构跟解决方案或者设计, 是靠大量实践经验支撑的。 不是猜想出来的。

论坛徽章:
0
51 [报告]
发表于 2012-03-06 12:38 |只看该作者
哦,最近有点忙……

简单说,先用结构化程序设计思路搞设计吧,类能扔多远扔多远。

结构化的流程搞出来后,先做流程优化,能统一接口/统一访问模式就统一,不行拉倒。期间强迫自己不要想起类……你就当优化一个C程序的结构好了。

如果这个优化方案比较靠谱,你会发现它明显就是个面向对象的设计,只是里面那些“对象”的划分和你现在想的完全不同。

随便提一句,任何从“角色”开始的抽象,都是绝对外行——同意49楼意见。

论坛徽章:
0
50 [报告]
发表于 2012-03-06 10:15 |只看该作者
回复 48# 三月廿七


当两个类的主观含义有交集时,这个交集跟抽象没任何关系。

当两个类的主观含义的并集是一个互不冲突且自圆其说的整体时,抽象才会产生。

lz不要见到啥都想抽象,提取接口。任何类都可以抽象成一个起名叫 data 的抽象类,里面啥具体东西都没有,这样的抽象有没有意义取决于 1. 你能否赋予它具体的含义?2. 你有没有这样的需求?

比如 java 的 class object 对 java语言本身可能有意义。但是你会拼命的用 object 来传递和存储吗?显然你在绝大多数时候不会,它只对特定的、小范围的需求有意义,在其他时候有没有这个object 并不重要。

奥卡姆剃刀定律: 如无必要,勿增实体


对于程序设计,这个“实体”指任何一个语言成分和设计细节

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
49 [报告]
发表于 2012-03-06 09:07 |只看该作者
回复 48# 三月廿七


    您能站在开发者而不是玩家的角度上去考虑问题么……skill管数值变化,effect管屏幕绘图啊……管他什么技能……

论坛徽章:
0
48 [报告]
发表于 2012-03-06 07:22 |只看该作者
本帖最后由 三月廿七 于 2012-03-06 07:27 编辑

回复 44# xhl
还有一个问题:场中出现的兵器、物品,和商店中出现的兵器、物品? 如何给出一个合理的名称?                     
                     还有就是 兵器不也属于物品吗?,万物都是属于物品啊,
                     这种名字相同,实际不属于一个对象组,如何是好? 继承还是不继承?
                     概念上统一不起来?
如果物品和所谓的角色分开, 一个叫 Object, 一个叫Item,太别扭了, 唉,!
世间万物怎么就统一不起来?...
unknownName了,   

论坛徽章:
0
47 [报告]
发表于 2012-03-06 07:15 |只看该作者
本帖最后由 三月廿七 于 2012-03-06 07:22 编辑

回复 44# xhl

还有一个问题:场中出现的兵器、物品,和商店中出现的兵器、物品? 如何给出一个合理的名称?                     
                     还有就是 兵器不也属于物品吗?,万物都是属于物品啊,
                     这种名字相同,实际不属于一个对象组,如何是好? 继承还是不继承?
                     概念上统一不起来?
如果物品和所谓的角色分开, 一个叫 Object, 一个叫Item,太别扭了, 唉,!分不了类了...
unknownName了,     

论坛徽章:
0
46 [报告]
发表于 2012-03-05 22:29 |只看该作者
本帖最后由 三月廿七 于 2012-03-05 23:07 编辑

回复 44# xhl

其实是我纠结的不是 技能, 而是技能发出的物体我给不了一个合适的名词.
比如 三昧真火、金钢圈、三昧神风, 我就想不出来是 应该叫 skill合适呢,还是 effect合适呢,还是 wepon合适....
最后我只能给个 unknownNameObject了,现在凡是我想不出来的名词都unknownName了,

技能是不是一个实体? 还是技能放出的物体才是实体,而技能只是一个虚体

我在想,我是不是 不适合做编程,在这种问题上纠缠,我亏死了,!

怪就怪我语文水平太差,英语又半调子,编程真是纠结的活

论坛徽章:
0
45 [报告]
发表于 2012-03-05 22:25 |只看该作者
回复 44# xhl
我今天想到一个名词就是 sceneobject,
别一个名词是 logicobject   
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP