面向对象2

(1)设计一个名为Geometric的几何图形的抽象类,该类包括:

①两个名为color、filled属性分别表示图形颜色和是否填充。

②一个无参的构造方法。

③一个能创建指定颜色和填充值的构造方法。

④一个名为getArea()的抽象方法,返回图形的面积。

⑤一个名为getPerimeter()的抽象方法,返回图形的周长。

⑥一个名为toString()的方法,返回该几何图形的字符串描述。

public abstract class Geometric {
private String color;
private boolean filled;
public Geometric() {

}
public Geometric(String color, boolean filled) {
this.color = color;
this.filled = filled;
}
abstract double getArea();
abstract double getPerimeter();
@Override
public String toString() {
return "Geometric [color=" + color + ", filled=" + filled + ", getArea()=" + getArea() + ", getPerimeter()="
+ getPerimeter() + "]";
}


}

 

 

(2)设计一个名为Circle的圆类来实现Geometric类,该类包括:

①一个名为radius的double类型私有属性表示半径。

②一个无参构造方法创建圆。

③一个能创建指定radius的圆的构造方法。

④radius的访问器方法。

⑤一个名为getArea()的方法,返回该圆的面积。

⑥一个名为getPerimeter()的方法,返回圆的周长。

⑦一个名为toString()的方法,返回该圆的字符串描述。

public class Circle extends Geometric {
private static final double pI=3.14;

double radius;
public Circle() {

}
public Circle(double radius) {
this.radius = radius;
}

public void setRadius(double radius) {
this.radius = radius;
}
public double getRadius() {
return radius;
}

@Override
double getArea() {

return pI * radius *radius;
}

@Override
double getPerimeter() {

return 2 * pI *radius;
}
@Override
public String toString() {
return "Circle [radius=" + radius + ", getArea()=" + getArea() + ", getPerimeter()=" + getPerimeter() + "]";
}
}

 

 

(3)设计一个名为Rectangle的矩形类来实现Geometric类,该类包括:

①两个名为side1、side2的double类型私有属性表示矩形的两条边。

②一个无参构造方法创建矩形。

③一个能创建指定sidel和side2的矩形的构造方法。

④side1和side2的访问器方法。

⑤一个名为getArea()的方法,返回该矩形的面积。

⑥一个名为gelPerimeter()的方法,返回该矩形的周长。

⑦一个名为toString()的方法,返回该矩形的字符串描述。

public class Rectangle extends Geometric{
private double side1;
private double side2;
public Rectangle() {

}
public Rectangle(double side1,double side2) {
super();
this.side1=side1;
this.side2=side2;
}
public double getSide1() {
return side1;
}
public void setSide1(double side2) {
this.side2=side2;
}
public double getSide2() {
return side2;
}
public void setSide2(double side2) {
this.side2=side2;
}
@Override
double getArea() {
return side1 *side2;
}

@Override
double getPerimeter() {
return 2 *(side1 + side2);
}


@Override
public String toString() {
return "Rectangle [side1=" + side1 + ", side2=" + side2 + ", getArea()=" + getArea() + ", getPerimeter()="
+ getPerimeter() + "]";
}

}

 

 

4)设计一个名为Triangle的三角形类来实现Geometric类,该类包括:

①三个名为side1,side2和side3的double类型私有属性表示三角形的三条边。

②一个无参构造方法创建三角形。

③一个能创建指定side1,side2和side3的矩形的构造方法。

④side1,side2和side3的访问器方法。

⑤一个名为getArea()的方法,返回该三角形的面积。

⑥一个名为getPerimeter()的方法,返回该三角形的周长。

⑦一个名为isTriangle()的方法,判断三边是否能构成三角形。

⑧一个名为toString()的方法,返回三边较小的字符串描述。

public class Triangle extends Geometric {
int s;
private double side1;
private double side2;
private double side3;
public Triangle() {

}
public Triangle (double side1,double side2,double side3){
super();
this.side1=side1;
this.side2=side2;
this.side3=side3;
}
@Override
double getArea() {

double p=((side1+side2+side3)/2);;

return Math.sqrt(p*(p-side1)*(p-side2)*(p-side3)) ;

}

@Override
double getPerimeter() {

return side1+side2+side3;
}

boolean ss(double side1,double side2,double side3) {
if((side1+side2)>side3&&(side1+side3)>side2&&(side2+side3)>side1) {
return true;
}else {
return false;
}
}
@Override
public String toString() {
double temp;
if (side1 >= side2) {
temp = side1;
side1 = side2;
side2 = temp;
}

if (side1 >= side3) {
temp = side1;
side1 = side3;
side3 = temp;
}

return " ss [side1=" + side1 + "] ";

}

}

 

 

 

 (5)编写测试类,测试图形的面积和周长。

public class Test {
private static Scanner sc;
public static void main(String[] args) {
sc =new Scanner(System.in);
double radius=sc.nextDouble();
Circle c1 =new Circle(radius);
System.out.println("圆的面积"+c1.getArea());
System.out.println("圆的周长" +c1.getPerimeter());
System.out.println(c1.toString());

double side1 =sc.nextDouble();
double side2 =sc.nextDouble();
Rectangle rectangle=new Rectangle(side1,side2);
System.out.println("矩形的面积"+rectangle.getArea());
System.out.println("矩形的周长" +rectangle.getPerimeter());
System.out.println(rectangle.toString());

double side3 =sc.nextDouble();
double side4 =sc.nextDouble();
double side5 =sc.nextDouble();
Triangle triangle =new Triangle(side3,side4,side5);
if (triangle.ss(side3, side4, side5)) {
System.out.println("三角形的面积"+triangle.getArea());
System.out.println("三角形的周长" +triangle.getPerimeter());
System.out.println("三边最小值"+triangle.toString());
} else {

System.out.println("不能构成三角行");

}

}

}

 

posted @ 2022-04-03 18:01  不想看月亮  阅读(119)  评论(0)    收藏  举报