<h2>
Answer:</h2>
<u />
========= Shape.java ===========
//import the Scanner class
import java.util.Scanner;
public class Shape{
//required fields
private String shape;
private double area;
private double perimeter;
//default constructor
public Shape(){
this.shape = "unknown";
this.area = 0.0;
this.perimeter = 0.0;
}
//constructor with one parameter
public Shape(String shape){
this.setShape(shape);
this.area = 0.0;
this.perimeter = 0.0;
}
//accessors and mutators
public void setShape(String shape){
this.shape = shape;
}
public String getShape(){
return this.shape;
}
public double getPerimeter(){
return this.perimeter;
}
public double getArea(){
return this.area;
}
public void setPerimeter(Scanner scr){
if(this.getShape().equals("circle")){
System.out.println("Enter the radius of the circle");
double radius = scr.nextDouble();
this.perimeter = 2 * 3.142 * radius;
}
else if(this.getShape().equals("rectangle")){
System.out.println("Enter the width");
double width = scr.nextDouble();
System.out.println("Enter the height");
double height = scr.nextDouble();
this.perimeter = 2 * (width + height);
}
else if(this.getShape().equals("square")){
System.out.println("Enter the height or width");
double height = scr.nextDouble();
this.perimeter = 4 * height;
}
else if(this.getShape().equals("unknown")){
System.out.println("You must define a shape first before calculating perimeter");
this.perimeter = 0.0;
}
else {
System.out.println("You must define a shape first before calculating perimeter");
this.perimeter = 0.0;
}
}
public void setArea(Scanner scr){
if(this.getShape().equals("circle")){
System.out.println("Enter the radius of the circle");
double radius = scr.nextDouble();
this.area = 3.142 * radius * radius;
}
else if(this.getShape().equals("rectangle")){
System.out.println("Enter the width");
double width = scr.nextDouble();
System.out.println("Enter the height");
double height = scr.nextDouble();
this.area = width * height;
}
else if(this.getShape().equals("square")){
System.out.println("Enter the height or width");
double height = scr.nextDouble();
this.area = height * height;
}
else if(this.getShape().equals("unknown")){
System.out.println("You must define a shape first before calculating area");
this.area = 0.0;
}
else {
System.out.println("You must define a shape first before calculating area");
this.area = 0.0;
}
}
//Own methods
//1. Method to show the properties of a shape
public void showProperties(){
System.out.println();
System.out.println("The properties of the shape are");
System.out.println("Shape : " + this.getShape());
System.out.println("Perimeter : " + this.getPerimeter());
System.out.println("Area : " + this.getArea());
}
//2. Method to find and show the difference between the area and perimeter of a shape
public void getDifference(){
double diff = this.getArea() - this.getPerimeter();
System.out.println();
System.out.println("The difference is " + diff);
}
}
========= ShapeTest.java ===========
import java.util.Scanner;
public class ShapeTest {
public static void main(String [] args){
Scanner scanner = new Scanner(System.in);
// create an unknown shape
Shape shape_unknown = new Shape();
//get the shape
System.out.println("The shape is " + shape_unknown.getShape());
//set the area
shape_unknown.setArea(scanner);
//get the area
System.out.println("The area is " + shape_unknown.getArea());
//set the perimeter
shape_unknown.setPerimeter(scanner);
//get the perimeter
System.out.println("The perimeter is " + shape_unknown.getPerimeter());
// create another shape - circle
Shape shape_circle = new Shape("circle");
//set the area
shape_circle.setArea(scanner);
//get the area
System.out.println("The area is " + shape_circle.getArea());
//set the perimeter
shape_circle.setPerimeter(scanner);
//get the area
System.out.println("The perimeter is " + shape_circle.getArea());
//get the properties
shape_circle.showProperties();
//get the difference between area and perimeter
shape_circle.getDifference();
}
}
<h2>
Sample output:</h2>
The shape is unknown
You must define a shape first before calculating area
The area is 0.0
You must define a shape first before calculating perimeter
The perimeter is 0.0
Enter the radius of the circle
>> 12
The area is 452.448
Enter the radius of the circle
>> 12
The perimeter is 452.448
The properties of the shape are
Shape : circle
Perimeter : 75.408
Area : 452.448
The difference is 377.03999999999996
<h2>
Explanation:</h2>
The code above is written in Java. It contains comments explaining important parts of the code. Please go through the code for more explanations. For better formatting, the sample output together with the code files have also been attached to this response.
<span class="sg-text sg-text--link sg-text--bold sg-text--link-disabled sg-text--blue-dark">
java
</span>
<span class="sg-text sg-text--link sg-text--bold sg-text--link-disabled sg-text--blue-dark">
java
</span>