从层次结构中检索特定 类
Retrieve specific Classes from hierarchy
我的程序的任务是模拟汽车服务站的工作流程。它的一部分是登记进入的车辆(可以是汽车、卡车或公共汽车)。根据车辆类型,程序必须选择可以修理的车辆部件。
对于汽车 - 船体、断裂、车轮。
对于卡车 - 与汽车和液压系统相同。
对于公共汽车 - 与汽车和内饰相同。
我已经创建了下一组 类:
//vehicle types
public abstract class Vehicle {}
public class Car : Vehicle {}
public class Truck : Vehicle {}
public class Bus : Vehicle {}
//vehicle parts types
public abstract class VehiclePart
{
public short State { get; set;}
public string Name
{
get { return this.GetType().Name; }
}
}
public abstract class CarVehiclePart : VehiclePart { }
public abstract class TruckVehiclePart : VehiclePart { }
public abstract class BusVehiclePart : VehiclePart { }
public class Hull : CarVehiclePart { }
public class Wheels : CarVehiclePart { }
public class Breaks : CarVehiclePart { }
public class Hydraulics : TruckVehiclePart { }
public class Interior : BusVehiclePart { }
public class Handrail : BusVehiclePart { }
我试图实现的是获得 类 的完整列表,展示每种车辆的零件。
我可以用这些 类 还是应该重写这个 huerarchy?
提前致谢。
我建议将零件建模为枚举而不是 类。此外,您还可以通过方法 GetPartsToRepair 使用多态性。当对象是 Car 类型时,返回每种车辆类型需要修理的 3 个零件,如果是 Truck 类型,则添加 Hydraulics,如果是 Bus,则添加 Interior。
会是这样的:
public enum VehiclePart{
Hull,
Wheels,
Breaks,
Hydraulics,
Interior,
Handrail,
}
//vehicle types
public abstract class Vehicle {
public virtual List<VehiclePart> GetPartsToRepair(){
return new List<VehiclePart>(){ VehiclePart.Hull, VehiclePart.Wheels, VehiclePart.Breaks };
}
}
public class Car : Vehicle { }
public class Truck : Vehicle
{
public override List<VehiclePart> GetPartsToRepair(){
var result = base.GetPartsToRepair();
result.Add(VehiclePart.Hydraulics);
return result;
}
}
public class Bus : Vehicle
{
public override List<VehiclePart> GetPartsToRepair(){
var result = base.GetPartsToRepair();
result.Add(VehiclePart.Interior);
return result;
}
}
我的程序的任务是模拟汽车服务站的工作流程。它的一部分是登记进入的车辆(可以是汽车、卡车或公共汽车)。根据车辆类型,程序必须选择可以修理的车辆部件。 对于汽车 - 船体、断裂、车轮。 对于卡车 - 与汽车和液压系统相同。 对于公共汽车 - 与汽车和内饰相同。
我已经创建了下一组 类:
//vehicle types
public abstract class Vehicle {}
public class Car : Vehicle {}
public class Truck : Vehicle {}
public class Bus : Vehicle {}
//vehicle parts types
public abstract class VehiclePart
{
public short State { get; set;}
public string Name
{
get { return this.GetType().Name; }
}
}
public abstract class CarVehiclePart : VehiclePart { }
public abstract class TruckVehiclePart : VehiclePart { }
public abstract class BusVehiclePart : VehiclePart { }
public class Hull : CarVehiclePart { }
public class Wheels : CarVehiclePart { }
public class Breaks : CarVehiclePart { }
public class Hydraulics : TruckVehiclePart { }
public class Interior : BusVehiclePart { }
public class Handrail : BusVehiclePart { }
我试图实现的是获得 类 的完整列表,展示每种车辆的零件。 我可以用这些 类 还是应该重写这个 huerarchy?
提前致谢。
我建议将零件建模为枚举而不是 类。此外,您还可以通过方法 GetPartsToRepair 使用多态性。当对象是 Car 类型时,返回每种车辆类型需要修理的 3 个零件,如果是 Truck 类型,则添加 Hydraulics,如果是 Bus,则添加 Interior。
会是这样的:
public enum VehiclePart{
Hull,
Wheels,
Breaks,
Hydraulics,
Interior,
Handrail,
}
//vehicle types
public abstract class Vehicle {
public virtual List<VehiclePart> GetPartsToRepair(){
return new List<VehiclePart>(){ VehiclePart.Hull, VehiclePart.Wheels, VehiclePart.Breaks };
}
}
public class Car : Vehicle { }
public class Truck : Vehicle
{
public override List<VehiclePart> GetPartsToRepair(){
var result = base.GetPartsToRepair();
result.Add(VehiclePart.Hydraulics);
return result;
}
}
public class Bus : Vehicle
{
public override List<VehiclePart> GetPartsToRepair(){
var result = base.GetPartsToRepair();
result.Add(VehiclePart.Interior);
return result;
}
}