作业面向对象(下)
(1)设计一个名为Geometric的几何图形的抽象类,该类包括:
①两个名为color、filled属性分别表示图形颜色和是否填充。
②一个无参的构造方法。
③一个能创建指定颜色和填充值的构造方法。
④一个名为getArea()的抽象方法,返回图形的面积。
⑤一个名为getPerimeter()的抽象方法,返回图形的周长。
⑥一个名为toString()的方法,返回该几何图形的字符串描述。
package com.sdbi.shijun;
abstract class Geometric {
//两个名为color、filled属性分别表示图形颜色和是否填充。
//一个无参的构造方法。
//一个能创建指定颜色和填充值的构造方法。
//一个名为getArea()的抽象方法,返回图形的面积。
//一个名为getPerimeter()的抽象方法,返回图形的周长。
//一个名为toString()的方法,返回该几何图形的字符串描述
private String color;
private boolean filled;
public Geometric() {
System.out.println("无参的构造方法");
}
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()的方法,返回该圆的字符串描述。
package com.sdbi.shijun; public class Circle extends Geometric { private static final double pI =3.14; private double radius;//半径 //无参构造方法。 public Circle() { } public Circle(double radius) {//指定圆的构造方法 this.radius = radius; } public void setRadius(double radius) { this.radius = radius; } //radius的访问器方法 public double getRadius() { return radius; } double getArea() { return pI * radius *radius; } 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()的方法,返回该矩形的字符串描述。
package com.sdbi.shijun; public class Rectangle extends Geometric{ private double side1; private double side2; public Rectangle() { System.out.println(); } public Rectangle(double side1, double side2) { super(); this.side1 = side1; this.side2 = side2; } public void setSide1(double side1) { this.side1 = side1; } public double getSide1() { return side1; } public void setSide2(double side2) { this.side2 = side2; } public double getSide2() { return side2; } @Override double getArea() { // TODO Auto-generated method stub return side1 *side2; } @Override double getPerimeter() { // TODO Auto-generated method stub 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()的方法,返回三边较小的字符串描述。
package com.sdbi.shijun; public class Triangle extends Geometric{ private double side1; private double side2; private double side3; public Triangle() { // TODO Auto-generated constructor stub } 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 isTriangle(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 " shout [side1=" + side1 + "] "; } }
(5)编写测试类,测试图形的面积和周长
package com.sdbi.shijun; public class GeometricText { public static void main(String[] args) { Triangle st=new Triangle(); st.getArea(); st.getPerimeter(); st.isTriangle(3,4,5); st.toString(); System.out.println("-----------------------------------------------------"); Circle sc=new Circle(); sc.getArea(); sc.getPerimeter(); System.out.println("-----------------------------------------------------"); Rectangle sr=new Rectangle(); sr.getArea(); sr.getPerimeter(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」