Next: Tutorial 13 More about references, Previous: Tutorial 11 References to another class, Up: J.T.W. Tutorials [Contents][Index]
Question 4.12.1: Write constructors for the classes SportsShoe and
Runner below, by looking at the main function to see how many
arguments each constructor has.
classSportsShoebeginpropertyString model; // what kind of shoe it ispropertydouble speedBoost; // the boosting factor of the shoe // constructor goes here: // Useful method for debuggingpublicmethodString toString()beginreturn "I am a shoe called " + model + " and my boosting factor is " + speedBoost;endendclassRunnerbeginprivatepropertyString name; // Runner's name.privatepropertyint speed; // speed of runner in km/hr.privatepropertySportsShoe shoes; // which shoe they are wearing. // constructor goes here: // Useful method for debuggingpublicmethodString toString()beginreturn"I am a runner and my name is " + name + " and my shoes are " + shoes;end/** *** This private method computeSpeed works out the runners speed, *** based on their basic speed and the speed boost due to the *** SportsShoe that they are currently wearing. */ // method goes here: /** ** Prints the result of racing two runners against each other. */functionvoid race(Runner r1, Runner r2)beginif(r1.computeSpeed()>r2.computeSpeed())thenbeginSystem.out.println("Runner " + r1.name + " beats " + r2.name);endelsebeginSystem.out.println("Runner " + r2.name + " beats " + r1.name);endend/** ** Swaps the shoes of two runners. */functionvoid swapShoes(Runner r1, Runner r2)beginvarSportsShoe tempShoe = r1.shoes; r1.shoes = r2.shoes; r2.shoes = tempShoe;endendclassRunnerTestbeginbeginMainvarSportsShoe nike = new SportsShoe("Nike NX-71", 2.0);varSportsShoe reebock = new SportsShoe("Reebock R20", 2.3);varSportsShoe puma = new SportsShoe("Puma P200-MMX",4.8);varRunner sg = new Runner("Speedy Gonzalez", 55, nike);varRunner sw = new Runner("Slick Willy", 49, reebock);varRunner fa = new Runner("Fat Albert", 15, puma); Runner.race(sg,sw); // Runner.race(sg,sw,fa); // sg.raceAgainst(sw);endMainend
Question 4.12.2: In the Runner class, write the private method
computeSpeed that has no arguments and returns a double-precision
floating point value that equals the runner’s running speed. Note that
the speed of a runner is determined by multiplying their speed
property with the speedBoost property of the shoes that they are
wearing. For example, Speedy Gonzalez’s running speed = 55 * 2.0 =
110.0.
Question 4.12.3: Fix the race method so that it checks for a draw.
Question 4.12.4: By copying the race method, write a three-parameter
race method for racing three runners against each other. Two methods
in the same class with the same name is called overloading in
J.T.W. and Java. Add a call to this method from the main function.
Question 4.12.5: What is the difference between a method and a
function? Write a one parameter method raceAgainst that behaves
exactly like two-parameter function race. There are two ways of doing
this, one is to optionally use the this keyword rather than one of the
parameters r1 or r2. The second way is for race to simply call race
using this as one of the arguments to the function.
Question 4.12.6: Is it true that any method can be re-worked into a
function and vice versa?
Question 4.12.7: The swapShoes method in the Runner class swaps the
shoes of two runners. Add some code to the main function to swap the
shoes of two runners and verify that the shoes do indeed get swapped.
Question 4.12.8: Write a method called swapNames that swaps the
names of two runners. You can put this function into any class but it
makes the most sense to put it into the Runner class since it has
two Runner parameters.
Question 4.12.9: Write a method swapSpeeds that swaps the speed
properties of two runners.
Next: Tutorial 13 More about references, Previous: Tutorial 11 References to another class, Up: J.T.W. Tutorials [Contents][Index]