编写一个完整的JAVA Application程序,包含接口Shape,Circle类和Square类,Test类

具体要求如下:
1)接口Shape:包含方法
double getArea():求一个形状的面积
double getPerimeter():求一个形状的周长
2)Circle类:具有以下属性和方法:
属性radius:double类型,表示圆的半径。
方法:Circle(double r):构造函数
toString(): 输出圆的相关信息(半径等)。
3)Square类:具有以下属性和方法:
属性length,width:均是double类型,表示长方形的长和宽。
方法:Square(double x,double y):构造函数
toString(): 输出长方形的相关信息(长 宽等)
4)Test类作为主类完成测试功能:
输出圆的周长和面积。
输出长方形的周长和面积
产生随机数决定生成形状的类型,偶数就生成一个Circle对象,奇数就生成一个Square对象,将生成的对象赋值给接口句柄,计算并输出该形状的周长和面积。

这种问题不可能有人直接写代码回答的,只能提供思路,代码要多自己写