
Muhammad R.
asked 11/19/20Write code using following class diagram. Is it possible to extract polymorphic behavior from the given class design?
Animal
+age: Int
+gender: String
+isMammal()
+talk()
Zoo
+name: String
+Address: String
+animals: Animals[]
+listAllAnimals()
Duck
+beakColor: String = “yellow”
+swim()
+quack()
+talk()
Fish
+sizeInFeet: Int
+canEat: boolean
-swim()
+quack()
+talk()
1 Expert Answer

Patrick B. answered 11/19/20
Math and computer tutor/teacher
//**** Animal.java *****//
class Animal
{
protected int age;
protected boolean gender;
protected boolean mammal;
public Animal( int Age, boolean Gender, boolean Mammal)
{
this.age = Age;
this.gender = Gender;
this.mammal = Mammal;
}
public void SetAge(int n) { this.age = n; }
public void SetGenderMale() { this.gender=false; }
public void SetGenderFemale() { this.gender=true; }
public void SetMammal(boolean Mammal) { this.mammal = Mammal; }
public int GetAge() { return(age); }
public boolean IsMammal() { return(mammal); }
public boolean GetGender() { return(gender); }
public void talk() { }
public String SerializeToCSV()
{
return(
new String (
age + "," + gender + "," + mammal
)
);
}
}
//***** Duck.java *************//
class Duck extends Animal
{
protected String beakColor;
public Duck( String beak_color,int Age, boolean Gender, boolean Mammal)
{
super(Age,Gender,Mammal);
this.beakColor = beak_color;
}
public String GetBeakColor() { return(beakColor); }
public void swim() { System.out.println("swimming..."); }
public void quack() { System.out.println("quack"); }
@Override public void talk() { System.out.println("quack"); }
@Override public String SerializeToCSV()
{
return(
new String (
age + "," + gender + "," + mammal + "," + beakColor
)
);
}
}
//******** Fish.java *********//
class Fish extends Animal
{
protected int size;
protected boolean edible;
Fish (int n, boolean edible, int Age, boolean Gender, boolean Mammal)
{
super(Age,Gender,Mammal);
size = n;
this.edible = edible;
}
public int GetSize() { return(size); }
public boolean IsEdible() { return(edible); }
public void swim() { System.out.println("swimming...."); }
@Override public void talk() { System.out.println(" fish cannot talk "); }
@Override public String SerializeToCSV()
{
return(
new String (
age + "," + gender + "," + mammal + "," + size + "," + edible
)
);
}
}
//**** Zoo.java *********//
class Zoo
{
private String name;
private String address;
private Animal animals[];
private int numAnimals;
Zoo() { name=address=null; numAnimals=0; animals=null; }
public int GetNumAnimals() { return(numAnimals); }
public String GetZooName() { return(name); }
public String GetAddress() { return(address); }
public void SetName(String zooName) { this.name = new String(zooName) ; }
public void SetAddress(String zooAddr) { this.address = new String(zooAddr); }
public void SetAnimals( Animal animalArray[])
{
numAnimals = animalArray.length;
animals = animalArray;
}
public Animal IndexerGetIndexAt(int iIndexPos)
{
Animal animalReturn = null;
if ((iIndexPos>=0) && (iIndexPos<numAnimals))
{
animalReturn = animals[iIndexPos];
}
return(animalReturn);
}
public void listAllAnimals()
{
for (int iLoop=0; iLoop<numAnimals; iLoop++)
{
String animalBuffCSV = animals[iLoop].SerializeToCSV();
System.out.println(animalBuffCSV);
}
}
}
//******* main ***********//
class ZooMain
{
public static void main(String args[])
{
Duck duck = new Duck("yellow",1,true,true);
Fish fish = new Fish(6,true,1,true,true);
Zoo zoo = new Zoo();
zoo.SetName("Generic Zoo");
zoo.SetAddress("zoo address");
Animal animalArray [] = new Animal[2];
animalArray[0] = duck;
animalArray[1] = fish;
zoo.SetAnimals(animalArray);
zoo.listAllAnimals();
}
}
Still looking for help? Get the right answer, fast.
Get a free answer to a quick problem.
Most questions answered within 4 hours.
OR
Choose an expert and meet online. No packages or subscriptions, pay only for the time you need.
Patrick B.
source code uploaded to RESOURCES section under this link..11/19/20