VB.NET使用可选输入创建一个类

我正在尝试更多地了解面向对象编程.

我正在尝试创建一个表示此图像中的Conical对象的类.

《VB.NET使用可选输入创建一个类》

答:连接直径
B:直径
C:身高

但对我来说,选择锥形时会有一些差异

1)锥形连接是否大于扩展锥体的直径,否则为锥形.为此,我创建了一个基于构造函数中设置的枚举的只读属性.这是在创建锥体对象时设置的并且是固定的.

2)你想如何标注它.图像有3个维度,但是第四个维度是一个角度.如果高度是前导尺寸,则应计算角度.如果角度是前导尺寸,则应计算高度.同样为此我创建了一个基于构造函数中设置的枚举的只读属性.

但是我应该如何标记我的属性?在一种情况下,高度应该是只读的,而另一种是角度.你如何处理这样的情况?

Public Class Cone

    Public ReadOnly Property ConeType As ConeTypeEnum

    Public Enum ConeTypeEnum
        kExpansion = 1
        kReduction = 2
    End Enum

    Public ReadOnly Property DimensionType As DimensionTypeEnum

    Public Enum DimensionTypeEnum
        kAngle = 1
        kHeight = 2
    End Enum

    Public Property Height As Double
    Public Property Diameter As Double
    Public Property ConnectionDiameter As Double
    Public Property Angle As Double

    Public Sub New(ByVal oConeType As ConeTypeEnum,
                   ByVal oDimensionType As DimensionTypeEnum)

        ConeType = oConeType
        DimensionType = oDimensionType

    End Sub

End Class

最佳答案 这是我要做的:

在只读属性中从当前A和B动态确定锥形类型属性.这 – 据我所知 – 只是你所拥有的锥形类型的一个指标.

所有其他属性都可以读/写,更新相应的其他属性.例如.如果用户更改角度,请重新计算高度.如果用户更改高度,则重新计算角度等.

如果你真的想设置锥形类型,我会在调用构造函数时这样做.然后更改其他属性,以便在A和B不适合当前锥形类型的情况下抛出异常.

另一种方法是定义具有所有必需属性的接口ICone,并从中派生出相应实现getter / setter的ExpansionCone和ReductionCone类.

点赞