欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

Java黑皮书课后题第11章:11.1(Triangle类)设计一个名为Triangle的类来继承GeometricObject类。该类包括:

发布时间:2024/8/1 java 56 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Java黑皮书课后题第11章:11.1(Triangle类)设计一个名为Triangle的类来继承GeometricObject类。该类包括: 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

画出Triangle类和GeometricObject类的UML图,并实现这些类。编写一个测试程序,提示用户输入三角形的三条边、颜色以及一个boolean值表明该三角形是否填充。程序需要根据输入创建一个具有指定边的三角形,并设置color和filled属性。程序需要显示面积、周长、颜色以及表明是否填充的真or假值

  • Triangle类包括
  • GeometricObject类在哪儿
  • UML图
  • 代码
    • Test01.java:本题测试程序
    • Test01_GeometricObject.java:GeometricObject构造类
    • Test01_Triangle.java:Triangle构造类

Triangle类包括

三个名为side1 side2 side3的double类型数据域表示三角形三条边,默认值为1.0
一个无参构造方法,创建一个默认的三角形
一个创建指定side1 side2 side3值的三角形的构造方法
所有三个数据域的访问器方法
一个名为getArea()的方法返回该三角形面积

计算三角形面积公式详见2.19:https://blog.csdn.net/weixin_46356698/article/details/119791257
这是我从2.19直接复制来的公式:
s = (side1 + side2 + side3) / 2
area = Math.pow(s*(s-side1)(s-side2)(s-side3), 0.5)

getPerimeter方法返回三角形周长
toString()方法返回该三角形的字符串描述:

return "Triangle: side1 = " + side1 + " side2 = " + side2 + " side = " + side3;

GeometricObject类在哪儿

因为这道题没有给出这个类具体代码,需要从课本里翻出来
P355页有GeometricObject类的UML图
需要对着UML图写出来具体代码

UML图

代码

Test01.java:本题测试程序

import java.util.Arrays; import java.util.Scanner;public class Test01 {// 测试程序public static void main(String[] args) {// 提示用户输入三条边、颜色、是否填充的boolean值Scanner input = new Scanner(System.in);System.out.print("输入三条边的值:");int side1 = input.nextInt(), side2 = input.nextInt(), side3 = input.nextInt();System.out.print("输入颜色:");String color = input.next();System.out.print("是否填充(boolean值):");boolean filled = input.nextBoolean();// 设置以上属性,注意判断三条边能否创建一个三角形且值全部大于0【隐藏条件】if ( !isTriangle(side1, side2, side3) ){System.out.println("输入的三条边不符合要求");System.exit(0);}/**方法1:直接new子类【推荐使用】*/Test01_Triangle myTri = new Test01_Triangle(side1, side2, side3);myTri.setColor(color);myTri.setFilled(filled);// 显示面积、周长、颜色、是否填充System.out.println(myTri.getArea() + "\n" + myTri.getPerimeter() + "\n"+ myTri.getColor() + "\n" + myTri.isFilled());/**方法2:多态【不推荐使用,但可以深化语法,了解】*/Test01_GeometricObject myGO = new Test01_Triangle(side1, side2, side3);myGO.setColor(color);myGO.setFilled(filled);//如何显示面积和周长:将myGO强转为Test01_Triangle/**System.out.println(((Test01_Triangle) myGO).getArea() + "\n" + ((Test01_Triangle) myGO).getPerimeter() + "\n"+ myTri.getColor() + "\n" + myTri.isFilled());*/}public static boolean isTriangle(double s1, double s2, double s3){// 将三条边传入数组,使用Arrays类的sort方法排序// 最短的两条边长度小于第三条边double[] arr = {s1, s2, s3};Arrays.sort(arr);boolean re1 = arr[0] + arr[1] > arr[2];boolean re2 = (s1 > 0) && (s2 > 0) && (s3 > 0);return re1 && re2;} }

Test01_GeometricObject.java:GeometricObject构造类

import java.util.Arrays; import java.util.Date; import java.util.Scanner;public class Test01_GeometricObject {// 三个数据域String color;boolean filled;Date dateCreated;// 无参构造方法public Test01_GeometricObject(){dateCreated = new Date();}// 有参构造方法public Test01_GeometricObject(String color, boolean filled){this.color = color;this.filled = filled;dateCreated = new Date();}// getter and setter 颜色值public String getColor() {return color;}public void setColor(String color) {this.color = color;}// getter and setter filledpublic boolean isFilled() {return filled;}public void setFilled(boolean filled) {this.filled = filled;}// 获取DateCreatedpublic Date getDateCreated() {return dateCreated;}// toString@Overridepublic String toString() {return "Test01_GeometricObject{" +"color='" + color + '\'' +", filled=" + filled +", dateCreated=" + dateCreated +'}';} }

Test01_Triangle.java:Triangle构造类

public class Test01_Triangle extends Test01_GeometricObject{// 3个数据域public double side1 = 1;public double side2 = 1;public double side3 = 1;// 无参构造public Test01_Triangle(){}// 有参构造public Test01_Triangle(double side1, double side2, double side3){this.side1 = side1;this.side2 = side2;this.side3 = side3;}// 访问器方法public double getSide1() {return side1;}public double getSide2() {return side2;}public double getSide3() {return side3;}// 返回三角形面积的getArea()public double getArea(){double s = (side1 + side2 + side3) / 2;return Math.pow(s * (s - side1) * (s - side2) * (s - side3), 0.5);}// 返回三角形周长public double getPerimeter(){return side1 + side2 + side3;}// 返回该三角形的字符串描述@Overridepublic String toString(){return "Triangle: side1 = " + side1 + " side2 = " + side2 + " side = " + side3;} }

总结

以上是生活随笔为你收集整理的Java黑皮书课后题第11章:11.1(Triangle类)设计一个名为Triangle的类来继承GeometricObject类。该类包括:的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。