【问题标题】:Proper design of Java Classes正确设计 Java 类
【发布时间】:2015-12-23 14:26:46
【问题描述】:

我的问题是我应该将counterbore(板上的凹孔)设为plate 的属性还是将counterbore 设为joint 的属性

我有以下工程分析程序的课程:

Plate
Bolt
Washer
Nut 
Material
Coating

然后我有代表各种关节的类

TappedJoint (a joint were the bolt is threaded into the bottom plate) will have:
  Plate topPlate
  Plate bottomPlate
  Bolt bolt
  Washer topWasher

BoltedJoint
  Plate topPlate
  Plate bottomPlate
  Bolt bolt
  Nut nut
  Washer topWasher
  Washer bottomWasher

沉孔仅适用于topPlate,但我需要验证用户输入的板厚是否大于沉孔深度。我只是在bottomPlate 中将counterbore 设置为null,还是将counterbore 属性放在联合类中更好?或者也许我应该使用其他模式,例如子类?

我将涂层和材料作为属性添加到每个部分,因为它太冗长而无法添加到关节,即:

  BoltedJoint
    Plate topPlate
    Plate bottomPlate    
    Coating topPlateTopSurface
    Coating topPlateBottomSurface
    Coating bottomPlateTopSurface ...etc 

我可能可以让它适用于任何一种情况,但也许他们的设计更好?

【问题讨论】:

  • Plate 实例是否需要知道它自己的沉孔?实际上需要两个沉孔验证:底板应该没有沉孔。这似乎意味着一个 Plate 需要知道它是如何被用来知道要运行什么验证的。开始变得丑陋,即使有 TopPlate 和 BottomPlate 类。
  • 我不认为,因为在联合实例中,每个对象都可以相互引用

标签: java class oop


【解决方案1】:

我认为如果您将counterbore 作为Joint 的属性,那么PlateBolt 都可以访问特定于每个Joint 的属性。这样一来,Bolt 就无需访问 Plate 对象来查找孔。

【讨论】:

  • 问题是,hole_diameter 属性在板上,因为顶板和底板都必须有一个螺栓柄孔。沉孔仅在顶板上,用于凹入螺栓头部。
  • 如果counterbore 仅用于顶板,那么将它放在Plate 中可能会令人困惑。
  • 不确定我们是否在同一页面上。通孔直径是顶板和底板的特性。沉孔是一个额外的孔,部分穿过顶板..en.wikipedia.org/wiki/Counterbore#/media/…。也许我们是,我只是说不出来:)
  • 嗯...我一直在阅读和重读您的帖子,您让我想到,也许埋头孔属性在螺栓对象上。然后在其他使用各种属性的类中,我可以使用 getBolt().getCounterbore() 访问。
  • counterboreJoint 的属性,因为如果它是BoltPlate 的属性,那么您的Joint 始终需要验证Bolt 和@987654335 是否@适合counterbore。因此,如果它是Joint 的一部分,则将其视为您在顶部Plate 上打了一个洞,其大小为Bolt,由counterbore 本身的counterbore 属性定义。经过许多随机的想法,这对我来说是最有说服力的。我希望它对你也有意义。
【解决方案2】:

如果我正确理解上下文,counterBoreJoint 对其topPlate 的要求。在这种情况下,它应该是Joint 的属性(可能取自Bolt 或其他任何规定),如果没有足够的厚度,Joint 应该拒绝topPlate

如果counterBorePlate 的物理属性(即Plate 实际上有一个钻孔),那么它也应该是Plate 的属性。但是Joint 仍然需要它作为其topPlate 的要求。

希望它有意义。

【讨论】:

  • 在现实生活中,是的,顶板可能是沉头孔。我正在尝试将板对象重复用于关节中的顶板和底板。
  • @jeff 我应该改写一下——您是否需要使用板是沉头孔的,或者您只是想检查它的厚度以确保它足够?在后一种情况下,我建议Joint 具有requiredCounterBore 属性,并在验证期间将其与topPlate 的厚度进行比较。
  • 其他类使用沉孔信息。因此,一个班级可能正在执行一些工程计算,并且可能需要顶板和底板的厚度、螺栓的长度和外孔的深度。我将为 bolt、plate1、plate2、topWasher 等实例化该类设置属性。
猜你喜欢
  • 2015-08-24
  • 2011-06-27
  • 1970-01-01
  • 2017-04-05
  • 2013-11-21
  • 2011-09-08
  • 2013-03-27
  • 1970-01-01
相关资源
最近更新 更多