我正在考虑用Ruby编写一个CLI Monopoly游戏.这将是我在Ruby中完成的第一个大型项目.我在编程方面的大部分经验都是使用Clojure和Haskell等函数式编程语言.我很了解Object Orientation,但我没有设计面向对象程序的经验.
现在,这是交易.
在大富翁中,董事会周围有很多空间.大多数空间是属性,其他空间做其他事情.
每个空间都有一个班级会很聪明吗?我正在考虑拥有一个所有其他空间继承的Space类,并且具有一个继承自Space的Property类,然后为继承自Property的每个属性创建一个类.这意味着很多课程,这让我相信这是一个糟糕的方式来做我想做的事情.
我还打算做的是使用'继承'钩子方法来跟踪所有属性,以便我可以搜索它们并在需要时将它们从未买单列表中删除.
这类问题似乎出现在很多程序中,所以我的问题是:有没有更好的方法来做到这一点,我是否遗漏了对面向对象设计非常重要的东西?
如果这是一个愚蠢的问题,我很抱歉,对于OOPD,我只是一无所知.
谢谢.
你走在正确的轨道上,但是你走得太远了,这是初学者在OOP上的一个常见错误.每个属性应该不会是一个单独的类; 它们都应该是Property类的实例.我会按照以下几行来创建属性类:
因此,例如,Boardwalk将是Property类型的对象,具有适用于它的特定值,例如属于深蓝色垄断组.