jo Das ist die Oberklasse von der geerbt werden soll. Hier befindet sich ebenfalss die Instanzvariable Postage. In der nächsten Antwort füge ich den Code hinzu der erbt.
package de.tuberlin.mcc.prog1.logistics.deliveries;
import de.tuberlin.mcc.prog1.logistics.Location;
public class Delivery { // etwa package oder public
/**
* Delivery speed.
*/
static final int SPEED = 1000;
/**
* Sender of Delivery.
*/
private Location sender;
/**
* Receiver of delivery.
*/
private Location receiver;
/**
* Time of creation.
*/
private long date = System.currentTimeMillis();
/**
* Weight of delivery.
*/
private final double weight;
/**
* Portogebühr
*/
/*private*/ public int postage; //
hier noch unsicher, denke aber als Privat
/**
* Returns the receiver of delivery
*
@Return receiver of delivery
*/
public int getPostage() {
return postage;
}
public Location getReceiver() {
return receiver;
}
/**
* Updates the receiver of delivery
* @param receiver - new receiver
*/
public void setReceiver(Location receiver) {
if (receiver != null) {
this.receiver = receiver;
System.out.println("Updated receiver to " + receiver.getName());
}
}
/**
* Returns the weight of delivery
*
@Return weight of delivery
*/
public double getWeight() {
return weight;
}
/**
* Returns the sender of delivery
*
@Return sender of delivery
*/
public Location getSender() {
return sender;
}
/**
* Returns the creation time of delivery
*
@Return creation time of delivery
*/
public long getDate() {
return date;
}
/**
* Creates a delivery
* @param sender - sender of delivery
* @param receiver - receiver of delivery
* @param weight - weight of delivery
*/
protected Delivery(Location sender, Location receiver, double weight) {
this.sender = sender;
this.receiver = receiver;
this.date = System.currentTimeMillis();
this.weight = weight;
}
/**
* Returns the estimated delivery time
*
@Return estimated delivery time
*/
public long getEstimatedDeliveryTime() {
return this.date + getEstimatedDeliveryPeriod();
}
@Override
public String toString() {
long time = getEstimatedDeliveryTime() - System.currentTimeMillis();
if (time < 0) {
time = 0;
}
return "from " + sender.getName() + " to " + receiver.getName()
+ ", " + weight + "kg, arrival in " + time + "ms";
}
/**
* Calculates the estimated delivery period in ms
*
@Return delivery period in ms
*/
private long getEstimatedDeliveryPeriod() {
return (long) getDistance() * SPEED;
}
/**
* Calculates the distance between sender and receiver.
*
@Return distance between sender and receiver
*/
private double getDistance() {
int xdiff = sender.getxPosition() - receiver.getxPosition();
xdiff = Math.abs(xdiff);
int ydiff = sender.getyPosition() - receiver.getyPosition();
ydiff = Math.abs(ydiff);
return Math.sqrt(xdiff * xdiff + ydiff * ydiff);
}
}