【问题标题】:What method of OOP would be appropriate for periodic table properties?什么 OOP 方法适用于元素周期表属性?
【发布时间】:2019-05-28 02:51:14
【问题描述】:

我正在尝试使用元素周期表在 java 中编写一个宠物项目。用周期性元素属性制作数据集的最佳/有效方法是什么。我应该单独制作一个包含所有元素的类吗?或制作一个数组或对象?

最初的计划是为每个单独的元素创建具有属性的冗余类。 (例如氢类、碳类、氮类……等)。每个类都有原子序数、重量、名称等属性。这是很多工作,但想知道是否有有效的方法哈哈。目标是使其尽可能模块化,以便我可以添加更多属性值或条件(如果我选择这样做)

我对java很陌生,所以请提出任何建议。也让我知道是否有人已经这样做或为此创建了一个库。 :)

【问题讨论】:

  • 你需要知道你在建模什么。如果您正在对原子建模(作为基于其类行为不同的对象),则将每个元素设为不同的类(具有相同的祖先类)是有意义的。元素周期表中的条目没有不同的行为,它们都具有相同的数据(原子量、组、周期、符号、名称......)和相同的行为(可以在某处绘制),因此将它们全部建模是有意义的作为同一类的对象。但是,您没有详细说明您要做什么,因此很难确定。
  • 这取决于您计划使用的各个元素的属性。如果您使用更通用的东西,如生产数量、重量、潜力等。您可以定义一个带有实例的通用类。甚至可能是一个枚举。避免深度实例层次结构。

标签: java chemistry


【解决方案1】:

我想知道你为什么不去继承,创建一个具有一般属性的类,我的意思是名称、原子量、名称等,然后在你想要的地方继承这些属性......

【讨论】:

    【解决方案2】:

    为具有所有属性的化学元素创建一个类。

    对于分类属性,比如它的组;它是金属(碱金属/镧系元素/...)还是惰性气体,还是反式铀或其他任何东西,您可以将其添加为字段,或者持有它们的外部 Set,或者确实使用继承。也可以实现一个(标记)接口 Metal。

    继承仅适用于严格层次结构中的不同行为、方法。 即使是 Animal 也不应该从 SwimmingAnimal 或 FlyingAnimal 继承,而是实现接口 Swimming 和 Flying,因为它可以两者兼有。 因此,对于 Metal/Noble Gass/... 组,可能会使用继承。但是,一个组的元素周期表中的背景颜色将在每个实例中保持不变。恕我直言 只有在金属有deriveSalt(...) 等时才有意义。而我没有看到。

    【讨论】:

      猜你喜欢
      • 2015-05-05
      • 1970-01-01
      • 2016-09-11
      • 2021-10-02
      • 2017-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-04
      相关资源
      最近更新 更多