Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote