我已經做了類AbstractVehicle:AbstractVehicle使用時間作爲類成員
package TruckingCompany;
public abstract class AbstractVehicle implements Movable
{
public Location location;
public Time time;
double direction;
public final int speed;
public AbstractVehicle(int speed)
{
if(speed<=0)
speed=10;
this.speed=speed;
}
public int getSpeed()
{
return speed;
}
public void setLocation(Location location)
{
this.location=location;
}
public void setTime(Time time)
{
this.time=time;
}
public Location getLocation()
{
return location;
}
public Time getTime()
{
return time;
}
public void pointTo(Location where)
{
direction=location.getDirectionFrom(where);
}
public void move(Time until)
{
double dx,dy;
int howLong;
howLong=time.compareTo(until);
dx=Math.sin(direction)*howLong/60;
dy=Math.cos(direction)*howLong/60;
if(howLong>0)
{
time=new Time(until);
location=new Location(location.getX()+dx,location.getY()+dy);
}
}
public void move(double howFar)
{
double dx,dy;
dx=Math.sin(direction)*howFar;
dy=Math.cos(direction)*howFar;
location=new Location(location.getX()+dx,location.getY()+dy);
}
}
這是接口可移動:
package TruckingCompany;
public interface Movable
{
public int getSpeed();
public void setLocation(Location location);
public void setTime(Time time);
public Location getLocation();
public Time getTime();
public void pointTo(Location where);
public void move(Time until);
public void move(double howFar);
}
這是Java和其它OOP語言對我來說是恆定的問題像C++一樣。
的問題是:
- 是正確的,使類AbstractVehicle具有類型時間的對象?
- 它能從時間繼承嗎?
在像C這樣的過程式編程中,我可以編寫一個程序,所有我不得不擔心的是有效性,以及使他工作的acode。
但是這種情況下也存在概念錯誤,所以有一條規則要知道我在做什麼從概念上說是對的?因此,例如有人可能會說車輛不應該有一個時間對象,因爲所有的車輛不能有不同的時間。
但我沒有得到標準:什麼時候放置HAVE關係而不是繼承,什麼時候不使用HAVE關係,只是修改該字段的父類。
這種情況下,車輛不能有時間類型的對象,並可能只有一個方法move(double howLong)
表明它必須移動的分鐘。我也可以這樣做。 但是爲什麼?選擇什麼標準?
當你看一輛車時,什麼是*時間*?你的車**有一個**時間,但是,老實說,我不知道它是什麼(某種時間)。 – 2012-03-04 13:00:50
這是我做的一個類:http://pastebin.com/XN0xvFjh – 2012-03-04 13:48:14