计算长方形 正方形 圆形的周长和面积 并比较两个图形面积的大小
1.Circle圆类
public class Circle extends Graph{
private double radius;
private double PI;
private double Area;
private double Girth;
public Circle(){
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public double getPI() {
return PI;
}
public void setPI(double pI) {
PI = pI;
}
public double getArea() {
return Area;
}
public void setArea(double area) {
Area = area;
}
public double getGirth() {
return Girth;
}
public void setGirth(double girth) {
Girth = girth;
}
public Circle(double radius,double PI){
this.radius=radius;
this.PI=PI;
this.Area=Area(radius,PI);
this.Girth=Girth(radius,PI);
}
public double Area(double radius, double PI) {
return radius*radius*PI;
}
public double Girth(double radius, double PI) {
return 2*PI*radius;
}
@Override
public String toString() {
String str="圆的面积为"+Area+",周长为"+Girth;
return str;
}
}
- Square正方形类
public class Square extends Graph{
private double side_length;
private double Area;
private double Girth;
public Square(){
}
public double getSide_length() {
return side_length;
}
public void setSide_length(double side_length) {
this.side_length = side_length;
}
public double getArea() {
return Area;
}
public void setArea(double area) {
Area = area;
}
public double getGirth() {
return Girth;
}
public void setGirth(double girth) {
Girth = girth;
}
public Square(double side_length){
this.side_length=side_length;
this.Area=Area(side_length);
this.Girth=Girth(side_length);
}
public double Area(double side_length) {
return side_length*side_length;
}
public double Girth(double side_length) {
return side_length*4;
}
@Override
public String toString() {
String str="正方形的面积为"+Area+",周长为"+Girth;
return str;
}
}
- Rectangle 长方形类
public class Rectangle extends Graph{
private double width;
private double height;
private double Area;
private double Girth;
public Rectangle(){
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getArea() {
return Area;
}
public void setArea(double area) {
Area = area;
}
public double getGirth() {
return Girth;
}
public void setGirth(double girth) {
Girth = girth;
}
public Rectangle (double width, double height){
this.width=width;
this.height=height;
this.Area=Area(width,height);
this.Girth=Girth(width,height);
}
public double Area(double width, double height) {
return width*height;
}
public double Girth(double width, double height) {
return (width+height)*2;
}
@Override
public String toString() {
String str="长方形矩面积为"+Area+",周长为"+Girth;
return str;
}
}
4.Graph 继承 / 父类
public abstract class Graph {
// 获取面积
public abstract double getArea();
// 获取周长
public abstract double getGirth();
// 打印图形信息
public abstract String toString();
}
5.Complarable 接口 用于比较
public interface Comparable {
// 比较两个图形面积大小
public int CompareTo(Graph A,Graph B);
// 找出面积最大的图形
public String CompareTo(Graph[] graph_Obj);
}
6.Complarable_Impl 使用接口的方法
public class Comparable_Impl implements Comparable{
@Override
public String CompareTo(Graph[] g) {
double ss;
double max=0.0;
String index="?";
String a="[";
for(int i=0;i<g.length;i++){
ss=g[i].getArea();
max=max>ss?max:ss;
if(max==ss)
index=Integer.toString(1+i);
a+=" ("+Integer.toString(1+i)+"."+g[i].getClass().toString().split("ic.")[1]+")"+Double.toString(ss)+"\n";
}
a+=" ]\n当前第"+index+"个图形面积最大,它的面积为"+Double.toString(max);
return a;
}
@Override
public int CompareTo(Graph A, Graph B) {
int reeult=-2;
if(A.getArea()>B.getArea()){
reeult=1;
}
if(A.getArea()==B.getArea()){
reeult=0;
}
if(A.getArea()<B.getArea()){
reeult=-1;
}
return reeult;
}
}
7.TestGraph 计算面积周长
public class TestGraph {
public static double PI=3.14;
public static void main(String[] args) {
// 实例化图形对象
Graph c1=new Circle(3.0,PI);
Graph s1=new Square(4.0);
Graph s2=new Rectangle(10.0,5.0);
// 打印对象信息
System.out.println(c1.toString());
System.out.println(s1.toString());
System.out.println(s2.toString());
}
}
- TestGraph2 比较面积大小
public class TestGraphs {
public static void main(String[] args) {
double PI=TestGraph.PI; // test_1的static PI=3.14
// 绘制图形对象
Circle c1=new Circle(4.5,PI);
Square s1=new Square(4.0);
Rectangle s2=new Rectangle(10.0,5.0);
// 实例化
Comparable_Impl Ci=new Comparable_Impl();
// 比较两个图形面积的大小
int see=Ci.CompareTo(c1, s1);//c1为圆 s2 为正方形
if(see==1){
System.out.println("圆的面积较大");
}else if(see==0){
System.out.println("两个面积等大");
}else if(see==-1){
System.out.println("正方形较大");
}
System.out.println("\n");
//(2)计算面积最大的图形
Graph[] graph={
c1,
new Circle(3.0,4.0),
s1,
new Rectangle(3.0,5.0),
s2,
new Square(8.0)
};
System.out.println(Ci.CompareTo(graph));
}
}