Define a class named ComparableTriangle that extends Triangle and implements Com
ID: 3919128 • Letter: D
Question
Define a class named ComparableTriangle that extends Triangle and implements Comparable. Draw the UML diagram and implements the compareTo method to compare the triangles on the basis of area. Write a test class to find the larger of two instances of ComparableTriangle objects. Be sure to accept only valid triangles.
Triangle
public class Triangle extends GeometricObject {
private double side1;
private double side2;
private double side3;
public Triangle(double side1, double side2, double side3) throws IllegalTriangleException {
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
isValidTriangle();
}
public Triangle() {
this.side1 = 1;
this.side2 = 1;
this.side3 = 1;
}
public double getArea() {
double s = (side1 + side2 + side3) / 2.0;
return Math.pow(s * (s - side1) * (s - side2) * (s - side3), 0.5);
}
public double getPerimeter() {
return side1 + side2 + side3;
}
public String toString() {
return "Triangle{"
+ "side1=" + side1
+ ", side2=" + side2
+ ", side3=" + side3
+ '}';
}
public static boolean isTriangle(double side1, double side2, double side3) {
return ((side1 + side2 > side3)
&& (side1 + side3 > side2)
&& (side3 + side2 > side1));
}
public double getSide1() {
return side1;
}
public void setSide1(double side1) throws IllegalTriangleException {
this.side1 = side1;
isValidTriangle();
}
public double getSide2() {
return side2;
}
public void setSide2(double side2) throws IllegalTriangleException {
this.side2 = side2;
isValidTriangle();
}
public double getSide3() {
return side3;
}
public void setSide3(double side3) throws IllegalTriangleException {
this.side3 = side3;
isValidTriangle();
}
private void isValidTriangle() throws IllegalTriangleException {
if (!isTriangle(side1, side2, side3)) {
throw new IllegalTriangleException(side1, side2, side3);
}
}
}
Explanation / Answer
ComparableTriangle.java
-----------------------
public class ComparableTriangle extends Triangle implements Comparable<Triangle>{
public ComparableTriangle() {
super();
}
public ComparableTriangle(double side1, double side2, double side3) throws IllegalTriangleException {
super(side1, side2, side3);
}
@Override
public int compareTo(Triangle o) {
double a1 = getArea();
double a2 = o.getArea();
if(a1 < a2)
return -1;
else if(a1 > a2)
return 1;
else
return 0;
}
}
TestComparableTriangle.java
------------------------
import java.util.Scanner;
public class TestComparableTriangle {
static Scanner keyboard = new Scanner(System.in);
private static ComparableTriangle inputTriangle(String message){
while(true){
double s1, s2, s3;
System.out.print(message);
s1 = keyboard.nextDouble();
s2 = keyboard.nextDouble();
s3 = keyboard.nextDouble();
try {
ComparableTriangle t = new ComparableTriangle(s1, s2, s3);
return t;
} catch (IllegalTriangleException e) {
System.out.println("Invalid triangle sides. Pleast enter again.");
}
}
}
public static void main(String[] args) {
ComparableTriangle t1 = inputTriangle("Enter the 3 sides of triangle 1: ");
ComparableTriangle t2 = inputTriangle("Enter the 3 sides of triangle 2: ");
if(t1.compareTo(t2) < 0)
System.out.println("Triangle 1 is smaller in area compared to triangle 2");
else if(t1.compareTo(t2) > 0)
System.out.println("Triangle 1 is greater in area compared to triangle 2");
else
System.out.println("Both the triangles are of same area");
}
}
output
----
Enter the 3 sides of triangle 1: 1 2 3
Invalid triangle sides. Pleast enter again.
Enter the 3 sides of triangle 1: 3 4 5
Enter the 3 sides of triangle 2: 4 5 6
Triangle 1 is smaller in area compared to triangle 2
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.