游戏开发论坛

 找回密码
 立即注册
搜索
查看: 8563|回复: 17

[讨论] 请教面向对象!

[复制链接]

32

主题

788

帖子

837

积分

高级会员

Rank: 4

积分
837
发表于 2006-11-9 11:46:00 | 显示全部楼层 |阅读模式
正如茹枫说的,面向对象是一个已经被技术人员广泛应用的方法

同样它也可以应用于策划

因为面向对象是对事物认知与分析的方法之一。

面向对象,字面含义是把你关注的东西作为一个对象,然后正面的去分析它

这是一个方法。

具体的,我所了解到的是:
1  分析你所研究的对象的属性

2  针对属性提出方法

例如:
1辆汽车
属性:汽车颜色,汽车轮胎,汽车移动速度

方法:PAINT(颜色) 该方法实现了显示及更改颜色这个属性
         旋转(轮胎)    该方法实现了让轮胎旋转
         MOVE(N)      该方法实现了让汽车以一个N的步长移动

这样,一辆汽车就被基本实现了
当然,其中还有很多属性没有被分析出来,也有一些不需要分析,可是我们做到了

例如,车身形状的属性
这个属性被忽略了,于是,我们制作的汽车就只能是一个样子,因为我们没有方法来更换车身

在例如,轮胎这个属性
我们给出的方法是让他旋转,这个时候,也许是否旋转,观察者很难分辨,于是这个方法就被浪费了。可是我们仅仅设计了这一个方法,于是米其林轮胎与我们无缘了,我们只能使用默认的那个了,因为我们同样没有提供更换轮胎的方法。

上面的解释可能存在不小的谬误,希望高手能够更详细的论述一下,让大家更好的掌握面向对象的分析理念。         

135

主题

3447

帖子

3800

积分

论坛元老

总版主

Rank: 8Rank: 8

积分
3800
QQ
发表于 2006-11-9 11:49:00 | 显示全部楼层

Re:请教面向对象!

32

主题

788

帖子

837

积分

高级会员

Rank: 4

积分
837
 楼主| 发表于 2006-11-9 11:53:00 | 显示全部楼层

Re:请教面向对象!

。。。。顶你个头啊,YII你就不能再说说,别让我白白的抛砖啊。

教我点东西,你很久没教我东西了!

14

主题

166

帖子

171

积分

注册会员

Rank: 2

积分
171
发表于 2006-11-9 22:13:00 | 显示全部楼层

Re:请教面向对象!

听楼主所说,我感觉应该是指对象是需要细分到什么程度。
太细节,估计程序无法实现
不细分下去,又会感觉缺少点什么
我想这个细分的度很大程度上取决与经验,不过我的建议是
先细分到不能细分为止,然后再逐步实现,实现不了的全部砍掉。

0

主题

146

帖子

150

积分

注册会员

Rank: 2

积分
150
发表于 2006-11-9 22:57:00 | 显示全部楼层

Re:请教面向对象!

按照早期的面向对象理论:
汽车是类,某一辆汽车A是汽车这个类的一个实例,也就是对象。

如果又有卡车这个类,继承了汽车的属性和方法,汽车就是父类,卡车就是子类。

继承就是全面接过父类的所有属性和方法,有可能增加新的属性和方法,还有可能重新定义父类的方法,最后这种叫做重载。

类的某些属性和方法在类之外是不可见的,这叫封装。

使用类时要生成类的实例,比如说汽车这个类是没法开的,某一个具体的汽车对象就可以开了。

子类的实例(对象)可以当作父类的实例来使用,而父类的对象不能当作子类的实例来使用,这叫多态。

比如汽车这个类有开车这个方法,车一开动就移动位置,子类卡车可以重载这个方法,改成一边冒黑烟,一边移动位置。如果给你一个汽车对象的引用,你不用管它是轿车还是卡车,直接使用开车这个方法就行了。

类的属性也可以是对象,比如说轮胎也可以是对象。

后来有了虚拟类,就是有些方法并没有实现的类,无法生成实例的类。比如汽车可以是虚拟类,无法生成汽车实例,在汽车的子类卡车上实现这些方法,就可以生成卡车的实例,卡车的实例就可以当作汽车的实例来使用。

还有接口模板等很多东西。

我不太看好面向对象用在策划方面。

14

主题

180

帖子

190

积分

注册会员

Rank: 2

积分
190
发表于 2006-11-9 23:42:00 | 显示全部楼层

Re:请教面向对象!

我感觉这种方法在需要构建大量物品的MMORPG中比较适用,其他类型游戏使用这种方法可能会把问题复杂化

9

主题

76

帖子

86

积分

注册会员

Rank: 2

积分
86
发表于 2006-11-10 00:44:00 | 显示全部楼层

Re:请教面向对象!

扯淡~
最早的编程是基于机器端的枯燥到只能有开/关二极管也就是01010101这样的东西;后来到了汇编语言是有人类的语言去编写,但是由于复杂和规则繁多只有少数人能使用;在后来有了高级语言,先是BASIC,然后是影响整个计算机信息领域的C语言,但是对于这些高级语言人们发现他们有很多的不足之处,他不能象人类思考问题一样,而且兼容性,扩展性都非常差,为了应对网络化在计算机领域的发展,人们认为事物都是有属性的,有相同属性的东西可以归为一个类,这样就使程序有了封装性,既可以保证安全又可以使其有足够的扩展性。
纵观编程的发展史,程序员们一直致力于让程序和编程过程更象人类的思维和交流方式,但毕竟是面对毫无感情的机器,不可能象人类的思维一样天马行空。策划这样的职业却正是需要天马星空和不着边际的想像,按楼主的意思是让策划们降一个思维等级去按面向对象的方式去策划了?就象最著名的发泄游戏《DIVEL MAY CRY》系列,之前其实是鬼舞者2,在制作到后期的时候,一个策划人员只是随便写下了“要是能让佐马介同时拿着冷兵器和枪械随意切换或许会更爽快”,之后“或许我们应该让他能在空中滞空或者做更多的动作”……让本来应该是鬼舞者的明智佐马介变成了酷到掉渣的DANTEN。最后CAPCOM高层也认为应该让DIVEL MAY CRY单独立项,这样20世纪末最有名的三大快餐RPG:DIVER MAY CRY和鬼舞者系列两部都产自CAPCOM(还有一部是KOIE的无双系列)
可见策划这个职业是不能有条条框框的,不要让策划带着镣铐跳舞。要知道在策划看来任何一个类是可以拥有所有属性的~就拿LZ说的汽车一定要有轮胎么?为什么不能有翅膀?汽车一定要有移动速度么?为什么不能形成时空扭曲而产生位移?这都是人为给汽车加的OPTIONS吧?
但是面向对象应用在游戏开发阶段项目阶段也就是项目管理阶段应该还是可行的。

32

主题

788

帖子

837

积分

高级会员

Rank: 4

积分
837
 楼主| 发表于 2006-11-10 09:09:00 | 显示全部楼层

Re:请教面向对象!

5楼说得就更是精华了

分析了一个汽车以后,我们可以把它具有的属性与对应的方法重新加载到类似的一类汽车中。无疑,使用这个方法可以针对一个较庞大的系统来分析了。

关于条条框框。

策划,是需要条条框框的。
大部分策划都是绝对需要的。

例如,一个项目组不可能有很多人作主策,于是其他各小组长就要在主策的框框内工作。
任务系统负责人可能制定了任务系统文档,那么旗下的文案就需要根据该文档制作具体的任务。

诸如此类,绝大多数策划都是在一个实际的范围内工作的。

接下来,没有条条框框的时候,我们则更需要找到一个有效的分析方法。
例如,战场

战场具备什么属性呢?
1 地图
2 阵营
3 玩家
4 积分
5 胜利

针对这些具体的东西,或许我们可以再分(可以称为子类)。
运用,对象的方法,其实就是不断地划分,然后针对最小的单位(属性)来分析其中可以变化的可能(方法)。

通过对方法的设计来诠释属性,通过属性的组合来形成对象。

这是一个方法而已,并非条条框框。

这个方法具备简单、明晰、可行三个特征,因此才会被广泛使用。

22

主题

371

帖子

387

积分

中级会员

Rank: 3Rank: 3

积分
387
发表于 2006-11-10 09:26:00 | 显示全部楼层

Re:请教面向对象!

http://bbs.gameres.com/showthread.asp?threadid=34304&page=1

之前的讨论,也扯到一点的面向对象,主要在第2页

197

主题

1041

帖子

1104

积分

金牌会员

Rank: 6Rank: 6

积分
1104
QQ
发表于 2006-11-10 10:28:00 | 显示全部楼层

Re:请教面向对象!

ood,oop,在程序领域才有用。

你们说的都是思想上的东西。本来是很简单的问题,但被你们用“面向对象的方式”一说,结果问题反而更复杂了。面向对象只是一种更适合用程序表达思想的一种方法,和现实世界的以己观物是截然不同的。

在oop,ood的程序中,有一种叫做类的东西,那就是面向对象了。oop,ood的设计目的是让程序以非常简单的方式,无限扩大,那是一种把程序做大的一种非常科学的方法。也是近10几年计算机技术进步的一个重要元素。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-5-3 10:55

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表