<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">// area of quadrilaterals

class Quad {
    
    // dimensions
    protected double a; // side 1
    protected double b; // side 2
    protected double c; // side 3
    protected double d; // side 4
    protected double p; // diag 1
    protected double q; // diag 2
    
    // constructors
    Quad() {}
    Quad(double a, double b, double c, double d) {
	this.a = a;
	this.b = b;
	this.c = c;
	this.d = d;
    }
    Quad(double a, double b, double c, double d, double p, double q) {
	this.a = a;
	this.b = b;
	this.c = c;
	this.d = d;
	this.p = p;
	this.q = q;
    }
    
    // utility methods
    private double perim() {
	return a+b+c+d;
    }

    protected /*private*/ double area() {
	return 0.25*Math.sqrt(4*p*q*q-Math.pow((b*b+d*d-a*a-c*c),2));
    }
		
    // service methods
    protected void print_perim() {
	System.out.println("Perimeter: " + perim());
    }

    protected void print_area() {
	System.out.println("Area: " + area());
    }

}

class Para extends Quad {
    Para(double s1, double s2, double p, double q) {
	super(s1,s2,s1,s2,p,q);
    }
    
    // override perim meth
    private double perim() {
	return 2*(a+b);
    }

}

class Rect extends Para {
    Rect(double s1, double s2) {
	super(s1,s2,s1,s2);
    }
    
    // override perim meth
    private double perim() {
	return 2*(a+b);
    }

    // override area meth
    protected double area() {
	return a*b;
    }

}

public class quad_area {
    public static void main(String args[]) {
	
	Quad A = new Quad(1,2,3,4,5,6);
	A.print_perim();
	A.print_area();

	Para B = new Para(1,2,5,6);
	B.print_perim();
	B.print_area();

	Rect C = new Rect(1,2);
	C.print_perim();
	C.print_area();

    }
}
</pre></body></html>