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. 用户从控制台输入n个整数,比较并输出其中的最大值和最小值

    package judgment;import java.util.Scanner;/** * 用户输入n个整数,找出最大值和最小值并打印输出 */public class Judgment { pu ...

  2. Python数学建模-01.新手必读

    Python 完全可以满足数学建模的需要. Python 是数学建模的最佳选择之一,而且在其它工作中也无所不能. 『Python 数学建模 @ Youcans』带你从数模小白成为国赛达人. 1. 数学 ...

  3. 安装T4环境

    Install-Package Microsoft.VisualStudio.TextTemplating.14.0 -Version 14.3.25407

  4. 『动善时』JMeter基础 — 28、JMeter函数助手详解

    目录 1.函数助手介绍 2.函数助手中的函数分类 3.常用函数介绍 (1)__Random函数 (2)__counter函数 (3)__time函数 (4)__property函数 (5)__setP ...

  5. Apple iWork(Pages、Numbers、Keynote)11.0 发布

    苹果今天将其专为 iOS 和 macOS 设备设计的 iWork 应用套件更新为版本 11,引入了许多新功能和改进功能. Pages 文稿. 文档高手,精美不言而喻. 进一步了解 Pages 文稿 & ...

  6. 『言善信』Fiddler工具 — 3、Fiddler界面布局详解【菜单栏】

    目录 (一)Fiddler界面布局介绍 (二)菜单栏 1.File文件菜单: 2.Edit编辑菜单: 3.Rules规则菜单: 4.Tools工具菜单: 5.View视图菜单: 6.Help帮助菜单: ...

  7. CVPR 2020目标跟踪多篇开源论文(下)

    CVPR 2020目标跟踪多篇开源论文(下) 6. Cooling-Shrinking Attack: Blinding the Tracker with Imperceptible Noises 作 ...

  8. 在 CUDA C/C++ kernel中使用内存

    在 CUDA C/C++ kernel中使用内存 如何在主机和设备之间高效地移动数据.本文将讨论如何有效地从内核中访问设备存储器,特别是 全局内存 . 在 CUDA 设备上有几种内存,每种内存的作用域 ...

  9. C#搞跨平台UI,封装Cef作为Cpf的控件支持Windows,Linux,Mac

    终于封装完成了,采用离屏渲染方式,支持JS和C#互相调用,C#方法自动绑定到JS里,中文输入有自动调整输入法位置. 基于开源的CefGlue 移植,本来想用CefSharp,不过这个里面有很多C++的 ...

  10. sql优化_隐式-显示转换

    ========  测试表1信息   =======SQL> select count(*) from tb_test; COUNT(*)----------   3000000   SQL&g ...