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

  • (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类

  1. package com.sdbi.hhh;
  2. import java.awt.Color;
  3. //(1)设计一个名为Geometric的几何图形的抽象类,该类包括:
  4. //①两个名为color、filled属性分别表示图形颜色和是否填充。
  5. //②一个无参的构造方法。
  6. //③一个能创建指定颜色和填充值的构造方法。
  7. //④一个名为getArea()的抽象方法,返回图形的面积。
  8. //⑤一个名为getPerimeter()的抽象方法,返回图形的周长。
  9. //⑥一个名为toString()的方法,返回圆的字符串描述。
  10. abstract class Geometric {// 定义一个抽象类Geometric
  11. String Color;// 定义一个color属性表示图形颜色
  12. boolean fillde;// 定义一个filled属性表示是否填充
  13. double getArea;// 定义一个图形的面积的抽象方法
  14. double getPerimeter;// 定义一个图形周长的抽象方法
  15. public void Geometric() {// 定义一个无参数的构造方法
  16. }
  17. public void Geometric(String Color, boolean fillde) {// 定义一个含有color和filled参数的构造方法
  18. this.Color = Color;
  19. this.fillde = fillde;
  20. }
  21. @Override
  22. public String toString() {
  23. return "Geometric [Color=" + Color + ", fillde=" + fillde + "]";
  24. }
  25. }

Circle类

  1. package com.sdbi.hhh;
  2. import java.awt.geom.Area;
  3. import java.nio.channels.Pipe;
  4. import java.util.Scanner;
  5. import java.util.Set;
  6. import org.omg.CORBA.PUBLIC_MEMBER;
  7. ////设计一个名为Circle的圆类来实现Geometric类,该类包括:
  8. //①一个名为radius的double属性表示半径。
  9. //②一个无参构造方法创建圆。
  10. //③一个能创建指定radius的圆的构造方法。
  11. //④radius的访问器方法。
  12. //⑤一个名为getArea()的方法,返回该圆的面积。
  13. //⑥一个名为getPerimeter()的方法,返回圆的周长。
  14. //⑦一个名为toString()的方法,返回该圆的字符串描述。
  15. public class Circle extends Geometric {
  16. public static double radius;// 定义一个名为radius的double属性表示半径。
  17. public static double area;// 定义一个名为area的double属性表示面积。
  18. public final double Pi = 3.14;
  19. String Color = "紫色";// 定义一个color属性表示图形颜色
  20. boolean fillde = true;// 定义一个filled属性表示是否填充
  21. public Circle() {// 一个无参构造方法创建圆
  22. }
  23. public void setRadius() {// 用户输入半径,局部变量覆盖全局变量。
  24. System.out.println("请输入圆的半径长度");
  25. Scanner sc = new Scanner(System.in);
  26. double a = sc.nextDouble();
  27. System.out.println("圆的半径为:" + a);
  28. this.radius = a;
  29. }
  30. public Circle(double radius) {// 一个能创建指定radius的圆的构造方法
  31. this.radius = radius;
  32. }
  33. public double getRadius() {// radius的访问器方法
  34. return radius;
  35. }
  36. public double getArea() {// 一个名为getArea()的方法,返回该圆的面积。
  37. double S = Pi * radius * radius;// 圆的面积为pi*r^2
  38. return S;// 返回S的值给getArea
  39. }
  40. public double getPerimeter() {// 一个名为getPerimeter()的方法,返回圆的周长。
  41. double P = Pi * Pi * radius;
  42. // System.out.println("圆的周长为:" + P);
  43. return (P);
  44. }
  45. public void setPerimeter() {//将周长变量赋上计算所得到的周长的值。
  46. this.area = getPerimeter();
  47. }
  48. @Override
  49. public String toString() {
  50. return "Circle [radius=" + radius + ", area=" + area + ", Color=" + Color + ", fillde=" + fillde + ", getArea="
  51. + getArea()+ ", getPerimeter=" + getPerimeter() + "]";
  52. }
  53. }

Rectangle类

  1. package com.sdbi.hhh;
  2. import java.util.Scanner;
  3. //(3)设计一个名为Rectangle的矩形类来实现Geometric类,该类包括:
  4. //两个名为side1、side2的double属性表示矩形的两条边。
  5. //一个无参构造方法创建矩形。
  6. //一个能创建指定side1和side2的矩形的构造方法。
  7. //side1和side的访问器方法。
  8. //一个名为getArea()的方法,返回该矩形的面积。
  9. //一个名为gelPerimeter()的方法,返回该矩形的周长。
  10. //一个名为toString()的方法,返回该矩形的字符串描述。
  11. public class Rectangle extends Geometric {
  12. public double side1;
  13. public double side2;// 两个名为side1、side2的double属性表示矩形的两条边。
  14. public String Color = "红色";
  15. public boolean filllde = false;
  16. public Rectangle() {// 一个无参构造方法创建矩形。
  17. }
  18. public Rectangle(double side1, double side2) {// 一个能创建指定sidel和side2的矩形的构造方法。
  19. this.side1 = side1;
  20. this.side2 = side2;
  21. }
  22. public double getSide1() {// side1的访问器方法
  23. return side1;
  24. }
  25. public void setSide1() {// side1的赋值方法
  26. System.out.println("请输入矩形的长");
  27. Scanner a = new Scanner(System.in);
  28. this.side1 = a.nextDouble() ;
  29. }
  30. public double getSide2() {// side2的访问器方法
  31. return side2;
  32. }
  33. public void setSide2() {// side1的赋值方法
  34. System.out.println("请输入矩形的宽");
  35. Scanner a = new Scanner(System.in);
  36. this.side2 = a.nextDouble();
  37. }
  38. public double getArea() {// 一个名为getArea()的方法,返回该矩形的面积。
  39. double S = side1 * side2;
  40. return S;
  41. }
  42. public double getPerimeter() {// 一个名为gelPerimeter()的方法,返回该矩形的周长。
  43. double P = side1 * 2 + side2 * 2;
  44. return P;
  45. }
  46. @Override
  47. public String toString() {
  48. return "Rectangle [side1=" + side1 + ", side2=" + side2 + ", Color=" + Color + ", fillde=" + fillde
  49. + ", getArea=" + getArea() + ", getPerimeter=" + getPerimeter() + "]";
  50. }
  51. }

Triangle类

  1. package com.sdbi.hhh;
  2. import java.util.Scanner;
  3. //(4)设计一个名为Triangle的三角形类来实现Geometric类,该类包括:
  4. //三个名为side1,side2和side3的double属性表示三角形的三条边。
  5. //一个无参构造方法创建三角形。
  6. //一个能创建指定side1,side2和side3的矩形的构造方法。
  7. //side1,side2和side3的访问器方法。
  8. //一个名为getArea()的方法,返回该三角形的面积。
  9. //一个名为getPerimeter()的方法,返回该三角形的周长。
  10. //一个名为isTriangle()的方法,判断三边是否能构成三角形。
  11. //一个名为toString()的方法,返回三边较小的字符串描述。
  12. public class Triangle extends Geometric {
  13. public double side1;// 名为side1的double属性表示三角形的一条边。
  14. public double side2;// 名为side2的double属性表示三角形的一条边。
  15. public double side3;// 名为side3的double属性表示三角形的一条边。
  16. public String color = "粉色";
  17. public boolean fillde = true;
  18. public Triangle() {// 一个无参构造方法创建三角形。
  19. }
  20. public Triangle(double side1, double side2, double side3) {// 一个能创建指定side1,side2和side3的矩形的构造方法。
  21. this.side1 = side1;
  22. this.side2 = side2;
  23. this.side3 = side3;
  24. }
  25. public void setSide1() {// 获取side1的值
  26. System.out.println("请输入三角形的第一条边长度");
  27. Scanner sc = new Scanner(System.in);
  28. this.side1 = sc.nextDouble();
  29. }
  30. public double getSide1() {// side1的访问器方法。
  31. return side1;
  32. }
  33. public void setSide2() {// 获取side2的值
  34. System.out.println("请输入三角形的第二条边长度");
  35. Scanner sc = new Scanner(System.in);
  36. this.side2 = sc.nextDouble();
  37. }
  38. public double getSide2() {// side2的访问器方法。
  39. return side2;
  40. }
  41. public void setSide3() {// 获取side3的值
  42. System.out.println("请输入三角形的第三条边长度");
  43. Scanner sc = new Scanner(System.in);
  44. this.side3 = sc.nextDouble();
  45. }
  46. public double getSide3() {// side3的访问器方法。
  47. return side3;
  48. }
  49. public double getArea() {// 一个名为getArea()的方法,返回该三角形的面积。
  50. if (isTriangle() == true) {
  51. double P = (side1 + side2 + side3) / 2;
  52. double S = (P * (P - side1) * (P - side2) * (P - side3));
  53. return Math.sqrt(S);
  54. } else {
  55. System.out.println("输入的三条边无法构成三角形。");
  56. return 0;
  57. }
  58. }
  59. public double getPerimeter() {// 一个名为getPerimeter()的方法,返回该三角形的周长。
  60. if (isTriangle() == true) {
  61. double P = side1 + side2 + side3;
  62. return P;
  63. } else {
  64. System.out.println("输入的三条边无法构成三角形。");
  65. return 0;
  66. }
  67. }
  68. public boolean isTriangle() {// 一个名为isTriangle()的方法,判断三边是否能构成三角形。
  69. if ((side1 + side2) > side3 && (side1 + side3) > side2 && (side2 + side3) > side1) {
  70. return true;
  71. } else {
  72. return false;
  73. }
  74. }
  75. @Override
  76. public String toString() {
  77. return "Triangle [side1=" + side1 + ", side2=" + side2 + ", side3=" + side3 + ", Color=" + Color + ", fillde="
  78. + fillde + ", getArea=" + getArea() + ", getPerimeter=" + getPerimeter() + "]";
  79. }
  80. }

Test(实现)类

  1. package com.sdbi.hhh;
  2. import java.io.ObjectInputStream.GetField;
  3. public class Test {
  4. public static void main(String[] args) {
  5. System.out.println("----------圆形------------");
  6. Circle c = new Circle();
  7. c.setRadius();// 创建一个圆,并对半径赋值。
  8. c.getArea();// 用定义好的圆的半径计算圆的面积。
  9. System.out.println("圆的面积为:" + c.getArea());
  10. c.getPerimeter();// 用定义好的圆的半径计算圆的周长。
  11. c.setPerimeter();
  12. System.out.println("圆的周长为:" + c.getPerimeter());
  13. System.out.println(c.toString());
  14. System.out.println("--------------------------");
  15. System.out.println("----------矩形------------");
  16. Rectangle r = new Rectangle();
  17. r.getSide1();// 创建一个矩形的长
  18. r.getSide2();// 创建一个矩形的宽
  19. r.setSide1();// 将获得的长的值返回到变量
  20. r.setSide2();// 将获得的宽的值返回到变量
  21. r.getArea();// 计算矩形的面积
  22. System.out.println("矩形的面积为:" + r.getArea());
  23. r.getPerimeter();// 就散矩形的周长
  24. System.out.println("矩形的周长为:" + r.getPerimeter());
  25. System.out.println(r.toString());
  26. System.out.println("--------------------------");
  27. System.out.println("----------三角形------------");
  28. Triangle t = new Triangle();
  29. t.setSide1();
  30. t.setSide2();
  31. t.setSide3();
  32. t.isTriangle();
  33. if (t.isTriangle() == true) {
  34. System.out.println("输入的三条边可以构成三角形");
  35. t.getArea();
  36. System.out.println("三角形的面积为:" + t.getArea());
  37. t.getPerimeter();
  38. System.out.println("三角形的周长为:" + t.getPerimeter());
  39. t.toString();
  40. System.out.println(t.toString());
  41. } else {
  42. System.out.println("输入的三条边不可以构成三角形");
  43. }
  44. System.out.println("--------------------------");
  45. }
  46. }

下面附上代码原图:


Geometric类


Circle类


Rectangle类


Triangle类


Test(实现)类


最后附上运行结果:


诶嘿!

Java面向对象(下)作业的更多相关文章

  1. java 面向对象--------时间作业

    编写Java应用程序.首先,定义一个时钟类——Clock,它包括三个int型 成员变量分别表示时.分.秒,一个构造方法用于对三个成员变量(时.分.秒) 进行初始化,还有一个成员方法show()用于显示 ...

  2. java面向对象下:Java数据库编程

    19.Java数据库编程: JDBC概述:        JDBC(Java Database Connection)是java中提供的一套数据库编程API,它定义了一套用来访问数据库的标准Java类 ...

  3. java面向对象下:JavaXML解析技术

    20.JavaXML解析技术: XML概述:        XML可扩展标记性语言,用于数据表达和数据传递. XML语法规则:        合法DTDXML:1.内部DTD(和XML一起):2.外部 ...

  4. java面向对象(下)-抽象类

    抽象类和抽象方法 抽象类和抽象方法必须使用abstract修饰符来定义,有抽象方法的类只能被定义成抽象类,抽象类里可以没有抽象方法 抽象类和抽象方法的规则如下 1.抽象类和抽象方法必须要用abstra ...

  5. Java面向对象作业-用接口方式测试向下转型

    Java面向对象作业-用接口方式测试向下转型 根据视频的里实例 我们直接修改Test2测试方法: package com.java1234.chap03.sec13; public class Tes ...

  6. 1903021121-刘明伟-java十一周作业-java面向对象编程

    项目 内容 课程班级博客链接 19级信计班(本) 作业要求链接 第十一周作业 博客名称 1903021121-刘明伟-java十一周作业-java面向对象 要求 每道题要有题目,代码(使用插入代码,不 ...

  7. Java面向对象 网络编程 下

    Java面向对象 网络编程  下 知识概要:                   (1)Tcp 练习 (2)客户端向服务端上传一个图片. (3) 请求登陆 (4)url 需求:上传图片. 客户端:   ...

  8. Java面向对象 集合(下)

      Java面向对象 集合(下) 知识概要:               (1)Map集合的体系结构 (2)Map集合的方法 (3)HashMap TreeMap (4)集合框架中的常用工具类 ( ...

  9. Java面向对象 继承(下)

     Java面向对象   继承(下) 知识概要:               (1)抽象类 1.1 抽象类概述                            1.2 抽象类的特点       ...

  10. 20175221 《Java程序设计》迭代和JDB(课下作业,选做):

    20175221 <Java程序设计> 迭代和JDB(课下作业,选做): 任务详情 1 使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式进行递归编程实现求组合数C(m,n)的功 ...

随机推荐

  1. RedirectAttributes重定向

    1.url显示参数信息(不安全) @Controller @RequestMapping("/UserOperate") public class UserController { ...

  2. 完全卸载nginx的详细步骤

    一个执着于技术的公众号 前言 在开局配置Nginx时有可能会配置错误,报各种错误代码.看不懂或者懒得去看这个报错时,其实最简单的方式是卸载并重装咯.今天就带大家一起学习下,如何彻底卸载nginx程序. ...

  3. 扩展.Net Core Identity Server 授权方式,实现 手机号+ 验证码 登录

    背景 国内来讲,注册/登录流程都是尽可能的简单,注册流程复杂,容易流失客户.手机号 + 短信验证码的方式非常普遍:但是框架默认并没有类似的功能,需要我们自己进行扩展. 思路 验证登录手机号为注册用户, ...

  4. NS2的LEACH仿真出来的nam文件拓扑的节点为什么x=0,且y=0

    查看.tr文件和.nam发文件下所有的节点的x,y值都是(0,0),nam图像更没有运行出来 于是我将if { $opt(sc) == "" } {puts "*** N ...

  5. Android 12(S) 图像显示系统 - SurfaceFlinger GPU合成/CLIENT合成方式 - 随笔1

    必读: Android 12(S) 图像显示系统 - 开篇 一.前言 SurfaceFlinger中的图层选择GPU合成(CLIENT合成方式)时,会把待合成的图层Layers通过renderengi ...

  6. C#/VB.NET 实现Word和ODT文档相互转换

    ODT文档格式一种开放文档格式(OpenDocument Text).通常,ODT格式的文件可以使用LibreOffice Writer.MS Word或其他一些文档编辑器来打开.我们在处理文档时,可 ...

  7. 思索 p5.js 的最佳实践

    思索 p5.js 的最佳实践 本文写于 2020 年 12 月 18 日 p5.js 是一个 JavaScript 库,用于为艺术家.设计师提供更容易上手的创意编程. 它有着完整的一套基于 Canva ...

  8. 国内访问 git 慢的方法

    在国内访问 git 的时候,总会存在访问慢或者git clone 的时候报下面的错误 这个时候,我们可以使用代理的方式去进行访问 需要注意的是:你必须存在一个国外的,能够让你快速访问到 GitHub ...

  9. Redis数据类型:五大基本数据类型及三种特殊类型

    String (字符串类型) String是redis最基本的类型,你可以理解成Memcached一模一样的类型,一个key对应一个value. String类型是二进制安全的,意思是redis的st ...

  10. 树形dp基础

    今天来给大家讲一下数形dp基础 树形dp常与树上问题(lca.直径.重心)结合起来 而这里只讲最最基础的树上dp 1.选课 题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程 ...