In: Computer Science
(The Colorable interface) Design an interface named Colorable with a void method named howToColor(). Every class of a colorable object must implement the Colorable interface. Design a class named Square that extends GeometricObjectand implements Colorable. Design another class named Trianglethat extends GeometricObjectand implements Colorable. Implement howToColor inSquareto display the message Color all four sides. ImplementhowToColor inTriangleto display the message Color all three sides.
Draw a UML diagram that involves Colorable, Square, Triangle, and GeometricObject.
Write a test program that creates an array of five GeometricObjects. For each object in the array, display its area and invoke its howToColor method if it is colorable.
interface Colorable
{
public void howToColor();
}
abstract class GeometricObject implements Colorable// abstract
base class
{
//abstract methods
abstract public double calculateArea();
abstract public double calculatePerimeter();
abstract public String toString();
}
class Triangle extends GeometricObject
{
private double side1,side2,side3;
public Triangle()
{
side1 = 1.0;
side2 = 1.0;
side3 = 1.0;
}
public Triangle(double side1,double side2,double side3)
{
if ((side1 >= side2 + side3) || (side2 >= side1 +
side3)||(side3 >= side2 + side1))
{
this.side1 = 1.0;
this.side2 = 1.0;
this.side3 = 1.0;
}
else
{
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
}
//The accessor(getters and setters) methods for all three data
fields.
public void setSide1(double side1)
{
this.side1 = side1;
}
public double getSide1()
{
return side1;
}
public void setSide2(double side1)
{
this.side2 = side2;
}
public double getSide2()
{
return side2;
}
public void setSide3(double side3)
{
this.side3 = side3;
}
public double getSide3()
{
return side3;
}
//A method named getArea() that returns the area of this
triangle.
public double calculateArea()
{
double s = (side1 +side2+side3)/2;
double area = Math.sqrt(s*(s-side1)*(s-side2)*(s-side3));
return area;
}
//A method named getPerimeter() that returns the perimeter of this
triangle.
public double calculatePerimeter()
{
return(side1+side2+side3);
}
//A method named toString() that returns a string description for
the triangle.
public String toString()
{
return "Triangle side1 : "+side1 +" side2 : "+side2+" side3 :
"+side3 +" Area : "+calculateArea()+" Perimeter :
"+calculatePerimeter();
}
public void howToColor()
{
System.out.println("Color all three sides");
}
}
class Square extends GeometricObject
{
private double side;
public Square(double side)
{
this.side = side;
}
public String toString()
{
return "Square side : "+side+" Area : "+calculateArea()+" Perimeter
: "+calculatePerimeter();
}
public void howToColor()
{
System.out.println("Color all four sides");
}
public double calculateArea()
{
return side*side;
}
//A method named getPerimeter() that returns the perimeter of this
triangle.
public double calculatePerimeter()
{
return 4*side;
}
}
class TestGeometricObject
{
public static void main (String[] args)
{
GeometricObject[] f = new GeometricObject[2];
f[0] = new Square(20);
f[1] = new Triangle(6.5, 14.9, 11.3);
for(int i=0;i<f.length;i++)
{
System.out.println(f[i]);
f[i].howToColor();
}
I get an error do not know why
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
at test.TestGeometricObject.main(TestGeometricObject.java:4)
// Colorable.java
interface Colorable
{
public void howToColor();
}
//GeometricObject.java
abstract class GeometricObject implements Colorable// abstract
base class
{
//abstract methods
abstract public double calculateArea();
abstract public double calculatePerimeter();
abstract public String toString();
}
//Square.java
class Square extends GeometricObject
{
private double side;
public Square(double side)
{
this.side = side;
}
public String toString()
{
return "Square side : "+side+" Area : "+calculateArea()+" Perimeter
: "+calculatePerimeter();
}
public void howToColor()
{
System.out.println("Color all four sides");
}
public double calculateArea()
{
return side*side;
}
//A method named getPerimeter() that returns the perimeter of this
triangle.
public double calculatePerimeter()
{
return 4*side;
}
}
//Triangle.java
class Triangle extends GeometricObject
{
private double side1,side2,side3;
public Triangle()
{
side1 = 1.0;
side2 = 1.0;
side3 = 1.0;
}
public Triangle(double side1,double side2,double side3)
{
if ((side1 >= side2 + side3) || (side2 >= side1 +
side3)||(side3 >= side2 + side1))
{
this.side1 = 1.0;
this.side2 = 1.0;
this.side3 = 1.0;
}
else
{
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
}
//The accessor(getters and setters) methods for all three data
fields.
public void setSide1(double side1)
{
this.side1 = side1;
}
public double getSide1()
{
return side1;
}
public void setSide2(double side1)
{
this.side2 = side2;
}
public double getSide2()
{
return side2;
}
public void setSide3(double side3)
{
this.side3 = side3;
}
public double getSide3()
{
return side3;
}
//A method named getArea() that returns the area of this
triangle.
public double calculateArea()
{
double s = (side1 +side2+side3)/2;
double area = Math.sqrt(s*(s-side1)*(s-side2)*(s-side3));
return area;
}
//A method named getPerimeter() that returns the perimeter of this
triangle.
public double calculatePerimeter()
{
return(side1+side2+side3);
}
//A method named toString() that returns a string description for
the triangle.
public String toString()
{
return "Triangle side1 : "+side1 +" side2 : "+side2+" side3 :
"+side3 +" Area : "+calculateArea()+" Perimeter :
"+calculatePerimeter();
}
public void howToColor()
{
System.out.println("Color all three sides");
}
}
//TestGeometricObject.java
class TestGeometricObject
{
public static void main (String[] args)
{
GeometricObject[] f = new GeometricObject[2];
f[0] = new Square(20);
f[1] = new Triangle(6.5, 14.9, 11.3);
for(int i=0;i<f.length;i++)
{
System.out.println(f[i]);
f[i].howToColor();
}
}
}
//Error is because of mismatch of curly braces