在解释我的问题之前,我应该先做一些理论.
对vehicle来说,我指的是可以通过公路运输货物的所有东西:汽车、货车、卡车、拖车(或者公路列车,我不知道该怎么称呼)、半拖车(也称为铰接式卡车或拖拉机拖车)。
关于汽车、货车和卡车,它们没有问题:它们有一个盘子、一个重量和一个可移动的体积,以及其他数据。
但另外两辆车更复杂。他们可能有一个额外的车牌,和其他额外的数据。特别是:
所以我们还要处理半挂车,拖车和大车。
在我的软件中,可以以不同的方式相互组装()。举个例子,我能不能把拖车从拖车里拉出来,只得到一辆卡车和一辆拖车。尽管如此,我还是可以驾驶同一辆卡车,如果兼容的话,可以攻击另一辆不同的拖车。等等..。
在我看来,很明显,我们不可能用一辆一流的交通工具来管理每件事。
,我想知道什么是处理所有的最好方法。起初,我在汽车类中出现了一个枚举,它向我展示了车辆的类型。但当我不得不处理复杂的车辆时,相信它会更复杂.我也想知道这将如何影响软件的其余部分。
起初,我是这样管理车辆类的:
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
// ...
}
我该怎么处理呢?继承遗产?
发布于 2014-10-09 11:41:05
对我来说可以这样做。首先,您创建了非常通用的车辆类,它基本上有大量的车轮和名称,也许还有其他的东西。然后你把它扩展很多次,制造机动车辆,没有马达的车辆,然后是汽车,卡车等等。
此外,您可以拥有描述某些特殊功能的接口、可移植接口和许多其他接口。通过这种方式,您可以通过检查车辆是否实现了所需的接口来检查其兼容性。
希望能帮上忙。祝好运。
https://stackoverflow.com/questions/26277305
复制相似问题