Question: Java program: In this project you will write the code to implement the following Shape hierarchy. In this exercise, Shape shall be defined as an

Java program:

In this project you will write the code to implement the following Shape hierarchy. In this exercise, Shape shall be defined as an abstract class, which contains:

- Two protected instance variables color(String) and filled(boolean).

The protected variables can be accessed by its subclasses and classesin the same package. They are denoted with a '#' sign in the class diagram.

- Getter and setter for all the instance variables, and toString().

- Two abstract methods getArea() and getPerimeter() (shown in italics in the class diagram).

- The subclasses Circle and Rectangle shall override the abstract methods getArea() and g etPerimeter() and provide the proper implementation. They also override the toString().

Java program: In this project you will write the code to implement

Write a test class to test these statements involving polymorphism and explain the outputs. Some statements may trigger compilation errors. Explain the errors, if any. Include the answers as comments inside the code:

Shape s1 = new Circle(5.5, "RED", false); // Upcast Circle to Shape

System.out.println(s1); // which version?

System.out.println(s1.getArea()); // which version?

System.out.println(s1.getPerimeter()); // which version?

System.out.println(s1.getColor());

System.out.println(s1.isFilled());

System.out.println(s1.getRadius());

Circle c1 = (Circle)s1; // Downcast back to Circle

System.out.println(c1);

System.out.println(c1.getArea());

System.out.println(c1.getPerimeter());

System.out.println(c1.getColor());

System.out.println(c1.isFilled());

System.out.println(c1.getRadius());

Shape s2 = new Shape();

Shape s3 = new Rectangle(1.0, 2.0, "RED", false); // Upcast

System.out.println(s3); System.out.println(s3.getArea());

System.out.println(s3.getPerimeter());

System.out.println(s3.getColor());

System.out.println(s3.getLength());

Rectangle r1 = (Rectangle)s3; // downcast

System.out.println(r1);

System.out.println(r1.getArea());

System.out.println(r1.getColor());

System.out.println(r1.getLength());

Shape s4 = new Square(6.6); // Upcast

System.out.println(s4);

System.out.println(s4.getArea());

System.out.println(s4.getColor());

System.out.println(s4.getSide());

// Take note that we downcast Shape s4 to Rectangle,

// which is a superclass of Square, instead of Square

Rectangle r2 = (Rectangle)s4;

System.out.println(r2);

System.out.println(r2.getArea());

System.out.println(r2.getColor());

System.out.println(r2.getSide());

System.out.println(r2.getLength());

// Downcast Rectangle r2 to Square

Square sq1 = (Square)r2;

System.out.println(sq1);

System.out.println(sq1.getArea());

System.out.println(sq1.getColor());

System.out.println(sq1.getSide());

System.out.println(sq1.getLength());

> Shape #color:String #filled:boolean +Shape() +Shape (color:String, filled:boolean) +getColor(): String +set Color (color:String):void +isFilled(): boolean +setFilled(filled: boolean):void +getArea(): double +getPerimeter:double +toString(): String Circle #radius: double +Circle() +Circle(radius: double) +Circle(radius: double, color: String, filled:boolean) +getRadius(): double +setRadius(radius: double):void +getArea(): double +getPerimeter(): double +toString(): String Rectangle #width:double #length:double +Rectangle() +Rectangle(width:double, length: double) +Rectangle(width:double, length: double, color: String, filled:boolean) +getWidth(): double +setWidth(width: double):void +getLength(): double +setLength(legnth:double):void +getArea(): double +getPerimeter() : double +toString(): String Square +Square) +Square(side: double) +Square(side:double, color:String, filled : boolean) +getSide(): double +setSide (side: double):void +setWidth(side: double):void +setLength(side: double):void +toString(): String

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!