Class OOP-预先确定的断点和类的抽象

Class OOP-预先确定的断点和类的抽象,class,oop,architecture,relationship,Class,Oop,Architecture,Relationship,当我喜欢对一些真实世界的事物建模时,我一直在思考这个问题,当类和它们的关系关联时,继承越来越大,你不能真正地将它们分开。由此产生的问题是:如何将其装入主内存 想象一下:我用一个人的所有属性为他建模,例如 眼睛 朋友 宠物也许很有趣,但是。。 ... 每个属性都有自己的属性,例如 宠物 外套 ... 外套 头发 ... 头发 颜色 长 ... 这个例子不太清楚,但这只是一个粗略的例子 当然也不总是有直接的联系,但有时是通过一个集合像特殊的类。但是,有什么正确的方法可以使底层计算机不那么复杂,这样应

当我喜欢对一些真实世界的事物建模时,我一直在思考这个问题,当类和它们的关系关联时,继承越来越大,你不能真正地将它们分开。由此产生的问题是:如何将其装入主内存

想象一下:我用一个人的所有属性为他建模,例如

眼睛 朋友 宠物也许很有趣,但是。。 ... 每个属性都有自己的属性,例如

宠物

外套 ... 外套

头发 ... 头发

颜色 长 ... 这个例子不太清楚,但这只是一个粗略的例子

当然也不总是有直接的联系,但有时是通过一个集合像特殊的类。但是,有什么正确的方法可以使底层计算机不那么复杂,这样应用程序一方面不会占用太多的主内存空间,另一方面却可以完全利用它


你的Steffen我想问题是,为什么这需要在内存中?简言之,事实并非如此。如果你试图用你描述的方式来模拟你在这个世界上遇到的一切,你最终会耗尽内存。因此,您需要存储信息。这时,你的记忆问题就消失了。RAM现在可能很快,但如果用完了,对您没有好处。

如果问题是如何将其装入内存,那么可以使用SQL对此进行建模

问题是,你可能有几个人,或者几个动物,他们有共同的财产。例如,一个人的头发和动物的头发具有相同的子特征。由于这个关系属性,我假设您可以让狗和人都有棕色的头发。例如,您可以使用一个SQL表,其中一个表表示每个属性

单个表将具有诸如eyes、bodyType、job等列,这些列将是具有这些属性的表的外键。例如,job表包含诸如salary、position、company等属性

这些工作是为了个人和其他事物之间的一对一关系

对于多对一关系,您可以创建表,其中个人是父项,它是外键,或者创建表来建模关系本身

friends表可能有关系,如individual1、individual2,它们是individual的外键,以及关系列,如friends或Lowers

这允许您在硬盘内存存储中任意创建关系,这应该足够了。根据您的应用程序,我相信您可以在SQLite中执行此操作并在内存中运行,或者实现一个缓存层,以在Redis之类的东西中表示对象本身

您可以在内存中创建相应的域对象,例如类Individual和类Job以及类Pet。您可以根据需要使用数据映射器模式从SQL表中检索和提交数据,这样您就可以用最少的RAM存储相当多的数据,并在硬盘上持久保存其他数据


注意:也可以使用NoSQL,如MongoDB,因为您可以将所有内容表示为文档,但为了尽量减少数据重复,我建议使用SQL作为一种可能性。我不理解这个问题。你所说的“对于底层计算机来说没有那么复杂”是什么意思?嘿,MahlerFive,我的意思是,生成的模型及其所有的类和关系占用了太多的RAM。有太多的类,以至于主内存中的应用程序大小膨胀,无法再放入主内存。你好,Didaxis,谢谢你的回复!嗯,对我来说,问题是:我应该在哪里制造这些预先确定的断点。我必须省略哪些属性?当我这样做时,我的模型库将不完整,这很糟糕。我只是想创建一个很棒的库,当然不可能删除任何属性。但是我应该删除哪些属性,以及如何计划它是完整的,可能是使用胶水类或类似的东西?我不是一个以英语为母语的人,所以我的行为可能很愚蠢:迪洛·维克托,当然,必须有一种方法来存储所有这些数据,而数据库是有意义的。我决定使用一个图形数据库,它最有意义,并且能够处理实际存在的大量关系:您使用的是哪种数据库?嘿,我还没有决定,但我倾向于使用Neo4j或OrientDB。你觉得呢?我自己也没用过,所以我没把它写在我的答案里。我只是很有趣,谢谢!