C# 当一个班级;有一个;与其他类对象的关系

C# 当一个班级;有一个;与其他类对象的关系,c#,coupling,C#,Coupling,让我们假设我们有一辆汽车,车轮和刹车。一辆汽车“有”四个轮子,所以当创建一个汽车实例时,我希望同时创建四个轮子实例。同样,如果我正在创建摩托车,我希望创建两个车轮实例。我的问题是,在创建汽车类时,如何最好地创建车轮实例并命名它们 现在假设您要将制动器指定给特定的车轮-即:前制动器连接到左前车轮和右前车轮。我是否应该尝试在Wheel类中创建一个名为AttachedTo的属性?我如何将所有权分配给特定车轮(可以说是制动器) public class Car { public Car()

让我们假设我们有一辆汽车,车轮和刹车。一辆汽车“有”四个轮子,所以当创建一个汽车实例时,我希望同时创建四个轮子实例。同样,如果我正在创建摩托车,我希望创建两个车轮实例。我的问题是,在创建汽车类时,如何最好地创建车轮实例并命名它们

现在假设您要将制动器指定给特定的车轮-即:前制动器连接到左前车轮和右前车轮。我是否应该尝试在Wheel类中创建一个名为AttachedTo的属性?我如何将所有权分配给特定车轮(可以说是制动器)

public class Car
{
    public Car()
    {
        Wheel frontLeft = new Wheel();
        Wheel frontRight = new Wheel();
        Wheel backLeft = new Wheel();
        Wheel backRight = new Wheel();
        Brake frontBrakes = new Brake();
        Brake backBrakes = new Brake();
    }
}

public class Wheel
{
    public int Size;
    public string Brand;
    public Brake AttachedTo { get; set; }
}

public class Brake
{
    public string Type;
}

绝对不要做一个附加到属性。我只想使轮子成为适当类上的属性,但名为attached的属性是一种笨拙的方法

这看起来是对生成器模式的一个很好的使用。

通常使用实体,并且更喜欢组合而不是继承。

绝对不要创建“附加到”属性。我只想使轮子成为适当类上的属性,但名为attached的属性是一种笨拙的方法

这看起来是对生成器模式的一个很好的使用。

通常使用实体,并且更喜欢组合而不是继承。

我建议汽车没有直接刹车,汽车有轮子,轮子有刹车


我还建议您使用前轮和后轮对轮子进行子类化。如果您没有,那么至少,车轮应该具有FrontOrBack属性,这需要在构造函数中指定。

我建议车辆没有直接制动,车辆有车轮,车轮有制动器


我还建议您使用前轮和后轮对轮子进行子类化。如果没有,则车轮至少应该具有FrontOrBack属性,这需要在构造函数中指定。

由于车轮位置和制动类型是常量,枚举可能是合适的。然后,车轮位置和制动器类型将成为车轮类中的属性。将BraketType设置为只读,并根据车轮位置在构造函数中进行设置。

由于车轮位置和制动器类型是常量,枚举可能是合适的。然后,车轮位置和制动器类型将成为车轮类中的属性。将BraketType设置为只读,并根据车轮位置在构造函数中进行设置。

我已编辑了您的标题。请看,“,其中的共识是“不,他们不应该”。如果你真的想把它做好,你应该按照现实生活的方式来构建它。“轮子”由许多不同材料制成的不同组件组成,所有组件都不会自行组装,而是由外部参与者组装在一起。你应该问自己的问题是“这组类型的用户将如何与之交互?”如果有人手头有一个对
车轮
的引用,并且他们需要知道它附加了什么
制动器
,那么最好在
车轮
类上有一个名为
制动器
的属性。同样,对于
制动器
——如果
制动器
的用户需要知道它连接到什么
车轮
,那么最好有这样一个属性。如果你没有真正基于用户的场景,就不要添加该功能。一般来说,汽车类比应用于软件时总是很糟糕。我已经编辑了你的标题。请看,“,其中的共识是“不,他们不应该”。如果你真的想把它做好,你应该按照现实生活的方式来构建它。“轮子”由许多不同材料制成的不同组件组成,所有组件都不会自行组装,而是由外部参与者组装在一起。你应该问自己的问题是“这组类型的用户将如何与之交互?”如果有人手头有一个对
车轮
的引用,并且他们需要知道它附加了什么
制动器
,那么最好在
车轮
类上有一个名为
制动器
的属性。同样,对于
制动器
——如果
制动器
的用户需要知道它连接到什么
车轮
,那么最好有这样一个属性。如果你没有一个真正的基于用户的场景,就不要添加该功能。一般来说,汽车类比在应用于软件时总是很糟糕。