Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Java Structural Recursion - A train. Write a set of classes that model a train -

ID: 3753598 • Letter: J

Question

Java Structural Recursion - A train. Write a set of classes that model a train - starting with an abstract class called TrainCar as follows:

public abstract class TrainCar{

protected double itsDistanceFromHome;

protected TrainCar isNextConnectedCar;

public TrainCar(TrainCar nextCar){

itsNextConnectedCar = nextCar;

itsDistanceFromHome = 0.0;

public abstract void advance(double howFar);

public abstract Boolean isMemberOfValidTrain();

}

Using TrainCar, extend it into Engine, BoxCar, and Caboose with their own constructors and implementation of the advance and isMemberOfValidTrain methods. Then write a class Train that only knows about the Engine. A valid train consists of an engine followed by some number of BoxCars ending with a Caboose. Calling isMemberOfValidTrain on the Engine should return true if this actually is the setup and false if it is not. Calling advance(double) on the engine should advance the entire train.

Explanation / Answer

ANS:

CODE:

package engine;

public abstract class TrainCar{

protected double itsDistanceFromHome;

protected TrainCar isNextConnectedCar;

public TrainCar(TrainCar nextCar){

this.isNextConnectedCar = nextCar;

this.itsDistanceFromHome = 0.0;

}

public abstract void advance(double howFar);

public abstract Boolean isMemberOfValidTrain();

}

// 2.

package engine;

public class Engine extends TrainCar {

public Engine(TrainCar nextCar) {

super(nextCar);

}

@Override

public void advance(double howFar) {

super.itsDistanceFromHome+=this.itsDistanceFromHome;

}

@Override

public Boolean isMemberOfValidTrain() {

if(this.isNextConnectedCar.equals(super.isNextConnectedCar)) return true;

return false;

}

}

//3.

package engine;

public class BoxCar extends TrainCar {

public BoxCar(TrainCar nextCar) {

super(nextCar);

// TODO Auto-generated constructor stub

}

@Override

public void advance(double howFar) {

super.itsDistanceFromHome+=this.itsDistanceFromHome;

}

@Override

public Boolean isMemberOfValidTrain() {

if(this.isNextConnectedCar.equals(super.isNextConnectedCar)) return true;

return false;

}

?

?

}

//4.

package engine;

public class Caboose extends TrainCar {

public Caboose(TrainCar nextCar) {

super(nextCar);

// TODO Auto-generated constructor stub

}

@Override

public void advance(double howFar) {

super.itsDistanceFromHome+=this.itsDistanceFromHome;

}

@Override

public Boolean isMemberOfValidTrain() {

if(this.isNextConnectedCar.equals(super.isNextConnectedCar)) return true;

return false;

}

?

}

//5.

package engine;

public class Train {

Engine engine;

public Engine getEngine() {

return engine;

}

public void setEngine(Engine engine) {

this.engine = engine;

}

}

//6.

package engine;

public class Test {

public static void main(String[] args) {

TrainCar tc=null;

Train t=new Train();

TrainCar tc1= new TrainCar(tc) {

@Override

public void advance(double howFar) {

super.itsDistanceFromHome+=this.itsDistanceFromHome;

}

@Override

public Boolean isMemberOfValidTrain() {

if(this.isNextConnectedCar.equals(super.isNextConnectedCar)) return true;

return false;

}

};

t.setEngine(new Engine(tc1));

boolean var= t.engine.isMemberOfValidTrain();

System.out.println(var);

}

}

PLEASE RATE THUMBSUP PLZZZZZZZZZZZZZZZZZZZZZZZZ

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote