I had to do this exercise for a further education in which I'm currently enrolled in:
Write a Java class "Air Plane". Object-property names and types are given and compulsory. Write the according constructor and getter-, setter-method. Check within the constructor the given values for being valid.
Moreover are the following methods to implement:
info
load
fillUp
fly
getTotalWeight
getMaxReach
Further requirements concerning the implementation of the methods I have written into my code as comments.
Here's my Plane-class
package plane; public class Plane { private double maxWeight; private double emptyWeight; private double loadWeight; private double travelSpeed; private double flyHours; private double consumption; private double maxFuel; private double kerosinStorage; public Plane( double maxWeight, double emptyWeight, double loadWeight, double travelSpeed, double flyHours, double consumption, double maxFuel, double kerosinStorage ) { this.maxWeight = maxWeight; this.emptyWeight = emptyWeight; this.loadWeight = loadWeight; this.travelSpeed = travelSpeed; this.flyHours = flyHours; this.consumption = consumption; this.maxFuel = maxFuel; this.kerosinStorage = kerosinStorage < this.maxFuel ? kerosinStorage : this.maxFuel; } public double getMaxWeight() { return maxWeight; } public double getEmptyWeight() { return emptyWeight; } public double getLoadWeight() { return loadWeight; } public double getTravelSpeed() { return travelSpeed; } public double getFlyHours() { return flyHours; } public double getConsumption() { return consumption; } public double getMaxFuel() { return maxFuel; } public double getKerosinStorage() { return kerosinStorage; } public void setMaxWeight(double maxWeight) { this.maxWeight = maxWeight; } public void setEmptyWeight(double emptyWeight) { this.emptyWeight = emptyWeight; } public void setLoadWeight(double loadWeight) { this.loadWeight = loadWeight; } public void setTravelSpeed(double travelSpeed) { this.travelSpeed = travelSpeed; } public void setFlyHours(double flyHours) { this.flyHours = flyHours; } public void setConsumption(double consumption) { this.consumption = consumption; } public void setMaxFuel(double maxFuel) { this.maxFuel = maxFuel; } public void setKerosinStorage(double kerosinStorage) { this.kerosinStorage = this.kerosinStorage + kerosinStorage > maxFuel ? maxFuel : this.kerosinStorage + kerosinStorage; } /* Returns the total weight of the plane. Which is: emptyWeight + weight of load + weight of kerosin. Expect 1 liter Kerosin as 0.8 kg. */ public double getTotalWeight () { return emptyWeight + loadWeight + (kerosinStorage * 0.8); } /* How far can the plane fly with the current kerosin storage? */ public double getMaxReach () { return (kerosinStorage / consumption) * travelSpeed; } /* Prevent flying further then possible (with the current kerosin) ! */ public boolean fly (double km) { if (km <= 0 || getMaxReach() < km || getTotalWeight() > maxWeight) { return false; } flyHours += (km / travelSpeed); kerosinStorage -= (km / travelSpeed) * consumption; return true; } /* ! The parameter 'liter' can be a negative number. Doesn't have to be overfilled. Prevent a negative number as value of the 'kerosinStorage' property ! */ public void fillUp (double liter) { if ((kerosinStorage + liter) > maxFuel) { kerosinStorage = maxFuel; } else if ((kerosinStorage + liter) < 0) { kerosinStorage = 0; } else { kerosinStorage += liter; } } /* Prevent illogical value-assignments ! */ public boolean load (double kg) { if ((loadWeight + emptyWeight + kg) > maxWeight) { return false; } else if ((emptyWeight + kg) < 0) { loadWeight = 0; return true; } else { loadWeight += kg; return true; } } // Display flying hours, kerosin storage & total weight on t. terminal. public void info () { System.out.println("Flying hours: " + flyHours + ", Kerosin: " + kerosinStorage + ", Weight: " + getTotalWeight()); } } And my Plane-test class:
package plane; public class TestPlane { public static void main (String[] args) { Plane jet = new Plane( 70000, 35000, 10000, 800, 500, 2500, 25000, 8000); jet.info(); jet.setKerosinStorage(1000); System.out.println(jet.getKerosinStorage()); System.out.println(jet.getTotalWeight()); System.out.println("Maximal reach: " + jet.getMaxReach()); System.out.println("Fly hours 1: " + jet.getFlyHours()); jet.fly(5000); System.out.println("Fly hours 1: " + jet.getFlyHours()); jet.load(10000); jet.info(); } } They let automated tests run upon the code. It passed that test but I'm still not sure about it.
So therefore: I would appreciate your comments and hints concerning my implementation of the described task.