var f : CFigure[] = new CFigure[3];
f[0] = new CCircle(1);
f[1] = new CSquare(2);
f[2] = new CRectangle(2, 3);
var area = 0;
for(var i = 0; i < 3; i++)
	area += f[i].getArea();
print(area);

abstract class CFigure {
	abstract function getArea() : double;
}

class CCircle extends CFigure {
	private var r : double;
	function CCircle() { r = 0; }
	function CCircle(x : double) { r = x; }
	function getArea() {
		return Math.PI * r * r;
	}
}

class CSquare extends CFigure {
	private var a : double;
	function CSquare() { a = 0; }
	function CSquare(x : double) { a = x; }
	function getArea() {
		return a * a;
	}
}

class CRectangle extends CFigure {
	private var a : double;
	private var b : double;
	function CRectangle() { a = b = 0; }
	function CRectangle(x : double, y : double) { a = x; b = y; }
	function getArea() {
		return a * b;
	}
}
