2012-06-15 25 views
0

我开始为2D游戏编写一些代码,创建了一个类“objets”,试图尽可能保持通用。我有几种方法和属性,这些方法和属性对于每种类型的元素(buldings,ppl,接口按钮等)都是通用的,就像(w,h,x,y ......你知道的那样),但是大多数方法和属性只适用于和特定类型的项目。 因此,我将不得不为游戏中的每种类型的演员继承一个新类? 只是想知道这是否是一种常见做法,或者我应该以不同的方式来管理它。OOP:有很多继承类是正常的吗?

在此先感谢。

回答

1

如果你介绍行为然后是子类,但是如果差异是基于属性的,那么不要

动物(有.colour和.makeSound) - >狗(有.eatOwnPoop) - > RedDog(不,太具体,由彩色覆膜)

通知我怎么了动物 “.makeSound”。我本可以把狗放进狗里,但是我必须把它放进猫里等。这个子类可以简单地覆盖并提供具体的声音。然而,你可以使用接口来更好地交叉切割你的代码,但这是一个相当冗长的话题,可能是你的需求的矫枉过正(尽管它可以帮助任何你测试的单元测试)。

1

这听起来像你是过度使用继承。当你同时说“像......这样的常见属性”和“......只有在应用于特定类型时才有意义”,它肯定是一个红旗。此外,域标记(例如building)与像button这样的接口对象共享一个公共基类是一个红旗。最后,定义您自己的objetobject?)类是非常不寻常的,系统中的每个类都从其中派生。这不是不可思议的,但结合你的其他评论,这听起来像是你开始走下一条非生产性的道路。

您可能要参考的面向对象的设计和分析一个很好的教程,如“Head First OOA&D

0

你没有做任何事情。通常,如果派生类具有某种通用性,但在自然界中需要特定的功能性,则需要使用派生类。如果你想要有多态行为,使用它也很好。你已经提出了一个非常开放的问题,但基本上并不认为你必须使用继承,因为并不是每个问题都需要继承,实际上有些人过度使用继承,并将它引入到真正不需要的地方。总而言之,如果您还没有阅读过关于面向对象设计的好书,那么我会真正推荐您这样做,因为这会让您从不同的角度思考代码,并极大地改进您查看软件和设计的方式它。这可能听起来像一个警察,但这种问题很难回答,不知道你在做什么的所有细节。