Java实验项目三——平面图形和立体图形抽象类
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实验项目三——平面图形和立体图形抽象类的更多相关文章
- Java实验项目三——职工类对象数组按照职工生日排序
Program: 修改项目三(1)中的第3题,实现比较方法,将对象数组的数据按照生日的大小给职工排序. Description:令日期类MyDate和员工类Worker类实现接口Comparable, ...
- Java实验项目三——宠物商店
Program:宠物商店的设计(继承,接口,线性线性表) Description:本题未实现图形用户界面,项目结构描述如下: classes.Pet:定义宠物接口,只要实现该接口的宠物类,都可存储进宠 ...
- Java实验项目三——简单工厂模式
Program: 请采用采用简单工厂设计模式,为某个汽车销售店设计汽车销售系统,接口car至少有方法print(), 三个汽车类:宝马.奥迪.大众 (属性:品牌,价格),在测试类中根据客户要求购买的汽 ...
- Java实验项目三——编程实现Person类,学生类的设计及其继承关系
Program: 编程实现Person类,学生类的设计及其继承关系 代码如下: 定义抽象类Person 1 /* 2 * Description:建立抽象类 3 * 4 * Written By:Ca ...
- Java实验项目三——采用面向对象的方式设计线性表
Program: 采用面向对象的方法设计一个线性表,目的是为其他需要用线性表的应用提供线性表对象. 1.list包中,定义线性表类 1 /* 2 * Description:定义线性表类 3 * 4 ...
- Java实验项目三——面向对象定义职工类和日期类
Program:按照如下要求设计类: (1)设计一个日期类,用于记录年.月.日,并提供对日期处理的常用方法. (2)设计一个职工类,该职工类至少具有下面的属性:职工号,姓名,性别,生日,工作部门,参加 ...
- Java实验项目三——递归实现字符串查找和替换操作
Program:按照下面要求实现字符串的操作: (1)设计一个提供下面字符串操作的类 1)编写一个方法,查找在一个字符串中指定字符串出现的次数. 2)编写一个方法,参数(母字符串,目标字符串,替换字符 ...
- 20135231 JAVA实验报告三:敏捷开发与XP实践
---恢复内容开始--- JAVA实验报告三:敏捷开发与XP实践 20135231 何佳 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习 ...
- java实验报告三 敏捷开发与XP
20145306 java 实验三 实验报告 实验内容 1.git下载结对同学的代码 2.修改结对同学的代码 3.实现代码重构 实验步骤 新建存储空间 git下载代码 将修改后的代码上传 上传结果 重 ...
随机推荐
- 『动善时』JMeter基础 — 24、JMeter中使用“用户参数”实现参数化
目录 1.用户参数组件介绍 2.用户参数界面介绍 3.使用"用户参数"组件实现参数化 (1)测试计划内包含的元件 (2)线程组元件内容 (3)HTTP请求组件内容 (4)用户参数组 ...
- 浅析PriorityBlockingQueue优先级队列原理
介绍 当你看本文时,需要具备以下知识点 二叉树.完全二叉树.二叉堆.二叉树的表示方法 如果上述内容不懂也没关系可以先看概念. PriorityBlockingQueue是一个无界的基于数组的优先级阻塞 ...
- Navicat注册机报错No all pattern found! file already patched
第一步:先把注册机放入安装目录. (这一步非常关键,先不要打开桌面上安装好的快捷方式!!) 第二步:如果之前下载过,把注册表清理干净 计算机\HKEY_CURRENT_USER\SOFTWARE\Pr ...
- Jmeter(五十) - 从入门到精通高级篇 - jmeter 之模拟弱网进行测试(详解教程)
1.简介 在实际工作中,网络带宽一定不会是持续稳定的保持某一个值,而是有高有低.因此为了测试场景和实际能够无限的接近,所以我们需要模拟一下来达到效果.还有就是在实际的测试工作中,会因为业务需要,有时限 ...
- js的基本数据类型和typeof的关系
JavaScript数据类型是非常简洁的,它定义了6中基本数据类型 null:空.无.表示不存在,当为对象的属性赋值为null,表示删除该属性 undefined:未定义.当声明变量却没有赋值时会显示 ...
- 端到端TVM编译器(下)
端到端TVM编译器(下) 4.3 Tensorization DL工作负载具有很高的运算强度,通常可以分解为张量运算符,如矩阵乘法或一维卷积.这些自然分解导致了最近的添加张量计算原语.这些新的原语带来 ...
- TensorFlow用法
TensorFlow用法 什么是TensorFlow TensorFlow是一个开源软件库,用于使用数据流图进行数值计算.图中的节点表示数学运算,而图的边缘表示流动的多维数据数组(张量).这种灵活的体 ...
- Halide视觉神经网络优化
Halide视觉神经网络优化 概述 Halide是用C++作为宿主语言的一个图像处理相关的DSL(Domain Specified Language)语言,全称领域专用语言.主要的作用为在软硬层面上( ...
- MindArmour差分隐私
MindArmour差分隐私 总体设计 MindArmour的Differential-Privacy模块,实现了差分隐私训练的能力.模型的训练主要由构建训练数据集.计算损失.计算梯度以及更新模型参数 ...
- AI解决方案:边缘计算和GPU加速平台
AI解决方案:边缘计算和GPU加速平台 一.适用于边缘 AI 的解决方案 AI 在边缘蓬勃发展.AI 和云原生应用程序.物联网及其数十亿的传感器以及 5G 网络现已使得在边缘大规模部署 AI 成为可能 ...