//Circle 类处有点很小的错误,求解!
import java.applet.*;
import java.awt.*;
interface Shapes{
abstract long getArea();
abstract long getPerimeter();
}
class Coordinates{
long x;
long y;
Coordinates(long x,long y){
this.x=x;
this.y=y;
}
}
class Rectangle extends Coordinates implements Shapes{
long width ;
long height;
public long getArea(){
return width*height;
}
public long getPerimeter(){
return 2*(width+height);
}
Rectangle(long x,long y,long w,long h){
super(x,y);
width=w;
height=h;
}
}
class Circle extends Coordinates implements Shapes{//???????错误的地方
long width;
long height;
long radius;
public long getArea(){
return (long)Math.PI*radius*radius;
}
public long getPerimeter(){
return (long)(2*Math.PI*radius);
}
Circle(long x,long y,long w,long h){
super(x,y);
width=w;
height=h;
radius=w/2;
}
}
class Triangle extends Coordinates implements Shapes{
long width;
long height;
long c;
public long getArea(){
double p=(width+height+c)/2.0;
return (long)Math.sqrt(p*(p-width)*(p-height)*(p-c));

}
public long getPerimeter(){
return width+height+c;
}
Triangle(long x,long y,long w,long h,long c){
super(x,y);
width=w;
height=h;
this.c=c;
}
}
public class TuXing extends Applet{
Rectangle rect =new Rectangle(15,10,20,40);
Circle cir =new Circle(15,50,30,30);
Triangle tri=new Triangle(15,90,30,40,50);
public void paint(Graphics g){
g.drawRect((int)rect.x,(int)rect.y,(int)rect.width,(int)rect.height);
g.drawString("Rectangle's Area:"+rect.getArea(),70,20);
g.drawString("Rectangle's Perimeter:"+rect.getPerimeter(),70,40);
g.drawOval((int)cir.x,(int)cir.y,(int)cir.width,(int)cir.height);
g.drawString("Circle's Area:"+cir.getArea(),70,60);
g.drawString("Circle's Perimeter:"+cir.getPerimeter(),70,80);
g.drawLine((int)tri.x,(int)tri.y,(int)tri.x,(int)(tri.y+tri.width));
g.drawLine((int)tri.x,(int)tri.y,(int)(tri.x+tri.height),(int)(tri.y+tri.width));
g.drawLine((int )tri.x,(int )(tri.y+tri.width),(int)(tri.x+tri.height),(int)(tri.y+tri.width));
g.drawString("Rectangle's Area:"+tri.getArea(),70,100);
g.drawString("Rectangle's Perimeter:"+tri.getPerimeter(), 70, 120);
}
}