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下载代码 将修改后的代码上传 上传结果 重 ...
随机推荐
- easyui datagrid 自定义单元格单击与双击事件(Day_38)
$(function(){ $('#tableId').datagrid({//单击事件 onClickRow:function(rowIndex,rowData){ alert("单 ...
- Centos 重置root密码
# cat /etc/system-release #查看版本 开机后在内核grub.2上敲击 e 在linux16 行(倒数第二行)末加入 " ...
- Qt 搜索框
一.前言 用户需要输入文本时,可使用QLineEdit控件进行编辑输入,缺点是样式相对单一. 在使用百度搜索输入框时,发觉比较人性化,故采用QLineEdt+QPushButton通过css样式实现自 ...
- Day30 BigInteger和BigDecimal
BigInteger与BigDecimal BigInteger类 Integer类作为int的包装类,能存储的最大整型值为2 31-1,Long类也是有限的, 最大为2 63-1.如果要表示再大的整 ...
- 【Azure 环境】Azure Key Vault (密钥保管库)中所保管的Keys, Secrets,Certificates是否可以实现数据粒度的权限控制呢?
问题描述 Key Vault (密钥保管库) 能不能针对用户授权实现指定用户只能访问某个或某些特定的key? 如当前有两个用户(User1, User2),在Key Vault中有10个Key,Use ...
- Qt开发笔记:OpenSSL库介绍、windows上mingw32版本的OpenSSL编译模块化
前言 Windows上mingw32版本的openssl的编译是属于比较棘手的,OpenSSL本身不提供支持.. OpenSSL 介绍 OpenSSL是一个开放源代码的软件库包,应用程序可 ...
- [leetcode] 208. 实现 Trie (前缀树)(Java)
208. 实现 Trie (前缀树) 实现Trie树,网上教程一大堆,没啥可说的 public class Trie { private class Node { private int dumpli ...
- 基础BaseController
1.依赖状态枚举 /** * status enum */ public enum Status { SUCCESS(0, "success", "成功"), ...
- Yolo:实时目标检测实战(上)
Yolo:实时目标检测实战(上) YOLO:Real-Time Object Detection 你只看一次(YOLO)是一个最先进的实时物体检测系统.在帕斯卡泰坦X上,它以每秒30帧的速度处理图像, ...
- CUDA 8混合精度编程
CUDA 8混合精度编程 Mixed-Precision Programming with CUDA 8 论文地址:https://devblogs.nvidia.com/mixed-precisio ...