A)Define a Rectangle class that extends GeometricObject. The class contains: 1.
ID: 3724173 • Letter: A
Question
A)Define a Rectangle class that extends GeometricObject. The class contains:
1. Two double data fields named side1 and side2 to denote the sides of the rectangle.
2. A no-arg constructor that creates a default rectangle with 1 for each side.
3. A constructor that creates a rectangle with the specified side1 and side2.
4. A method getArea() that returns the area of the rectangle.
5. A method getPerimeter() that returns the perimeter of the rectangle.
Given the code below:
public abstract class GeometricObject {
private String color = "white";
private boolean filled;
private java.util.Date dateCreated;
/** Construct a default geometric object */
protected GeometricObject() {
dateCreated = new java.util.Date();
}
/** Construct a geometric object with color and filled
value */
protected GeometricObject(String color, boolean filled) {
dateCreated = new java.util.Date();
this.color = color;
this.filled = filled;
}
/** Return color */
public String getColor() {
return color;
}
/** Set a new color */
public void setColor(String color) {
this.color = color;
}
/** Return filled. Since filled is boolean,
* the get method is named isFilled */
public boolean isFilled() {
return filled;
}
/** Set a new filled */
public void setFilled(boolean filled) {
this.filled = filled;
}
/** Get dateCreated */
public java.util.Date getDateCreated() {
return dateCreated;
}
@Override
public String toString() {
return "created on " + dateCreated + " color: " +
color +
" and filled: " + filled;
}
/** Abstract method getArea */
public abstract double getArea();
/** Abstract method getPerimeter */
public abstract double getPerimeter();
}
class Triangle extends GeometricObject {
private double side1 = 1.0, side2 = 1.0, side3 = 1.0;
/** Constructor */
public Triangle() {
}
/** Constructor */
public Triangle(double side1, double side2, double
side3) {
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
/** Override method findArea in GeometricObject */
public double getArea() {
double s = (side1 + side2 + side3) / 2;
return Math.sqrt(s * (s - side1) * (s - side2) * (s -
side3));
}
/** Override method findPerimeter in GeometricObject */
public double getPerimeter() {
return side1 + side2 + side3;
}
/** Override the toString method */
public String toString() {
// Implement it to return the three sides
return "Triangle: side1 = " + side1 + " side2 = " +
side2 +
" side3 = " + side3;
}
}
class Test {
public static void main(String[] args) {
GeometricObject gObjectArray [] = new GeometricObject [4];
//Complete your code here
gObjectArray[0] = new Triangle(9,5,7);
gObjectArray[1]=new Triangle();
gObjectArray[2]=new Circle();
gObjectArray[3]=new Circle(2,4,7);
//using loop calling the below print method
for(int i=0;i<gObjectArray.length;i++) {
System.out.println(gObjectArray[i]);
printAreaAndPerimeter(gObjectArray[i]);
}
}
private static void printAreaAndPerimeter(GeometricObject
gObject) {
//Complete your code here
System.out.println("Area : "+gObject.getArea());
System.out.println("Perimeter : "+gObject.getPerimeter());
System.out.println();
}
}
Explanation / Answer
/*Test java program that prints the object
* date with area and perimeter on Console.*/
//Test.java
class Test
{
public static void main(String[] args)
{
//Create an array of GeometricObject of size,4
GeometricObject gObjectArray [] =
new GeometricObject [4];
//Create Objects of Triangle ,Circle and Rectangle
gObjectArray[0] = new Triangle(9,5,7);
gObjectArray[1]=new Triangle();
gObjectArray[2]=new Circle(10);
//Create an instance of Rectangle with width and height
gObjectArray[3]=new Rectangle(5, 10);
//using loop calling the below print method
for(int i=0;i<gObjectArray.length;i++)
{
System.out.println(gObjectArray[i]);
//calling method printAreaAndPerimeter
printAreaAndPerimeter(gObjectArray[i]);
}
}
/*Method that prints area and parameter on console.*/
private static void printAreaAndPerimeter(GeometricObject
gObject) {
System.out.println("Area : "+gObject.getArea());
System.out.println("Perimeter : "+gObject.getPerimeter());
System.out.println();
}
}
----------------------------------------------------------------------------------------------------------------
//GeometricObject.java
public abstract class GeometricObject {
private String color = "white";
private boolean filled;
private java.util.Date dateCreated;
/** Construct a default geometric object */
protected GeometricObject() {
dateCreated = new java.util.Date();
}
/** Construct a geometric
* object with color and filled value */
protected GeometricObject(String color, boolean filled) {
dateCreated = new java.util.Date();
this.color = color;
this.filled = filled;
}
/** Return color */
public String getColor() {
return color;
}
/** Set a new color */
public void setColor(String color) {
this.color = color;
}
/** Return filled. Since filled is boolean,
* the get method is named isFilled */
public boolean isFilled() {
return filled;
}
/** Set a new filled */
public void setFilled(boolean filled) {
this.filled = filled;
}
/** Get dateCreated */
public java.util.Date getDateCreated() {
return dateCreated;
}
public String toString() {
return "created on " + dateCreated + " color: " +
color +
" and filled: " + filled;
}
/** Abstract method getArea */
public abstract double getArea();
/** Abstract method getPerimeter */
public abstract double getPerimeter();
}
----------------------------------------------------------------------------------------------------------------
//Triangle.java
public class Triangle extends GeometricObject {
private double side1 = 1.0, side2 = 1.0, side3 = 1.0;
/** Constructor */
public Triangle() {
}
/** Constructor */
public Triangle(double side1, double side2, double
side3) {
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
/* Override method findArea */
public double getArea()
{
double s = (side1 + side2 + side3) / 2;
return Math.sqrt(s * (s - side1) * (s - side2) * (s -
side3));
}
/* Override method findPerimeter */
public double getPerimeter()
{
return side1 + side2 + side3;
}
/* Override the toString method */
public String toString()
{
return "Triangle: side1 = " + side1 + " side2 = " +
side2 +
" side3 = " + side3;
}
}
----------------------------------------------------------------------------------------------------------------
//Circle.java
public class Circle extends GeometricObject
{
private double radius;
public Circle()
{
radius=1;
}
public Circle(double radius)
{
this.radius = radius;
}
public Circle(double radius,
String color, boolean filled)
{
this.radius = radius;
setColor(color);
setFilled(filled);
}
/** Return radius */
public double getRadius()
{
return radius;
}
/** Set a new radius */
public void setRadius(double radius) {
this.radius = radius;
}
/** Return area */
public double getArea()
{
return radius * radius * Math.PI;
}
/** Return diameter */
public double getDiameter()
{
return 2 * radius;
}
/** Return parameter */
public double getPerimeter()
{
return 2 * radius * Math.PI;
}
public String toString() {
return "The circle is created " + getDateCreated() +
" and the radius is " + radius;
}
}
----------------------------------------------------------------------------------------------------------------
//Rectangle.java
public class Rectangle extends GeometricObject
{
private double width;
private double height;
//no argument constructor
public Rectangle()
{
this.width=1;
this.height=1;
}
//parameter argument constructor that takes width and height
public Rectangle(double width, double height)
{
this.width = width;
this.height = height;
}
public Rectangle(
double width, double height, String color, boolean filled) {
this.width = width;
this.height = height;
setColor(color);
setFilled(filled);
}
/** Return width */
public double getWidth() {
return width;
}
/** Set a new width */
public void setWidth(double width) {
this.width = width;
}
/** Return height */
public double getHeight() {
return height;
}
/** Set a new height */
public void setHeight(double height) {
this.height = height;
}
/** Return area */
public double getArea() {
return width * height;
}
/** Return parameter */
public double getPerimeter() {
return 2 * (width + height);
}
/* Override the toString method */
public String toString()
{
return "Rectangel: Width = " + width + " Height = " +
height ;
}
}
----------------------------------------------------------------------------------------------------------------
Sample Output:
Triangle: side1 = 9.0 side2 = 5.0 side3 = 7.0
Area : 17.41228014936585
Perimeter : 21.0
Triangle: side1 = 1.0 side2 = 1.0 side3 = 1.0
Area : 0.4330127018922193
Perimeter : 3.0
The circle is created Tue Mar 06 10:16:31 IST 2018 and the radius is 10.0
Area : 314.1592653589793
Perimeter : 62.83185307179586
Rectangel: Width = 5.0 Height = 10.0
Area : 50.0
Perimeter : 30.0