Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 在OO设计中,如何跟踪许多对象?_Oop - Fatal编程技术网

Oop 在OO设计中,如何跟踪许多对象?

Oop 在OO设计中,如何跟踪许多对象?,oop,Oop,我正在努力解决一个关于基本面向对象设计的问题,我没有足够的词汇来描述这个问题。我是计算机系统专业的一年级学生,所以到目前为止,我的软件开发教育主要集中在基础知识上 在一个大型的OO项目中,比如角色扮演游戏,您可能会得到许多在编译时名称未知的对象。在游戏示例中,您可能有一个数据库文件,其中包含不同敌人遭遇的详细信息。在一次特殊的遭遇战中,玩家可能会面对三名地精战士和一名巨魔狂暴者。这些不同的敌人可能都是“战斗者”的实例,有不同的创造参数来指定他们的力量和装备 然而,当实例化这些对象时,我们给它们起

我正在努力解决一个关于基本面向对象设计的问题,我没有足够的词汇来描述这个问题。我是计算机系统专业的一年级学生,所以到目前为止,我的软件开发教育主要集中在基础知识上

在一个大型的OO项目中,比如角色扮演游戏,您可能会得到许多在编译时名称未知的对象。在游戏示例中,您可能有一个数据库文件,其中包含不同敌人遭遇的详细信息。在一次特殊的遭遇战中,玩家可能会面对三名地精战士和一名巨魔狂暴者。这些不同的敌人可能都是“战斗者”的实例,有不同的创造参数来指定他们的力量和装备

然而,当实例化这些对象时,我们给它们起什么名字?另一种说法是:我使用Python,当您实例化一个对象时,您需要给它一个标识名,以便以后引用它;但是,如果变量名本身没有直接输入到我的代码中,我如何命名呢

next_combatant = load_from_file()

??? = Combatant(next_combatant)
换句话说,我应该用什么来代替???在上面

我目前使用的解决方案是使用列表(数组),将每个新对象追加到列表中。通过这种方式,每个对象并没有严格意义上的“goblin_003”名称,但我可以通过使用列表的索引来引用对象,并且我还可以做其他好事,比如计算有多少敌人,等等

那么,我的问题是:工业界是这样处理的吗?程序员通常使用数组来组织他们的所有对象吗?还是有一些聪明的技巧可以让我从文件中检索变量名

(我意识到这个问题措词不当,所以如果有人需要澄清,请提问。)


编辑:有这样使用集合的名称吗?

当然有。收藏品充分发挥了这一作用。对于许多集合,您不需要指定存储项的标识符。然而,如果你愿意的话,字典是一个不错的选择。我对python了解不多,但应该有一些集合,在其中为要存储在其中的项指定键和值


想象一下,你将在一场游戏中创造数百万勇士。让warrior_9999和warrior_1000000是没有意义的。

没错,在游戏或其他需要动态内容的软件中,没有所有怪物和对象的变量名。实际上,您不需要任何变量名

但存储这些对象的正确方式取决于您的需要、您想用它们做什么以及对象的用途。您可以使用数组、列表、树以及任何在您的用例中有意义的东西

如果您需要在游戏/软件中识别特定的动态对象/怪物,请在对象中添加标识符变量


对象中的标识符变量只能是整数值。但是你必须保留它,这样你就不会有两个值相同的对象

例如,如果数组中有3个怪物对象,并且怪物对象具有
int id变量

  • 1,id=1
  • 怪物2,id=2
  • 怪物3,id=3。。。等等
在OpenGL中,如果使用拾取,好的标识符是RGBA值:

  • Monster1,id=RGBA(0,0,0,1)
  • 怪物2,id=RGBA(0,0,0,2)
  • Monster256,id=RGBA(0,0,1,0);等等

什么是正确的标识符,同样取决于您的需要。

您能否澄清您关于标识符变量的陈述?我不明白你说的是什么意思。否则,谢谢。好的,那么您的意思是只向类添加一些属性,以允许我们唯一地标识实例?酷。@henrebotha是的,如果需要标识实例,请添加唯一的属性值。谢谢,这正是我的想法。