Program:按照下面要求完成类的设计

(1)设计一个平面图形抽象类和一个立体图形抽象类,提供该类对象公共的方法和属性。

(2)修改项目三中第2题中所设计的球类、圆柱类,圆锥类、矩形类、三角形类、圆类,分别继承平面图形抽象类和立体图形抽象类。

(3)运行项目三中第2题中的测试方法,进行测试。

Description:

1、在abstractclass包下分别定义了平面图像抽象类Planum和立体图形抽象类Soild。

2、在entity包中,创建了实体类:Triangle(三角形),Rectangle(矩形),Cylinder(圆柱体),Sphere(球体)。

3、在main包中定义测试类TestDemo,进行测试。

    具体代码如下:

抽象类

 1 /*
2 * Description:定义平面图形的抽象类
3 *
4 * Written By:Cai
5 *
6 * Date Written:2017-10-16
7 *
8 * */
9
10
11 package abstractclass;
12
13 public abstract class Planum {
14
15 private double sideLength; //边长
16 private double height; //高
17
18 //定义构造方法
19 public Planum(double sideLength,double height) {
20
21 this.sideLength = sideLength;
22 this.height = height;
23 }
24
25 //定义setter()和getter()方法
26
27 public double getSideLength() {
28 return sideLength;
29 }
30
31 public void setSideLength(double sideLength) {
32 this.sideLength = sideLength;
33 }
34
35 public double getHeight() {
36 return height;
37 }
38
39 public void setHeight(double height) {
40 this.height = height;
41 }
42
43 //抽象抽象方法,求得面积
44 public abstract double getArea();
45
46
47 }
 1 /*
2 * Description:定义立体图形的抽象类
3 *
4 * Written By:Cai
5 *
6 * Date Written:2017-10-16
7 *
8 * */
9
10 package abstractclass;
11
12 public abstract class Solid {
13
14 private double r;         //声明半径
15 private final double PI = 3.14; //声明π
16
17 //定义构造方法
18 public Solid(double r) {
19
20 this.r = r;
21 }
22
23 //定义sette()和getter()方法
24
25 public double getR() {
26 return r;
27 }
28
29 public void setR(double r) {
30 this.r = r;
31 }
32
33 public double getPI() {
34
35 return this.PI;
36 }
37
38 //声明抽象方法,取得表面积
39 public abstract double getArea();
40 //声明抽象方法,取得体积
41 public abstract double getSolid();
42
45 }

实体类:

 1 /*
2 * Description:定义圆柱的实体类
3 *
4 * Written By:Cai
5 *
6 * Date Written:2017-10-16
7 *
8 * */
9
10 package entity;
11
12
13 import abstractclass.Solid;
14
15 public class Cylinder extends Solid {
16
17 private double height; //声明圆柱体的高度
18
19 //定义构造方法
20 public Cylinder(double r,double height) {
21 super(r);
22 this.height = height;
23 }
24
25 //实现父类抽象方法,求得圆柱的表面积
26 public double getArea() {
27
28 return 4 * this.getPI() * Math.pow(this.getR(), 2);
29 }
30
31 //实现父类抽象方法,求得圆柱的体积
32 public double getSolid() {
33
34 double result = this.getPI() * Math.pow(this.getR(), 2) * this.height;
35 return Math.round(result*100.0) / 100.0;
36 }
37 }
 1 /*
2 * Description:定义球的实体类
3 *
4 * Written By:Cai
5 *
6 * Date Written:2017-10-16
7 *
8 * */
9
10 package entity;
11
12 import abstractclass.Solid;
13
14 public class Sphere extends Solid {
15
16 //定义构造方法
17 public Sphere(double r) {
18 super(r);
19 }
20
21 //实现父类抽象方法,求得球的表面积
22 public double getArea() {
23
24 return 4 * this.getPI() * Math.pow(this.getR(), 2);
25 }
26
27 //实现父类抽象方法,求得球的体积
28 public double getSolid() {
29
30 return this.getPI() * Math.pow(this.getR(), 3);
31 }
32
33 }
 1 /*
2 * Description:定义矩形实体类
3 *
4 * Written By:Cai
5 *
6 * Date Written:2017-10-16
7 *
8 * */
9
10 package entity;
11
12 import abstractclass.Planum;
13
14 public class Rectangle extends Planum {
15
16 //定义构造方法
17 public Rectangle(double sideLength, double height) {
18
19 super(sideLength, height);
20 }
21
22 //实现父类的抽象方法,求得矩形面积
23 public double getArea() {
24
25 return this.getHeight() * this.getSideLength();
26 }
27
28
29 }
 1 /*
2 * Description:定义矩形实体类
3 *
4 * Written By:Cai
5 *
6 * Date Written:2017-10-16
7 *
8 * */
9
10 package entity;
11
12 import abstractclass.Planum;
13
14 public class Triangle extends Planum {
15
16 //定义构造方法
17 public Triangle(double sideLength, double height) {
18 super(sideLength, height);
19 }
20
21 //实现父类的抽象方法,求得三角形面积
22 public double getArea() {
23
24 return this.getHeight() * this.getSideLength() / 2;
25 }
26
27
28 }

测试类

 1 /*
2 * Description:定义测试类
3 *
4 * Written By:Cai
5 *
6 * Date Written:2017-10-16
7 *
8 * */
9
10 package main;
11
12 import entity.Cylinder;
13 import entity.Sphere;
14 import entity.Triangle;
15 import abstractclass.Planum;
16 import abstractclass.Solid;
17
18 public class TestDemo {
19
20 public static void main(String args[]) {
21
22 //实例化平面图形的抽象类对象
23 Planum tri = new Triangle(10, 10); //三角形
24 Planum rec = new entity.Rectangle(10,20); //矩形
25
26 //实例化立体图形的抽象类对象
27 Solid sph = new Sphere(1); //球体
28 Solid cyl = new Cylinder(1, 10); //圆柱
29
30 //打印平面图形的面积
31 System.out.println( "三角形的面积:" + tri.getArea() );
32 System.out.println( "矩形的面积:" + rec.getArea() );
33
34 System.out.println( "---------------风骚的Java分割线-----------------" );
35
36 //打印球体的表面积和体积
37 System.out.println( "球体的表面积:" + sph.getArea() );
38 System.out.println( "球体的体积:" + sph.getSolid() );
39
40 System.out.println( "---------------风骚的Java分割线-----------------" );
41
42 //打印圆柱体的表面积和体积
43 System.out.println( "圆柱体的表面积:" + cyl.getArea() );
44 System.out.println( "圆柱的体积:" + cyl.getSolid() );
45
46 }
47
48 }

Java实验项目三——平面图形和立体图形抽象类的更多相关文章

  1. Java实验项目三——职工类对象数组按照职工生日排序

    Program: 修改项目三(1)中的第3题,实现比较方法,将对象数组的数据按照生日的大小给职工排序. Description:令日期类MyDate和员工类Worker类实现接口Comparable, ...

  2. Java实验项目三——宠物商店

    Program:宠物商店的设计(继承,接口,线性线性表) Description:本题未实现图形用户界面,项目结构描述如下: classes.Pet:定义宠物接口,只要实现该接口的宠物类,都可存储进宠 ...

  3. Java实验项目三——简单工厂模式

    Program: 请采用采用简单工厂设计模式,为某个汽车销售店设计汽车销售系统,接口car至少有方法print(), 三个汽车类:宝马.奥迪.大众 (属性:品牌,价格),在测试类中根据客户要求购买的汽 ...

  4. Java实验项目三——编程实现Person类,学生类的设计及其继承关系

    Program: 编程实现Person类,学生类的设计及其继承关系 代码如下: 定义抽象类Person 1 /* 2 * Description:建立抽象类 3 * 4 * Written By:Ca ...

  5. Java实验项目三——采用面向对象的方式设计线性表

    Program: 采用面向对象的方法设计一个线性表,目的是为其他需要用线性表的应用提供线性表对象. 1.list包中,定义线性表类 1 /* 2 * Description:定义线性表类 3 * 4 ...

  6. Java实验项目三——面向对象定义职工类和日期类

    Program:按照如下要求设计类: (1)设计一个日期类,用于记录年.月.日,并提供对日期处理的常用方法. (2)设计一个职工类,该职工类至少具有下面的属性:职工号,姓名,性别,生日,工作部门,参加 ...

  7. Java实验项目三——递归实现字符串查找和替换操作

    Program:按照下面要求实现字符串的操作: (1)设计一个提供下面字符串操作的类 1)编写一个方法,查找在一个字符串中指定字符串出现的次数. 2)编写一个方法,参数(母字符串,目标字符串,替换字符 ...

  8. 20135231 JAVA实验报告三:敏捷开发与XP实践

    ---恢复内容开始--- JAVA实验报告三:敏捷开发与XP实践 20135231 何佳 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习 ...

  9. java实验报告三 敏捷开发与XP

    20145306 java 实验三 实验报告 实验内容 1.git下载结对同学的代码 2.修改结对同学的代码 3.实现代码重构 实验步骤 新建存储空间 git下载代码 将修改后的代码上传 上传结果 重 ...

随机推荐

  1. 面试官问:ZooKeeper 有几种节点类型?别再说 4 种啦!

    本文作者:HelloGitHub-老荀 好久没更新 ZK 的文章了,我想死你们啦.之前发布的 HelloZooKeeper 系列文章完结后,项目收获了将近 600 个 star.这远远超过了我自己的预 ...

  2. 使用Typora编写Markdown你真的会了吗

    目录 Typora 介绍 使用 常用快捷键 概述 标题 一级标题 二级标题 方式(推荐) 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 段落 粗体斜体删除线 下划线 注释 分割线 脚注 ...

  3. Linux 中的 守护进程

    什么是守护进程 脱离控制终端的,运行于后端的进程,由系统管理的,按计划自动启动/停止/重启,用以执行特定的任务. 为什么要有守护进程? 在某些需求场景下,我们希望某项系统任务能够按计划按预期,始终/自 ...

  4. python批量向kafka塞数据

    python批量向kafka塞数据 from kafka import KafkaClient from kafka.producer import SimpleProducer from kafka ...

  5. 情景剧:C/C++中的未定义行为(undefined behavior)

    写在前面 本文尝试以情景剧的方式,轻松.直观地解释C/C++中未定义行为(undefined behavior)的概念.设计动机.优缺点等内容1,希望读者能够通过阅读本文,对undefined beh ...

  6. ADAS摄像头图像环视拼接算法

    ADAS摄像头图像环视拼接算法 输入输出接口 Input: (1)4个摄像头采集的图像视频分辨率 (整型int) (2)4个摄像头采集的图像视频格式 (RGB,YUV,MP4等) (3)摄像头标定参数 ...

  7. Tengine AIFramework框架

    Tengine AIFramework框架 在开源大势下,以数据.算力.算法为三驾马车的人工智能实现了初级阶段的产业化落地.任何一个技术领域成熟的标志是从应用到平台的成功迭代,AI 也不例外,最终引导 ...

  8. 2-2.5-3D的室内场景理解

    2-2.5-3D的室内场景理解 主要内容 摘要随着低成本.紧凑型2-2.5-3D视觉传感设备的出现,计算机视觉界对室内环境的视景理解越来越感兴趣.本文为本课题的研究提供了一个全面的背景,从历史的角度开 ...

  9. 特斯拉Tesla Model 3整体架构解析(上)

    特斯拉Tesla Model 3整体架构解析(上) 一辆特斯拉 Model 3型车在硬件改造后解体 Sensors for ADAS applications 特斯拉 Model 3型设计的传感器组件 ...

  10. GPU端到端目标检测YOLOV3全过程(下)

    GPU端到端目标检测YOLOV3全过程(下) Ubuntu18.04系统下最新版GPU环境配置 安装显卡驱动 安装Cuda 10.0 安装cuDNN 1.安装显卡驱动 (1)这里采用的是PPA源的安装 ...