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类

Java面向对象(下)作业

Circle类

Java面向对象(下)作业

Rectangle类

Java面向对象(下)作业

Triangle类

Java面向对象(下)作业

Test(实现)类

Java面向对象(下)作业

最后附上运行结果:

Java面向对象(下)作业

Java面向对象(下)作业

Original: https://www.cnblogs.com/soosoo/p/16087249.html
Author: HeartCloud
Title: Java面向对象(下)作业

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/599125/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 记一次部署系列:grafana配置特定指标进行邮件告警

    { "__inputs": [ { "name": "DS_PROMETHEUS", "label"…

    数据库 2023年6月9日
    073
  • Js前端-路由管理器函数

    buildUrl:function( path ,params ){ let url = "" + path; let _paramUrl = "&q…

    数据库 2023年6月9日
    080
  • 系统发布springboot项目

    首先把项目终止服务,但这样的做法不是很好,也可以来个配置文件 1.查看运行的java文件有哪些,位置在哪里,端口号是多少 ps -ef | grep java 2.结束端口进程的运…

    数据库 2023年6月6日
    082
  • Maven进行clean时报错,解决方法

    Q1:由于网络原因,maven仓库中产生了后缀LastUpdated文件,再次clean直接报错 参考方法:https://www.cnblogs.com/DDgougou/p/1…

    数据库 2023年6月9日
    0116
  • 万恶的Jackson

    一、吐槽 已经是凌晨12点了我还是睡不着我所有的实体类时间用的j8的LocalDateTime这就导致一个问题:jackson不能序列化时间,因为它不支持j8的Api,让我添加 j…

    数据库 2023年6月6日
    078
  • Java面试题(五)–Rabbits

    1、什么是MyBatis? 1、Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建…

    数据库 2023年6月16日
    0106
  • 数据库发展史2–数据仓库

    ​ 回顾数据仓库的发展历程,大致可以将其分为几个阶段:萌芽探索到全企业集成时代、企业数据集成时代、混乱时代–“数据仓库之父”间的论战、理论模型确…

    数据库 2023年6月11日
    0103
  • Redis——数据操作

    2022-09-20 Redis——select Redis数据库中的数据库的个数为: 16个,使用0号数据库开始的,到第15个数据库结束。 在ubantu中,进入Redis客户端…

    数据库 2023年6月14日
    069
  • SpringSecurity

    一、SpringSecurity介绍 1、介绍 Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的事实上的标…

    数据库 2023年6月6日
    090
  • K8S的安装部署以及基础知识

    Kubernetes(K8S)概述 Kubernetes又称作k8s,是 Google在2014年发布的一个开源项目。 最初Google开发了一个叫 Borg的系统(现在命名为Om…

    数据库 2023年6月6日
    095
  • zabbix自定义监控(mysql主从状态和延迟)

    zabbix自定义监控 需要先配置mysql主从,从库上需要安装zabbix_agentdzabbix_server配置zabbix_agentd配置mysql主从配置 监控mys…

    数据库 2023年6月14日
    080
  • volatility3-windows插件

    volatility3和volatility有很大的区别 查看镜像信息,volatility会进行分析 <span class=”ne-text”>python vol…

    数据库 2023年6月11日
    087
  • 2022-8-17 mysql 第三天

    子查询 按照结果集的行列数不同,子查询可以分为以下几类: 标量子查询:结果集只有一行一列(单行子查询) 列子查询:结果集有一列多行 行子查询:结果集有一行多列 表子查询:结果集多行…

    数据库 2023年6月14日
    079
  • Java中AES加密和解密的方法分享

    转自: http://www.java265.com/JavaJingYan/202206/16559759223818.html 下文笔者讲述java代码实现的AES加密和解密的…

    数据库 2023年6月11日
    094
  • day43-反射02

    Java反射02 2.Class类 2.1基本介绍 Class类也是类,因此也继承Object类 Class类对象不是new出来的,而是系统创建的 对于某个类的Class类对象,在…

    数据库 2023年6月11日
    080
  • python_numpy数组入门

    NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。 在 NumPy中,每一个线性的数组称为是一个轴(axis…

    数据库 2023年6月11日
    089
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球