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: 3682827 • 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

package p1caccia.test;

public class Animal implements ManipulateAnimals{

   private String name;
   private Integer age;

   public String getName() {
       return name;
   }

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

   public Integer getAge() {
       return age;
   }

   public void setAge(Integer age) {
       this.age = age;
   }

   public Animal(String name, Integer age) {
       super();
       this.name = name;
       this.age = age;
   }

   @Override
   public void resizeObject() {
       System.out.println(this.getClass().getSimpleName()+" Resized");
   }

   @Override
   public void rotateObject() {
       System.out.println(this.getClass().getSimpleName()+" rotate");
   }

   @Override
   public void playSound() {
       System.out.println(this.getClass().getSimpleName()+" makeSound");
   }

   @Override
   public void drawObject() {
       System.out.println(this.getClass().getSimpleName()+" draw");      
   }
}

package p1caccia.test;

import java.util.ArrayList;
import java.util.List;

public class Main {
  
   public static void main(String[] args) {
      
       List<ManipulateAnimals> list = new ArrayList<ManipulateAnimals>();
      
       list.add(new Animal("Boar", 13));
       list.add(new Animal("Dog", 23));
      
       list.add(new Vehicle("Car", 13));
       list.add(new Vehicle("Bus", 23));
      
      
       for(ManipulateAnimals activity : list){
           activity.drawObject();
           activity.playSound();
           activity.resizeObject();
           activity.rotateObject();
       }
      
   }
}

package p1caccia.test;

public interface ManipulateAnimals {

   public void resizeObject();

   public void rotateObject();

   public void playSound();

   public void drawObject();
}

package p1caccia.test;

public class Vehicle implements ManipulateAnimals {
   private String name;
   private Integer age;

   public String getName() {
       return name;
   }

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

   public Integer getAge() {
       return age;
   }

   public void setAge(Integer age) {
       this.age = age;
   }

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

   @Override
   public void resizeObject() {
       System.out.println(this.getClass().getSimpleName() + " Resized");
   }

   @Override
   public void rotateObject() {
       System.out.println(this.getClass().getSimpleName() + " rotate");
   }

   @Override
   public void playSound() {
       System.out.println(this.getClass().getSimpleName() + " makeSound");
   }

   @Override
   public void drawObject() {
       System.out.println(this.getClass().getSimpleName() + " draw");
   }

}

Let me know if you need any modification.

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