# Untitled

unknown
java
a year ago
3.4 kB
2
Indexable
Never
```public class Quadrilateral extends Shape {
XYCoord b, c, d;

public Quadrilateral(XYCoord a, XYCoord b, XYCoord c, XYCoord d) {
super(a);
this.b = b;
this.c = c;
this.d = d;
}

public double sideLength(XYCoord p1, XYCoord p2) {
return p1.distance(p2);
}

public double perimeter() {
return sideLength(a, b) + sideLength(b, c) + sideLength(c, d) + sideLength(d, a);
}

public double area() {
double s1 = (sideLength(a, b) + sideLength(b, c) + sideLength(c, a)) / 2;
double s2 = (sideLength(a, d) + sideLength(d, c) + sideLength(c, a)) / 2;
return Math.sqrt(s1 * (s1 - sideLength(a, b)) * (s1 - sideLength(b, c)) * (s1 - sideLength(c, a))) +
Math.sqrt(s2 * (s2 - sideLength(a, d)) * (s2 - sideLength(d, c)) * (s2 - sideLength(c, a)));
}
}

public class Square extends Quadrilateral {
private double length;

public Square(XYCoord anchor, double length) {
super(anchor, new XYCoord(anchor.getX() + length, anchor.getY()),
new XYCoord(anchor.getX() + length, anchor.getY() + length),
new XYCoord(anchor.getX(), anchor.getY() + length));
this.length = length;
}

public void setLength(double newLength) {
this.length = newLength;
XYCoord b = new XYCoord(this.a.getX() + newLength, this.a.getY());
XYCoord c = new XYCoord(this.a.getX() + newLength, this.a.getY() + newLength);
XYCoord d = new XYCoord(this.a.getX(), this.a.getY() + newLength);
this.b = b;
this.c = c;
this.d = d;
}

public double getLength() {
return this.length;
}

public double area() {
return length * length;
}

public double perimeter() {
return 4 * length;
}
}

public class Circle extends Shape {

public Circle(XYCoord center, double radius) {
super(center);
}

/** Returns the radius of this circle. */
}

/** Changes the radius of this circle. */
}

/** Computes and returns the area of this circle. */
public double area() {
}

/** Computes and returns the perimeter of this circle. */
public double perimeter() {
return 2 * Math.PI * this.radius;
}

@Override
public String toString() {
}
}

public class Triangle extends Shape {

private XYCoord b, c;

public Triangle(XYCoord a, XYCoord b, XYCoord c) {
super(a);
this.b = b;
this.c = c;
}

public XYCoord getB() {
return b;
}

public XYCoord getC() {
return c;
}

public void setBC(XYCoord newB, XYCoord newC) {
this.b = newB;
this.c = newC;
}

@Override
public double area() {
double ab = a.distance(b);
double ac = a.distance(c);
double bc = b.distance(c);
double s = (ab + ac + bc) / 2.0;
return Math.sqrt(s * (s - ab) * (s - ac) * (s - bc));
}

@Override
public double perimeter() {
return a.distance(b) + a.distance(c) + b.distance(c);
}
}

```