Using Java ((Abstract Class and Interface)) 13.1(Triangle class) Desing a new Tr
ID: 639028 • Letter: U
Question
Using Java ((Abstract Class and Interface))
13.1(Triangle class)
Desing a new Triangle lass that extends the abstract GeometricObject class.
Draw the UML diagram for the classes Triangle and GeometricObject and then
implement the Triangle class. write a test program that prompts the user to
enter three side of the triangle, a color, and a Boolean value to indicate
wherther the triangleis filled. the program should create a Triangle object
with these sides and set the color and filled properties using the input.
The program should display the area, perimeter,color,and true or false to
indicate whether it is filled or not.
Explanation / Answer
This is Geometric Object Class
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();
}
____________________________________________________________
This is my Triangle class which extends from geometric object class.
import javax.swing.JOptionPane;
public class Triangle extends GeometricObject {
private double side1 = 1.0;
private double side2 = 1.0;
private double side3 = 1.0;
public Triangle() {
}
public Triangle(double side1, double side2, double side3)
throws IllegalTriangleException {
super("white", false);
if (side1 + side2 > side3 && side2 + side3 > side1 && side1 + side3 > side2){
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
else throw new IllegalTriangleException();
}
public double getSide1() {
return side1;
}
public double getSide2() {
return side2;
}
public double getSide3() {
return side3;
}
public void setSide1(double side1) {
this.side1 = side1;
}
public void setSide2(double side2) {
this.side2 = side2;
}
public void setSide3(double side3) {
this.side3 = side2;
}
public boolean compareArea( Triangle anotherTriangle ) {
return this.getArea() > anotherTriangle.getArea();
}
@Override
public double getArea() {
double p = getPerimeter() / 2;
return Math.sqrt(p * ((p - side1) * (p - side2) * (p - side3)));
}
@Override
public double getPerimeter() {
return side1 + side2 + side3;
}
public String toString() {
return " Triangle: Side 1 = " + side1 + " Side 2 = " + side2
+ " Side 3 = " + side3;
}
@Override
public int compareTo(Triangle arg0) {
// TODO Auto-generated method stub
return 0;
}
}
class IllegalTriangleException extends Exception {
public static void main (String[] args) {
try{
String side1String = JOptionPane.showInputDialog("Enter a length for side 1: ");
String side2String = JOptionPane.showInputDialog("Enter a length for side 2: ");
String side3String = JOptionPane.showInputDialog("Enter a length for side 3: ");
//parse doubles
double firstSide = Double.parseDouble(side1String);
double secondSide = Double.parseDouble(side2String);
double thirdSide = Double.parseDouble(side3String);
Triangle triangle1 = new Triangle(firstSide, secondSide, thirdSide);
JOptionPane.showMessageDialog(null, "Triangle 1: " + triangle1);
}
catch(IllegalTriangleException ex)
{
JOptionPane.showMessageDialog(null, " Sides are invalid ");
}
}
}
_________________________________________________________________________
Here is TestTriangle
import java.util.Scanner;
import javax.swing.JOptionPane;
public class TestTriangle {
private double side1 = 1.0;
private double side2 = 1.0;
private double side3 = 1.0;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter three sides of the Triangle");
double side1 = input.nextDouble();
double side2 = input.nextDouble();
double side3 = input.nextDouble();
System.out.println("The color of your triangle will be white");
String color = input.next();
System.out.println(" Is the Triangle filled? Reply with 'True' or 'False' ");
String filled = input.next();
Triangle triangle = new Triangle();
try {
triangle = new Triangle(side1, side2, side3);
} catch (IllegalTriangleException e) {
{
JOptionPane.showMessageDialog(null, " Sides are invalid ");
}
}
System.out.println("The Triangle Sides are side 1: " + side1 + " Side 2: " + side2 + " Side 3: " + side3);
System.out.println("The Triangle's Area is " + (side1 + side2 + side3) / 2);
System.out.println("The Triangle's Perimeter is "
+ (side1 + side2 + side3));
System.out.println("The Triangle's Color is " + triangle.getColor());
System.out.println("Is the Triangle filled? " + triangle.isFilled());
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.