3.30作业

编程题

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

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

②一个无参的构造方法。

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

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

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

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

package geometry;

public abstract class Geometric {
String color;
boolean filled;

public void setColor(String color) {
this.color = color;
}

public void setFilled(boolean filled) {
}

abstract double getArea();
abstract double getPerimeter();

@Override
public String toString() {
return "Geometric{" +
"color='" + color + '\'' +
", filled='" + filled + '\'' +
'}';
}
}

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

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

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

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

④radius的访问器方法。

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

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

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

package geometry;

import java.util.Scanner;

public class Circle extends Geometric{
private String color;
private final double radius;
private final double pi=3.14;

@Override
public void setColor(String color) {
this.color=color;
super.setColor(color);
}

@Override
public void setFilled(boolean filled) {
if (!filled){
System.out.println("判断出未被填充");
}else{
System.out.println("判断出被填充");
}
}

@Override
double getArea() {
return pi*radius*radius;
}

@Override
double getPerimeter() {
return pi*2*radius;
}

public Circle(){
Scanner input =new Scanner(System.in);
System.out.println("输入圆的半径");
radius= input.nextDouble();
}

@Override
public String toString() {
return "Circle{" +
"color='" + color + '\'' +
", radius=" + radius+'\''+",filled="+filled;

}

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

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

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

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

④side1和side2的访问器方法。

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

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

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

package geometry;

import java.util.Scanner;

public class Rectangle extends Geometric{
private String color ="blue";
private double side1;
private double side2;

@Override
public void setColor(String color) {
this.color = color;
}

@Override
public void setFilled(boolean filled) {
if (!filled){
System.out.println("判断出未被填充");
}else{
System.out.println("判断出被填充");
}
}
public void rectangle(){
Scanner input =new Scanner(System.in);
System.out.println("输入矩形的边长1");
side1= input.nextDouble();
System.out.println("输入矩形的边长2");
side2= input.nextDouble();
}

@Override
double getArea() {
return side1*side2;
}

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

@Override
public String toString() {
return "Rectangle{" +
"color='" + color + '\'' +
", filled=" + filled +
", color='" + color + '\'' +
", side1=" + side1 +
", side2=" + side2 +
'}';
}

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

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

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

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

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

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

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

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

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

package geometry;

import java.util.Scanner;

public class Triangle extends Geometric{
private final double side1;
private final double side2;
private final double side3;

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

@Override
public void setColor(String color) {
this.color=color;
System.out.println("无色");
}

@Override
public void setFilled(boolean filled) {
if (!filled){
System.out.println("判断出未被填充");
}else{
System.out.println("判断出被填充");
}
}
public void decide(){
if (side1+side2>side3&side3+side1>side2&side2+side3>side1){
System.out.println("恭喜,这是一个三角形");
getArea();
getPerimeter();
System.out.println("面积是"+getArea());
System.out.println("周长是"+getPerimeter());
}else {
System.out.println("这不是一个三角形");
}
}

@Override
double getArea() {
double p=(side1+side2+side3)/2;
return Math.sqrt(p*(p-side1)*(p-side2)*(p-side3));
}
public Triangle(){
Scanner input =new Scanner(System.in);
System.out.println("输入三角形三条边长");
side1= input.nextDouble();
side2= input.nextDouble();
side3= input.nextDouble();
}

@Override
public String toString() {
return "Triangle{" +
"color='" + color + '\'' +
", filled=" + filled +
", side1=" + side1 +
", side2=" + side2 +
", side3=" + side3 +
'}';
}

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

package geometry;

public class Test {
public static void main(String[] args) {
Circle circle1=new Circle();
System.out.println("这里是圆形");
circle1.getPerimeter();
circle1.getArea();
System.out.println( circle1);
System.out.println("面积是"+circle1.getArea());
System.out.println("周长是"+circle1.getPerimeter());
circle1.setFilled(false);

Triangle triangle1=new Triangle();
System.out.println("这里是三角形");
triangle1.decide();
System.out.println(triangle1);
triangle1.setFilled(false);

Rectangle rectangle1=new Rectangle();
System.out.println("这里是矩形");
rectangle1.rectangle();
System.out.println("面积是"+rectangle1.getArea());
System.out.println("周长是"+rectangle1.getPerimeter());
circle1.setFilled(true);
System.out.println(rectangle1);
}
}

 

posted @ 2022-04-01 22:16  小石榴单推人  阅读(58)  评论(0编辑  收藏  举报