I am stuck at a homework problem.
It asks me to design interfaces Drawable, Rotatable, Resizable and Sounds. Develop a progrma that does the below.
An Animal class that will have a name attribute and setter/getter methods for name. Animal can make sounds and is drawable, rotatable, and resizable. A Vehicle class that have name and age attributes and setter/getter methods for name and age. Vehicle can also make sounds and is drawable, rotatable, and resizable as well. Create a collection of 2 vehicles and 2 animals stored in the same array.
I have created the interfaces:
interface Drawable
{
void drawObject();
}
interface Rotatable
{
void rotateObject();
}
interface Resizable
{
void resizeObject();
}
interface Sounds
{
void playSound();
}
Parents classes (Animal and Vehicle) and the child classes (Panda and Tiger for Animal, Honda and Toyota for Vehicle).
abstract class Animal implements Drawable, Rotatable, Resizable, Sounds
{
String name;
public abstract void setName();
public abstract String getName();
public abstract void drawObject();
public abstract void rotateObject();
public abstract void resizeObject();
public abstract void playSound();
}
class Panda extends Animal
{
public void setName()
{
System.out.println("Panda's name is Bao Bao");
}
public String getName()
{
return name;
}
public void drawObject()
{
System.out.println("Drawing a Panda");
}
public void rotateObject()
{
System.out.println("Rotating a Panda");
}
public void resizeObject()
{
System.out.println("Resizing a Panda");
}
public void playSound()
{
System.out.println("Panda sound");
}
}
class Tiger extends Animal
{
public void setName()
{
System.out.println("Tiger's name is Si Si");
}
public String getName()
{
return name;
}
public void drawObject()
{
System.out.println("Drawing a Tiger");
}
public void rotateObject()
{
System.out.println("Rotating a Tiger");
}
public void resizeObject()
{
System.out.println("Resizing a Tiger");
}
public void playSound()
{
System.out.println("Tiger sound");
}
}
abstract class Vehicle implements Drawable, Rotatable, Resizable, Sounds
{
String name;
int age;
public abstract void setName();
public abstract String getName();
public abstract void setAge();
public abstract int getAge();
public abstract void drawObject();
public abstract void rotateObject();
public abstract void resizeObject();
public abstract void playSound();
}
class Honda extends Vehicle
{
public void setName()
{
System.out.println("Honda's name is Civic");
}
public String getName()
{
return name;
}
public void setAge()
{
System.out.println("Honda is 10 years old");
}
public int getAge()
{
return age;
}
public void drawObject()
{
System.out.println("Drawing a Honda");
}
public void rotateObject()
{
System.out.println("Rotating a Honda");
}
public void resizeObject()
{
System.out.println("Resizing a Honda");
}
public void playSound()
{
System.out.println("Honda sound");
}
}
class Toyota extends Vehicle
{
public void setName()
{
System.out.println("Toyota's name is Camry");
}
public String getName()
{
return name;
}
public void setAge()
{
System.out.println("Honda is 1 year old");
}
public int getAge()
{
return age;
}
public void drawObject()
{
System.out.println("Drawing a Toyota");
}
public void rotateObject()
{
System.out.println("Rotating a Toyota");
}
public void resizeObject()
{
System.out.println("Resizing a Toyota");
}
public void playSound()
{
System.out.println("Toyota sound");
}
}
In my main method I was able to create 2 arrays and loop through each of them to display the output. My question is how I can go about combining the 2 different classes in one array and run the loop.
import java.util.Arrays;
public class ManipulateAnimals
{
public static void main(String[] args)
{
Animal[] animal = {new Panda(), new Tiger()};
Vehicle[] vehicle = {new Honda(), new Toyota()};
for(int i = 0; i < animal.length; i++)
{
animal[i].setName();
animal[i].getName();
animal[i].drawObject();
animal[i].rotateObject();
animal[i].resizeObject();
animal[i].playSound();
System.out.println(" ");
}
for(int i = 0; i < vehicle.length; i++)
{
vehicle[i].setName();
vehicle[i].getName();
vehicle[i].setAge();
vehicle[i].getAge();
vehicle[i].drawObject();
vehicle[i].rotateObject();
vehicle[i].resizeObject();
vehicle[i].playSound();
System.out.println(" ");
}
}
}