Oop 组织相互关联的对象
这是一个一般性的问题,我不知道它是属于编程还是堆栈溢出 我在写一个小模拟。没有深入研究它的细节,就要考虑到许多身份。它们对应于对象,因为我使用的是OOP语言Oop 组织相互关联的对象,oop,language-agnostic,simulation,Oop,Language Agnostic,Simulation,这是一个一般性的问题,我不知道它是属于编程还是堆栈溢出 我在写一个小模拟。没有深入研究它的细节,就要考虑到许多身份。它们对应于对象,因为我使用的是OOP语言 有人居住在这个世界上 有地图 一张地图有许多地段,这些地段都是具有某些特征的土地 有部落(男人属于部落) 有一个名为Position的泛型类来定位元素 有机器人控制着移动男人的部落 有一个世界代表模拟的世界 等等 如果将模拟世界作为一个数据库,对象将是包含大量引用的表,但在内存中,我必须使用不同的策略。比如说,一个部落有一系列的男人作为
- 有人居住在这个世界上
- 有地图
- 一张地图有许多地段,这些地段都是具有某些特征的土地
- 有部落(男人属于部落)
- 有一个名为Position的泛型类来定位元素
- 有机器人控制着移动男人的部落
- 有一个世界代表模拟的世界
如果您想绝对确保模拟器的其余部分不受您在模型表示方面所做的设计选择的影响,将其隐藏在接口后面(例如,
ModelWorld
),该接口定义了模拟器可能调用的所有查询类型的方法(这与第二点正交,可能有助于第一点,即找出您的模拟器显示的访问模式)。这允许您轻松地更改实现,而不会影响模拟器代码的任何其他部分。这取决于您对“干净”的定义在我的例子中,我将clean定义为:我可以以一种明显、高效的方式实现所需的行为
构建OOP软件不是一个数据建模练习。我建议退一步。这些对象中的每一个实际上都做什么?您将实现什么方法
只是因为“男人们有很多”这并不意味着lot对象需要一个Guy集合;它只需要一个,如果对一个lot进行的操作影响到其中的所有Guy。即使如此,它也不一定需要Guy集合-它需要一种方法来获取lot中的Guy。这可能是一个内部存储的集合,但也可能是一个调用ba的简单方法进入世界寻找符合标准的人。这种查找的实现应该对任何人都是透明的
从你问题的要旨来看,你似乎是从“我如何生成报告”的角度来思考这个问题。退后一步,想想你首先要实施的行为
我发现另一件非常有价值的事情是区分实体和值。实体是身份重要的对象——你可能有两个家伙,都叫“克里斯”,但他们