// Lecture13 -- encapsulation

/* assume
   
     s1
   +----+
s2 |    | s4
   |    |
   +----+
     s3

*/

class Quad {

    private String type; 

    private double s1;
    private double s2;
    private double s3;
    private double s4;

    public Quad(String t, double a, double b, double c, double d) {
	type = t;
	s1 = a;
	s2 = b;
	s3 = c;
	s4 = d;
    } 

    public double getArea() {
	double area;
	if (type.equals("Rect"))
	    area = rect();
	else if (type.equals("Squa"))
	    area = squa();
	else if (type.equals("Trap"))
	    area = trap();
	else
	    area = -1;
	return area;
    }
    
    private double rect() {
	return s1*s2;
    }

    private double squa() {
	return rect();
    }

    private double trap() {
	return (0.5)*s2*(s1+s3);
    }

} // class Quad

public class L13_area {

    public static void disp(String s) {
	System.out.println(s);
    }
    
    public static void main(String[] args) {
	
	// yes, the following is inefficient
	// investigate inheritance to "clean it up"
	
	Quad a = new Quad("Squa",1,1,1,1);
	Quad b = new Quad("Rect",1,2,1,2);
	Quad c = new Quad("Trap",2,1,3,1);
	
	disp("Area of square: " + a.getArea());
	disp("Area of square: " + b.getArea());
	disp("Area of square: " + c.getArea());

    }

} // class encaps

/* output:
Area of square: 1.0
Area of square: 2.0
Area of square: 2.5
*/
