Java面向对象(下)作业

首先我把题目先列到这里,可以仔细看一下题。

  • (1)设计一个名为Geometric的几何图形的抽象类,该类包括:
  • ①两个名为color、filled属性分别表示图形颜色和是否填充。
  • ②一个无参的构造方法。
  • ③一个能创建指定颜色和填充值的构造方法。
  • ④一个名为getArea()的抽象方法,返回图形的面积。
  • ⑤一个名为getPerimeter()的抽象方法,返回图形的周长。
  • ⑥一个名为toString()的方法,返回该几何图形的字符串描述。
  • (2)设计一个名为Circle的圆类来实现Geometric类,该类包括:
  • ①一个名为radius的double类型私有属性表示半径。
  • ②一个无参构造方法创建圆。
  • ③一个能创建指定radius的圆的构造方法。
  • ④radius的访问器方法。
  • ⑤一个名为getArea()的方法,返回该圆的面积。
  • ⑥一个名为getPerimeter()的方法,返回圆的周长。
  • ⑦一个名为toString()的方法,返回该圆的字符串描述。
  • (3)设计一个名为Rectangle的矩形类来实现Geometric类,该类包括:
  • ①两个名为side1、side2的double类型私有属性表示矩形的两条边。
  • ②一个无参构造方法创建矩形。
  • ③一个能创建指定sidel和side2的矩形的构造方法。
  • ④side1和side2的访问器方法。
  • ⑤一个名为getArea()的方法,返回该矩形的面积。
  • ⑥一个名为gelPerimeter()的方法,返回该矩形的周长。
  • ⑦一个名为toString()的方法,返回该矩形的字符串描述。
  • (4)设计一个名为Triangle的三角形类来实现Geometric类,该类包括:
  • ①三个名为side1,side2和side3的double类型私有属性表示三角形的三条边。
  • ②一个无参构造方法创建三角形。
  • ③一个能创建指定side1,side2和side3的矩形的构造方法。
  • ④side1,side2和side3的访问器方法。
  • ⑤一个名为getArea()的方法,返回该三角形的面积。
  • ⑥一个名为getPerimeter()的方法,返回该三角形的周长。
  • ⑦一个名为isTriangle()的方法,判断三边是否能构成三角形。
  • ⑧一个名为toString()的方法,返回三边较小的字符串描述。
  • (5)编写测试类,测试图形的面积和周长。

在具体展示作业之前,我想先说两句。

  1. 如果你想将getXXX方法里获得的某个值返回到这个类的全局变量里面,你需要使用到setXXX方法,通过 this.XXX = XXXX 来覆盖原先的值。这样,这个类在调用这个变量的时候就不用再次调用方法来获取这个值了(前提是这个值是你想要的且不再需要更改,在实现类里需要首先调用get方法获取这个值,然后再调用set方法将值赋值到原先变量里)。
  2. 构造方法里最好不要有输出的语句,如果需要输出,最好是在最后的实现类里面再进行调用,或者在原先类中再次定义一个新的方法来输出。(主要还是在调用toString方法是会返回出方法中的输出语句。

好了,既然说了说两句,那就两句吧,接下来就是我的作业了!首先附上代码:

Geometric类

package com.sdbi.hhh;

import java.awt.Color;

//(1)设计一个名为Geometric的几何图形的抽象类,该类包括:
//①两个名为color、filled属性分别表示图形颜色和是否填充。
//②一个无参的构造方法。
//③一个能创建指定颜色和填充值的构造方法。
//④一个名为getArea()的抽象方法,返回图形的面积。
//⑤一个名为getPerimeter()的抽象方法,返回图形的周长。
//⑥一个名为toString()的方法,返回圆的字符串描述。

abstract class Geometric {// 定义一个抽象类Geometric
	String Color;// 定义一个color属性表示图形颜色

	boolean fillde;// 定义一个filled属性表示是否填充

	double getArea;// 定义一个图形的面积的抽象方法

	double getPerimeter;// 定义一个图形周长的抽象方法

	public void Geometric() {// 定义一个无参数的构造方法

	}

	public void Geometric(String Color, boolean fillde) {// 定义一个含有color和filled参数的构造方法
		this.Color = Color;
		this.fillde = fillde;

	}

	@Override
	public String toString() {
		return "Geometric [Color=" + Color + ", fillde=" + fillde + "]";
	}
}

Circle类

package com.sdbi.hhh;

import java.awt.geom.Area;
import java.nio.channels.Pipe;
import java.util.Scanner;
import java.util.Set;

import org.omg.CORBA.PUBLIC_MEMBER;

////设计一个名为Circle的圆类来实现Geometric类,该类包括:
//①一个名为radius的double属性表示半径。
//②一个无参构造方法创建圆。
//③一个能创建指定radius的圆的构造方法。
//④radius的访问器方法。
//⑤一个名为getArea()的方法,返回该圆的面积。
//⑥一个名为getPerimeter()的方法,返回圆的周长。
//⑦一个名为toString()的方法,返回该圆的字符串描述。

public class Circle extends Geometric {
	public static double radius;// 定义一个名为radius的double属性表示半径。
	public static double area;// 定义一个名为area的double属性表示面积。
	public final double Pi = 3.14;
	String Color = "紫色";// 定义一个color属性表示图形颜色
	boolean fillde = true;// 定义一个filled属性表示是否填充

	public Circle() {// 一个无参构造方法创建圆

	}

	public void setRadius() {// 用户输入半径,局部变量覆盖全局变量。
		System.out.println("请输入圆的半径长度");
		Scanner sc = new Scanner(System.in);
		double a = sc.nextDouble();
		System.out.println("圆的半径为:" + a);
		this.radius = a;
	}

	public Circle(double radius) {// 一个能创建指定radius的圆的构造方法
		this.radius = radius;
	}

	public double getRadius() {// radius的访问器方法
		return radius;
	}

	public double getArea() {// 一个名为getArea()的方法,返回该圆的面积。
		double S = Pi * radius * radius;// 圆的面积为pi*r^2
		return S;// 返回S的值给getArea
	}
	

	public double getPerimeter() {// 一个名为getPerimeter()的方法,返回圆的周长。
		double P = Pi * Pi * radius;
//		System.out.println("圆的周长为:" + P);
		return (P);
	}
	
	public void setPerimeter() {//将周长变量赋上计算所得到的周长的值。
		this.area = getPerimeter();
	}

	@Override
	public String toString() {
		return "Circle [radius=" + radius + ", area=" + area + ", Color=" + Color + ", fillde=" + fillde + ", getArea="
				+ getArea()+ ", getPerimeter=" + getPerimeter() + "]";
	}
}

 Rectangle类

package com.sdbi.hhh;

import java.util.Scanner;

//(3)设计一个名为Rectangle的矩形类来实现Geometric类,该类包括:
//两个名为side1、side2的double属性表示矩形的两条边。
//一个无参构造方法创建矩形。
//一个能创建指定side1和side2的矩形的构造方法。
//side1和side的访问器方法。
//一个名为getArea()的方法,返回该矩形的面积。
//一个名为gelPerimeter()的方法,返回该矩形的周长。
//一个名为toString()的方法,返回该矩形的字符串描述。
public class Rectangle extends Geometric {
	public double side1;
	public double side2;// 两个名为side1、side2的double属性表示矩形的两条边。
	public String Color = "红色";
	public boolean filllde = false;

	public Rectangle() {// 一个无参构造方法创建矩形。
	}

	public Rectangle(double side1, double side2) {// 一个能创建指定sidel和side2的矩形的构造方法。
		this.side1 = side1;
		this.side2 = side2;
	}

	public double getSide1() {// side1的访问器方法 
		return side1;
	}

	public void setSide1() {// side1的赋值方法
		System.out.println("请输入矩形的长");
		Scanner a = new Scanner(System.in);
		this.side1 = a.nextDouble() ;
	}

	public double getSide2() {// side2的访问器方法
		return side2;
	}

	public void setSide2() {// side1的赋值方法
		System.out.println("请输入矩形的宽");
		Scanner a = new Scanner(System.in);
		this.side2 = a.nextDouble();
	}

	public double getArea() {// 一个名为getArea()的方法,返回该矩形的面积。
		double S = side1 * side2;
		return S;
	}

	public double getPerimeter() {// 一个名为gelPerimeter()的方法,返回该矩形的周长。
		double P = side1 * 2 + side2 * 2;
		return P;
	}

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

Triangle类

package com.sdbi.hhh;

import java.util.Scanner;

//(4)设计一个名为Triangle的三角形类来实现Geometric类,该类包括:
//三个名为side1,side2和side3的double属性表示三角形的三条边。
//一个无参构造方法创建三角形。
//一个能创建指定side1,side2和side3的矩形的构造方法。
//side1,side2和side3的访问器方法。
//一个名为getArea()的方法,返回该三角形的面积。
//一个名为getPerimeter()的方法,返回该三角形的周长。
//一个名为isTriangle()的方法,判断三边是否能构成三角形。
//一个名为toString()的方法,返回三边较小的字符串描述。
public class Triangle extends Geometric {
	public double side1;// 名为side1的double属性表示三角形的一条边。
	public double side2;// 名为side2的double属性表示三角形的一条边。
	public double side3;// 名为side3的double属性表示三角形的一条边。
	public String color = "粉色";
	public boolean fillde = true;

	public Triangle() {// 一个无参构造方法创建三角形。
	}

	public Triangle(double side1, double side2, double side3) {// 一个能创建指定side1,side2和side3的矩形的构造方法。
		this.side1 = side1;
		this.side2 = side2;
		this.side3 = side3;
	}

	public void setSide1() {// 获取side1的值
		System.out.println("请输入三角形的第一条边长度");
		Scanner sc = new Scanner(System.in);
		this.side1 = sc.nextDouble();
	}

	public double getSide1() {// side1的访问器方法。
		return side1;
	}

	public void setSide2() {// 获取side2的值
		System.out.println("请输入三角形的第二条边长度");
		Scanner sc = new Scanner(System.in);
		this.side2 = sc.nextDouble();

	}

	public double getSide2() {// side2的访问器方法。
		return side2;
	}

	public void setSide3() {// 获取side3的值
		System.out.println("请输入三角形的第三条边长度");
		Scanner sc = new Scanner(System.in);
		this.side3 = sc.nextDouble();
	}

	public double getSide3() {// side3的访问器方法。
		return side3;
	}

	public double getArea() {// 一个名为getArea()的方法,返回该三角形的面积。
		if (isTriangle() == true) {
			double P = (side1 + side2 + side3) / 2;
			double S = (P * (P - side1) * (P - side2) * (P - side3));
			return Math.sqrt(S);
		} else {
			System.out.println("输入的三条边无法构成三角形。");
			return 0;
		}

	}

	public double getPerimeter() {// 一个名为getPerimeter()的方法,返回该三角形的周长。
		if (isTriangle() == true) {
			double P = side1 + side2 + side3;
			return P;
		} else {
			System.out.println("输入的三条边无法构成三角形。");
			return 0;

		}
	}

	public boolean isTriangle() {// 一个名为isTriangle()的方法,判断三边是否能构成三角形。
		if ((side1 + side2) > side3 && (side1 + side3) > side2 && (side2 + side3) > side1) {
			return true;
		} else {
			return false;
		}
	}

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

Test(实现)类

package com.sdbi.hhh;

import java.io.ObjectInputStream.GetField;

public class Test {
	public static void main(String[] args) {
		System.out.println("----------圆形------------");
		Circle c = new Circle();
		c.setRadius();// 创建一个圆,并对半径赋值。
		c.getArea();// 用定义好的圆的半径计算圆的面积。
		System.out.println("圆的面积为:" + c.getArea());
		c.getPerimeter();// 用定义好的圆的半径计算圆的周长。
		c.setPerimeter();
		System.out.println("圆的周长为:" + c.getPerimeter());
		System.out.println(c.toString());
		System.out.println("--------------------------");
		System.out.println("----------矩形------------");
		Rectangle r = new Rectangle();
		r.getSide1();// 创建一个矩形的长
		r.getSide2();// 创建一个矩形的宽
		r.setSide1();// 将获得的长的值返回到变量
		r.setSide2();// 将获得的宽的值返回到变量
		r.getArea();// 计算矩形的面积
		System.out.println("矩形的面积为:" + r.getArea());
		r.getPerimeter();// 就散矩形的周长
		System.out.println("矩形的周长为:" + r.getPerimeter());
		System.out.println(r.toString());
		System.out.println("--------------------------");
		System.out.println("----------三角形------------");
		Triangle t = new Triangle();
		t.setSide1();
		t.setSide2();
		t.setSide3();
		t.isTriangle();
		if (t.isTriangle() == true) {
			System.out.println("输入的三条边可以构成三角形");
			t.getArea();
			System.out.println("三角形的面积为:" + t.getArea());
			t.getPerimeter();
			System.out.println("三角形的周长为:" + t.getPerimeter());
			t.toString();
			System.out.println(t.toString());
		} else {
			System.out.println("输入的三条边不可以构成三角形");
		}
		System.out.println("--------------------------");

	}
}

下面附上代码原图:


Geometric类


Circle类


Rectangle类


Triangle类


Test(实现)类


最后附上运行结果:


诶嘿!

posted @ 2022-04-01 15:50  HeartCloud  阅读(292)  评论(0编辑  收藏  举报
-->