Logistiksystem Methode equals und hashcode
Hallo Guten Tag,
Kann mir jemand bitte hier weiter Helfen, und zwar komme ich nicht darauf wie es lösen sollte, . Ich hoffe das ihr es lesen könnt, wenn nicht kann mir jemand bitte sagen wie ich es am besten den Code schreiben soll.
lG
louis
In dieser Aufgabe werden Sie das bekannte Logistiksystem weiter ausbauen und einen Zustellungsalgorithmus implementieren. Entsprechend der Jahreszeit stellt ein Weihnachtsmann die Lieferungen zu und Straßen müssen nicht berücksichtigt werden.
Aufgabe 6.1 – DeliveryManager & Delivery Importieren dazu zunächst das Projekt „Aufgabe 6 - Logistics“ in Ihren Workspace. Für den Zustellungsalgrithmus müssen die Klassen DeliveryManager und Delivery zunächst erweitert werden. Implementieren Sie als erstes die Methode removeDelivery() in der Klasse DelieryManager. Die Methode soll eine gegebene Lieferung im Array der registrierten Lieferungen suchen und diese aus dem Array entfernen. Wird die gegebene Lieferung nicht gefunden, soll null zurückgegeben werden. Wird die Lieferung gefunden, soll das entsprechende Element im Array auf null gesetzt werden und die entfernte Lieferung soll zurückgegeben werden. Für das Suchen und Vergleichen von Lieferungen müssen Sie, je nach Lösungsansatz, die Methoden equals() und/oder hashCode() in der Klasse Delivery überschreiben
Hier ist die Klasse Delivery. Was gneau soll ich hier Überschreiben ?
Hallo Guten Tag,
Kann mir jemand bitte hier weiter Helfen, und zwar komme ich nicht darauf wie es lösen sollte, . Ich hoffe das ihr es lesen könnt, wenn nicht kann mir jemand bitte sagen wie ich es am besten den Code schreiben soll.
lG
louis
In dieser Aufgabe werden Sie das bekannte Logistiksystem weiter ausbauen und einen Zustellungsalgorithmus implementieren. Entsprechend der Jahreszeit stellt ein Weihnachtsmann die Lieferungen zu und Straßen müssen nicht berücksichtigt werden.
Aufgabe 6.1 – DeliveryManager & Delivery Importieren dazu zunächst das Projekt „Aufgabe 6 - Logistics“ in Ihren Workspace. Für den Zustellungsalgrithmus müssen die Klassen DeliveryManager und Delivery zunächst erweitert werden. Implementieren Sie als erstes die Methode removeDelivery() in der Klasse DelieryManager. Die Methode soll eine gegebene Lieferung im Array der registrierten Lieferungen suchen und diese aus dem Array entfernen. Wird die gegebene Lieferung nicht gefunden, soll null zurückgegeben werden. Wird die Lieferung gefunden, soll das entsprechende Element im Array auf null gesetzt werden und die entfernte Lieferung soll zurückgegeben werden. Für das Suchen und Vergleichen von Lieferungen müssen Sie, je nach Lösungsansatz, die Methoden equals() und/oder hashCode() in der Klasse Delivery überschreiben
Code:
package de.tuberlin.mcc.prog1.logistics;
import java.awt.Dimension;
import de.tuberlin.mcc.prog1.logistics.deliveries.Delivery;
public class DeliveryManager {
/**
* Dimension of map
*/
Dimension dim = new Dimension(100, 100);
/**
* Registered deliveries
*/
Delivery[] deliveries = new Delivery[0];
/**
* Available locations
*/
static Location[] locations = LogisticsManager.locations;
/**
* Registers given deliveries
* @param delivery
* @param deliveries - deliveries to register
* @return
* @return
*/
Object removeDelivery(int[] delivery){
for(int i = 0; i <delivery.length;i++) {
if(delivery[i] = null) {
return null;
}else if (deliveries[i]) {
delivery[i] = 0;
return delivery[i];
}
}
}
public void registerDeliveries(Delivery... deliveries) { // hier habe ich es versucht :/
if (deliveries == null || deliveries.length == 0) {
return;
}
Delivery[] oldDeliveries = this.deliveries;
Delivery[] newDeliveries = new Delivery[oldDeliveries.length + deliveries.length];
for (int i = 0; i < newDeliveries.length; i++) {
if (i < oldDeliveries.length) {
newDeliveries[i] = oldDeliveries[i];
} else {
newDeliveries[i] = deliveries[i-oldDeliveries.length];
}
}
this.deliveries = newDeliveries;
//Remove leading null values in this.deliveries here
}
/**
* Removes a given Delivery from registered deliveries
* @param delivery - delivery to remove
* @return deleted delivery or null (if given delivery wasn't in array)
*/
public Delivery removeDelivery(Delivery delivery) {
return null;
}
/**
* Counts registered deliveries for location with given locationID
* (sender ID of delivery equals locationID)
* @param locationID - locationID of sender
* @return number of deliveries at given location
*/
public int countDeliveriesForLocation(int locationID) {
return 0;
}
/**
* Updates the receiver of a delivery by location id.
* @param index - Index position of delivery
* @param locationId - Id of location
*/
void setReceiverForDelivery(int index, int locationId) {
if (index >= 0 && index < deliveries.length) {
Location receiver = getLocationById(locationId);
if (receiver != null) deliveries[index].setReceiver(receiver);
}
}
/**
* Searches in Location[] locations (see above) for a location with given ID.
* @param id - Id of location to look up
* @return location with given id or null if there is no such location
*/
public static Location getLocationById(int id) {
for (Location l : locations) {
if (l != null && l.getId() == id) {
return l;
}
}
return null;
}
/**
* Prints all registered deliveries.
*/
public void printDeliveries() {
System.out.println("Registered Deliveries:");
for (int i = 0; i < deliveries.length; i++) {
if (deliveries[i] != null) {
System.out.println("[" + i + "]: " + deliveries[i].toString());
}
}
}
/**
* Returns array of locations
* @return array of locations
*/
public Location[] getLocations() {
return locations;
}
/**
* Returns registered deliveries
* @return array with registered deliveries
*/
public Delivery[] getDeliveries() {
return deliveries;
}
/**
* Returns dimension of map
* @return dimension of map
*/
public Dimension getDimension() {
return dim;
}
}
Hier ist die Klasse Delivery. Was gneau soll ich hier Überschreiben ?
Code:
package de.tuberlin.mcc.prog1.logistics.deliveries;
import de.tuberlin.mcc.prog1.logistics.Location;
public class Delivery {
/**
* 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;
/**
* Postage in cents.
*/
protected int postage;
/**
* Returns the receiver of delivery
* @return receiver of delivery
*/
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;
}
/**
* Returns the postage of delivery in cents
* @return postage of delivery in cents
*/
public int getPostage() {
return postage;
}
/**
* 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);
}
}