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

[Java] [Visitor Pattern] Given the files below, write all visitor classes so tha

ID: 3735294 • Letter: #

Question

[Java] [Visitor Pattern]

Given the files below, write all visitor classes so that the demo gives the following output.

Incomplete code: drive.google.com/drive/folders/16dmB8aMlggE54Jv4wK08jCyENRoWlHyJ?usp=sharing

Visiting front left wheel

Visiting front right wheel

Visiting back left wheel

Visiting back right wheel

Visiting body

Visiting engine

Visiting car

Kicking my front left wheel

Kicking my front right wheel

Kicking my back left wheel

Kicking my back right wheel

Waxing my body

Starting my engine

Starting my car

Explanation / Answer

Hello, I have completed your code. Created CarElementPrintVisitor and CarElementDoVisitor classes, implemented the overridden methods to print out proper messages to the console, and left all the other classes unchanged. Please find the code below.

// CarElementPrintVisitor.java

package visitor;

public class CarElementPrintVisitor implements CarElementVisitor {

                @Override

                public void visit(Wheel wheel) {

                                //displaying visiting wheel name

                                System.out.println("Visiting " + wheel.getName()+" wheel");

                }

                @Override

                public void visit(Engine engine) {

                                System.out.println("Visiting engine");

                }

                @Override

                public void visit(Body body) {

                                System.out.println("Visiting body");

                }

                @Override

                public void visit(Car car) {

                                System.out.println("Visiting car");

                }

}

// CarElementDoVisitor.java

package visitor;

public class CarElementDoVisitor implements CarElementVisitor {

                @Override

                public void visit(Wheel wheel) {

                                //displaying kicking wheel name

                                System.out.println("Kicking my "+wheel.getName()+" wheel");

                }

                @Override

                public void visit(Engine engine) {

                                //displaying engine start message

                                System.out.println("Starting my engine");

                }

                @Override

                public void visit(Body body) {

                                //displaying body waxing message

                                System.out.println("Waxing my body");

                }

                @Override

                public void visit(Car car) {

                                //displaying car starting message

                                System.out.println("Starting my car");

                }

}

// VisitorDemo.java (unchanged)

package visitor;

/**

*

* @author boonjv

*/

public class VisitorDemo {

    static public void main(String[] args){

        Car car = new Car();

        car.accept(new CarElementPrintVisitor());

        car.accept(new CarElementDoVisitor());

    }

}

//Body.java (unchanged)

package visitor;

/**

*

* @author boonjv

*/

class Body implements CarElement {

    public void accept(CarElementVisitor visitor) {

        visitor.visit(this);

    }

}

// Car.java (unchanged)

package visitor;

/**

*

* @author boonjv

*/

class Car implements CarElement{

    CarElement[] elements;

    public Car() {

        this.elements = new CarElement[]

          { new Wheel("front left"), new Wheel("front right"),

            new Wheel("back left") , new Wheel("back right"),

            new Body(), new Engine() };

    }

    public void accept(CarElementVisitor visitor) {               

        CarElement[] temp = elements.clone();

        for (int i = 0; i < temp.length; i++)

            temp[i].accept(visitor);

        visitor.visit(this);

    }

}

// Engine.java (unchanged)

package visitor;

/**

*

* @author boonjv

*/

class Engine implements CarElement {

    public void accept(CarElementVisitor visitor) {

        visitor.visit(this);

    }

}

// Wheel.java (unchanged)

package visitor;

/**

*

* @author boonjv

*/

class Wheel implements CarElement {

    private String name;

    public Wheel(String name) {

        this.name = name;

    }

    public String getName() {

        return this.name;

    }

    public void accept(CarElementVisitor visitor) {

        visitor.visit(this);

    }

}

// CarElementVisitor.java (unchanged)

package visitor;

/**

*

* @author boonjv

*/

interface CarElementVisitor {

    void visit(Wheel wheel);

    void visit(Engine engine);

    void visit(Body body);

    void visit(Car car);

}

//CarElement.java (unchanged)

package visitor;

/**

*

* @author boonjv

*/

interface CarElement {

    void accept(CarElementVisitor visitor);

}

/*OUTPUT*/

Visiting front left wheel

Visiting front right wheel

Visiting back left wheel

Visiting back right wheel

Visiting body

Visiting engine

Visiting car

Kicking my front left wheel

Kicking my front right wheel

Kicking my back left wheel

Kicking my back right wheel

Waxing my body

Starting my engine

Starting my car

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