Java类的正确设计

Java类的正确设计,java,class,oop,Java,Class,Oop,我的问题是,我应该将沉头孔(板中的凹孔)作为板的属性,还是沉头孔作为接头的属性 我有以下工程分析课程: 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 topWa

我的问题是,我应该将
沉头孔
(板中的凹孔)作为
板的属性
,还是
沉头孔
作为
接头的属性

我有以下工程分析课程:

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
沉头孔仅适用于
顶板
,但我需要验证用户输入的板材厚度是否大于沉头孔的深度。我只是在底板中将沉头孔设置为null,还是将沉头孔属性放在关节类中更好?或者我应该使用其他模式,比如子类

我将涂层和材料作为属性添加到每个零件中,因为添加到接头中过于冗长,即:

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

我可能可以让它在任何一种情况下工作,但也许它们的设计更好?

我认为如果您将
沉头
作为
接头
的属性,那么
螺栓
都可以访问每个
接头
的特定属性。这样,螺栓就不需要接触板材对象来查找孔。

如果我正确理解上下文,
沉头孔是
接头
对其
顶部
的要求。在这种情况下,它应该是
接头
的属性(可能取自
螺栓
或任何指定的属性),并且
接头
应该拒绝
顶部
,如果它没有足够的厚度

如果
沉头孔
的物理属性(即
实际上有一个钻孔沉头孔),那么它也应该是
的属性。但
接头
仍将其作为其
顶部
的要求


希望它有意义。

问题是,孔直径属性在板上,因为顶板和底板都必须有一个用于螺栓杆的孔。沉头孔仅位于顶板上,用于将螺栓头缩进。如果
沉头孔仅用于顶板,则将其放入
板中可能会造成混淆。不确定我们是否在同一页上。通孔直径是顶板和底板的特性。沉头孔是一个额外的孔,部分通过顶板。也许我们是,我就是说不出来:)嗯。。。我一直在反复阅读你的文章,你让我想,也许沉头孔的属性在螺栓对象上。然后在其他利用各种属性的类中,我可以使用getBolt()访问.
沉头孔
的属性是
接头
,因为如果它是
螺栓
的属性,则您的
接头
始终需要验证
螺栓
是否适合
沉头孔
。因此,如果它是<代码>联合< /代码>的一部分,则将其视为在顶部执行代码> >版< /代码>,其大小为<代码>螺栓<代码>,由<代码>经过许多随机的想法,这一个对我来说是最有说服力的。我希望它对您也有意义。板实例是否需要了解其自身的埋头孔?实际上需要两个埋头孔验证:底板不应有埋头孔。这似乎意味着一个平板需要知道如何使用它来知道要运行哪些验证。即使使用TopPlate和BottomPlate类,也开始变得丑陋。我认为不是,因为在关节实例中,每个对象都可以在现实生活中相互引用,是的,可以对顶板进行反钻孔。我正试图在接头的顶部和底部板上重复使用“板”对象。@jeff我应该重新表述一下-您需要使用板被埋头钻孔的事实,还是只想检查其厚度以确保其足够厚?在后一种情况下,我建议
接头
具有
要求的沉头孔
特性,并在验证期间将其与
顶板
的厚度进行比较。其他类别利用沉头孔信息。因此,有一类可能需要进行一些工程计算,可能需要顶板和底板的厚度、螺栓的长度和钻孔的深度。我将为bolt、plate1、plate2、Top垫圈等实例化该类设置属性。。