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. Centos 6.5 启动报错 "Kernel panic - not syncing: Attempted to kill init"解决办法

    某一天,开发同事突然告诉我服务器上自己的虚拟机连不上了,我登陆到服务器CAS管理界面,重启虚拟机后发现报错了 问题:Kernel panic - not syncing: Attempted to k ...

  2. 四:net core(.NET 6)使用Filter过滤器拦截webapi方法

    Filter的基本用法 代码在最下方 使用filter过滤器,来实现拦截接口信息.咱们先新建一个项目,在原有的webapi上面,选择添加项目,添加一个类库项目: 我起个名字,就叫 Wsk.Core.F ...

  3. 关于Linux的一些基础命令

    今天学习scala语言,在linux系统上运行,发现对Linux的命令不太熟悉,为了熟悉掌握,也便于查询,这些命令主要是为了收藏备用,,希望能帮助到大家 linux20个常用命令是: 1.显示日期的指 ...

  4. jquery 改变标签样式

    jQuery改变标签的样式一般有3种 预置好class,然后通过jQuery改变元素的class名,使用的是addClass.removeClass 直接改变元素的css属性值,这种是通过添加styl ...

  5. 夜晚场景图像ISP增强算法

    夜晚场景图像ISP增强算法 输入输出接口 Input: (1)图像视频分辨率(整型int) (2)图像视频格式(RGB,YUV,MP4等) (3)摄像头标定参数(中心位置(x,y)和5个畸变 系数(2 ...

  6. TinyML-TVM是如何驯服Tiny的(下)

    TinyML-TVM是如何驯服Tiny的(下) Lazy Execution实际上,随着通信开销开始占主导地位,一旦用户请求,就执行算子的开销变得非常昂贵.可以通过延迟评估直到用户需要调用的结果来提高 ...

  7. jvm相关自我总结和 VisualVM工具的使用

    idea 二个工具: jclasslib Hexview jdk监控工具 VisualVM工具的使用: https://www.ibm.com/developerworks/cn/java/j-lo- ...

  8. python中json.dump()与json.dumps()的区别

    1.将python数据结构转换为json字符串(json.dumps()) >>> import json >>> data={'name':'pipi','age ...

  9. 【NX二次开发】Block UI 指定坐标系

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  10. 【UG二次开发】 UF_OBJ_ask_name 获取对象名字

    代码 char name[256]; UF_OBJ_ask_name(objTag, name);