Java 车辆类别(不同类型)。最佳设计和实施
在解释我的问题之前,我应该先做一点理论 对于车辆而言,我指的是能够通过公路运输货物的一切:轿车、面包车、卡车、拖车(或公路列车,我不知道正确的术语)、半拖车(也称为铰接式卡车或牵引拖车) 关于汽车、货车和卡车,没有问题:它们有一个车牌、一个重量和一个可运输的体积以及其他数据 但另外两辆车更复杂。他们可能有一个额外的车牌和其他额外的数据。特别是:Java 车辆类别(不同类型)。最佳设计和实施,java,polymorphism,Java,Polymorphism,在解释我的问题之前,我应该先做一点理论 对于车辆而言,我指的是能够通过公路运输货物的一切:轿车、面包车、卡车、拖车(或公路列车,我不知道正确的术语)、半拖车(也称为铰接式卡车或牵引拖车) 关于汽车、货车和卡车,没有问题:它们有一个车牌、一个重量和一个可运输的体积以及其他数据 但另外两辆车更复杂。他们可能有一个额外的车牌和其他额外的数据。特别是: 半挂车卡车(也称为牵引挂车)是一种复杂的车辆,由公路牵引车和半挂车组成 拖车卡车(也称为…)是一种复杂的车辆,由驱动部件(汽车、厢式货车、卡车…)和驱
- 半挂车卡车(也称为牵引挂车)是一种复杂的车辆,由公路牵引车和半挂车组成
- 拖车卡车(也称为…)是一种复杂的车辆,由驱动部件(汽车、厢式货车、卡车…)和驱动部件(拖车、手推车…)组成。 在欧洲,最多有两个组装件
public class Vehicle {
// kind of
enum TipoVeicolo {
AUTO, // car
FURGONE, // van
AUTOCARRO, // truck
/*
// for semi-trailer truck:
TRATTORE_STRADALE // road tractor
SEMIRIMORCHIO // semi-trailer
AUTOARTICOLATO // semi-trailer truck
// for trailer truck:
RIMORCHIO // trailer
AUTOTRENO // trailer truck
...
*/
};
enum Stato {
DISPONIBILE, // Available
NON_DISPONIBILE,// not available
IN_VIAGGIO // on road...
// ... ?
}
private String targa; // plate
private String mark;
private Stato stato;
private TipoVeicolo tipoVeicolo;
private float portata;
private float volume;
private short europallet;
//Date immatricolationDate;
//String assurance;
public Vehicle(String targa, TipoVeicolo tipoVeicolo, String mark, Stato stato, float ptt) {
this.targa=targa;
this.tipoVeicolo=tipoVeicolo;
this.mark=mark;
this.stato=stato;
this.ptt=ptt;
}
//////////////////////////////////////////////
// GET and SET methods
// ...
}
我该怎么处理?继承?对我来说,可以这样做。首先,您创建了非常通用的vehicle类,它基本上包含了车轮数量、名称以及其他一些内容。然后将其扩展多次,以创建机动车辆、无机动车辆、汽车、卡车等 此外,您还可以使用接口towable和许多其他描述某些特殊功能的接口。这样,您可以通过检查车辆是否实现了所需的接口来检查其兼容性
希望能有帮助。祝你好运。基本上有无限的可能性。就我个人而言,我的做法有些不同,因为汽车也可以拉动拖车。看到我要去哪里了吗?我要做的是有一个车辆模块类和一个车辆类。vehicle类将有一组车辆模块,这样您就可以管理任何类型的组合。@DaveNewton是的,一辆车也可以拉拖车。或者不是。如果你移走了拖车,他的拖车就不再是拖车了,只有一辆卡车。如果您从半挂车卡车上卸下半挂车,您只能获得一辆公路牵引车。应该尽可能接近真实的描述我遵循这一点,似乎是个好主意:目前没有问题。很快我会描述它是如何进行的。