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

Imagine your project team is developing a Java application that will serve as an

ID: 3863806 • Letter: I

Question

Imagine your project team is developing a Java application that will serve as an educational tool to help children learn about various concepts such as vehicles, animals, sounds, etc. The application will have a need to draw various objects (e.g., animals, vehicles) on the video display as well as to rotate objects, resize objects, and play sounds that are associated with the objects. Your project manager has specified that all objects in the application should use a common interface for drawing, rotating, resizing, and playing sounds, and that these interfaces should be reusable for other application projects as well. Some future applications will need to make sounds, some will need drawing capability, some will need rotating capability, some will need resizing capability, and some will need all capabilities. A method called drawObject() will be used for drawing objects, a method called rotateObject() will be used for rotating objects, a method called resizeObject() will be used for resizing objects, and a playSound() method will be used for playing sounds. 1. Design the interface classes Drawable, Rotatable, Resizable and Sounds. 2. Develop a program called ManipulateAnimals that does the following: An Animal class will be used to model some basic characteristics of animals for the application. An animal will have a name attribute and methods to set the name and get the name. Animals can make sounds and are drawable, rotatable, and resizable. A Vehicle class will be used to model some basic characteristics of vehicles. A vehicle will have a name and an age, and methods to get/set these attributes. Vehicles can also make sounds and are drawable, rotatable, and resizable. Create a collection of 2 vehicles and 2 animals stored in the same array. Loop through the array and execute the drawObject(), rotateObject(), resizeObject(), and playSound() methods polymorphically for each element in the array. The drawObject() method should simply display the message "Drawing a Vehicle" or "Drawing an Animal"; the rotateObject() method should display the message "Rotating a Vehicle" or "Rotating an Animal"; and the playSound() method should display the message "Animal sound" or "Vehicle sound", depending upon the type of element that is in the array. The resizeObject() method should display "Resizing a Vehicle" or "Resizing an Animal".

Explanation / Answer


import java.util.ArrayList;
import java.util.Collection;

/**
*
* @author Sam
*/

interface Drawable{
    void drawObject();
}
interface Rotatable{
    void rotateObject();
}
interface Resizeable{
    void resizeObject();
}
interface Sound{
    void makeSound();
}


abstract class Mutable implements Rotatable, Resizeable, Drawable, Sound{
    String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
  
}

class Animal extends Mutable{

    public Animal(String name) {
        this.name = name;
    }
  
    @Override
    public void drawObject() {
        System.out.println("Drawing Animal");
    }

    @Override
    public void rotateObject() {
        System.out.println("Rotating Animal");
    }

    @Override
    public void resizeObject() {
        System.out.println("Resizing Animal");
    }

    @Override
    public void makeSound() {
        System.out.println("Making sound of Animal");
    }
}


class Vehicle extends Mutable{
    int age;

    public Vehicle(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
  
    @Override
    public void drawObject() {
        System.out.println("Drawing Car");
    }

    @Override
    public void rotateObject() {
        System.out.println("Rotating Car");
    }

    @Override
    public void resizeObject() {
        System.out.println("Resizing Car");
    }

    @Override
    public void makeSound() {
        System.out.println("Making sound of Car");
    }
}

/**
*
* @author Sam
*/
public class ManipulateAnimal {
    private static final Collection<Mutable> collection = new ArrayList<>(4);
    public static void main(String[] args) {
        collection.add(new Animal("Anumal A"));
        collection.add(new Animal("Anumal B"));
      
        collection.add(new Vehicle("Vehicle X", 5));
        collection.add(new Vehicle("Vehicle Y", 2));
      
        for (Mutable m:collection){
            m.drawObject();
            m.resizeObject();
            m.rotateObject();
            m.makeSound();
        }
    }
}

To compile the code you need to create a new file named :'ManipulateAnimal.java' and copy the whole code in the file.

What ever operating system you are using you need to have javac System Path.

Open Command Terminal

navigate to folder where you saved ManipulateAnimal.java
Type javac ManipulateAnimal.java
                this will create 8 .class files
Now type java ManipulateAnimal
                this will execute ManipulateAnimal.class file which contains the main method

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