图形的面积与周长计算程序-课后程序(JAVA基础案例教程-黑马程序员编著-第四章-课后作业)

news2024/9/20 18:36:03

【案例4-7】图形的面积与周长计算程序

欢迎点赞关注收藏

【案例介绍】

  1. 案例描述

长方形和圆形都属于几何图形,都有周长和面积,并且它们都有自己的周长和面积计算公式。使用抽象类的知识设计一个程序,可以计算不同图形的面积和周长。

  1. 运行结果

【案例分析】

1)定义父类Shape作为抽象类,并在类中定义抽象方法求周长和面积。

2)定义Shape子类圆形(circle),具有半径属性和常量PI,同时必须实现父类中的抽象方法。

3)定义Shape子类长方形(rectangle),具有长和宽的属性,同时必须实现父类的抽象方法。

4)创建图形面积周长计算器(ShapeCalculate),具有计算不同图形面积和周长的方法。

5)创建测试类TestShape类,在其main()方法中对ShapeCalculate计算面积和周长方法进行测试。

【案例实现】

Shape.java

  1. public abstract class Shape {
  2.     // 抽象方法: 获取面积
  3.     public abstract double getArea();
  4.     // 抽象方法:获取周长
  5.     public abstract double getPerimeter();
  6. }

上述代码中,在Shape类中定义了面积和周长的抽象方法。

Cirle.java

  1. public class Circle implementsShape {
  2.     private double radius = 0;    // 圆的半径
  3.     private final static double PI = 3.14;    // 常量,圆周率
  4.         // 有参构造,初始化圆半径
  5.     public Circle(double radius) {  
  6.         this.radius = radius;
  7.     }
  8.     // 求圆面积
  9.     public double getArea() {
  10.         return PI*radius*radius;
  11.     }
  12.     // 求圆周长
  13.     public double getPerimeter() {
  14.         return 2*radius*PI;
  15.     }
  16. }

上述代码中,定义了圆形Circle类并继承了Shape类,再Circle类中重写了Shape中的getArea()getPerimeter()方法,分别计算圆的面积和周长。

Rectangle.java

  1. public class Rectangle implements Shape {
  2.     private double length = 0;    // 长方形的长
  3.     private double width = 0;     // 长方形的宽
  4.     // 有参构造,初始化长方形的长和宽
  5.     public Rectangle(double length, double width) {
  6.         super();
  7.         this.length = length;
  8.         this.width = width;
  9.     }
  10.     public double getArea() {
  11.         return this.length*this.width;
  12.     }
  13.     public double getPerimeter() {
  14.         return 2*(this.length+this.width);
  15.     }
  16. }

上述代码中,定义了长方形Rectangle类并继承了Shape类,再Circle类中重写了Shape中的getArea()getPerimeter()方法,分别计算长方形的面积和周长。

ShapeCaculate.java

  1. public class ShapeCaculate {
  2.     // 可以计算任意shape子类的面积
  3.     public void calArea (Shape shape) {
  4.         System.out.println(shape.getArea());
  5.     }
  6.     // 可以计算任意shape子类的周长
  7.     public void calPerimeter(Shape shape) {
  8.         System.out.println(shape.getPerimeter());
  9.     }
  10. }

创建了图形面积周长计算器ShapeCalculate类,calArea ()方法用来计算不同图形面积,calPerimeter()方法用来计算不同图形的周长。

TestShape.java

  1. public class TestShape {
  2.     public static void main(String[] args) {
  3.         // 创建图形计算器
  4.         ShapeCaculate sc = new ShapeCaculate();
  5.         // 创建长方形和圆形对象
  6.         Shape rectangle = new Rectangle(3, 4);         // <-------多态
  7.         Circle circle = new Circle(3);
  8.         // 求长方形和圆形的面积
  9.         System.out.println("长方形的面积:");
  10.         sc.calArea(rectangle);
  11.         System.out.println("圆形的面积:");
  12.         sc.calArea(circle);
  13.         // 求长方形和圆形的周长
  14.         System.out.println("长方形的周长:");
  15.         sc.calPerimeter(rectangle);
  16.         System.out.println("圆形的周长:");
  17.         sc.calPerimeter(circle);
  18.     }
  19. }

在上述代码中,分别创建了一个圆形circle对象和一个长方形rectangle对象,然后分别计算了圆形和长方形的面积和周长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/358165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis服务器配置

服务器基础配置服务器端设定 设置服务器以守护进程的方式运行daemonize yes|no 绑定主机地址bind 127.0.0.1 设置服务器端口号port 6379 设置数据库数量databases 16日志配置 设置服务器以指定日志记录级别loglevel debug|verbose|notice|warning开发期 debug 线上no…

【蓝桥杯PythonB组备赛】【Acwing周赛】第91场非常详细的过程思路分析理解分享Python解

好难哈哈哈我依旧只做对了第一题&#xff0c;第二题在比赛结束后才做出来…… 不过没关系每天努力一点啦~ 分享一下个人做的解析&#xff0c;供大家参考&#xff0c;一起努力哇&#xff01; 目录 A AcWing 4861. 构造数列 1.题目描述 2.思路分析 3.代码实现 B Ac…

从每刻到金蝶云星空通过接口配置打通数据

对接源平台:每刻刻报销是每刻科技旗下的产品&#xff0c;是国内领先的企业差旅及费用管理云平台&#xff0c;为事前差旅预订&#xff0c;事后报销的全流程费用管控服务。每刻报销融合人工智能云计算、移动互联网大数据等先进技术&#xff0c;融合财务共享和信用管理的理念&…

SPDK应用框架

SPDK应用框架SPDK应用框架1&#xff09;对CPU core和线程的管理2&#xff09;线程间的高效通信3&#xff09;I/O的处理模型及数据路径的无锁化机制SPDK用户态块设备层1.内核通用块层2.SPDK用户态通用块层SPDK架构解析3.通用块层的管理4.逻辑卷1&#xff09;内核LVM2&#xff09…

企业级信息系统开发学习笔记1.2 初探Spring——利用组件注解符精简Spring配置文件

文章目录零、本讲学习目标一、课程引入二、打开项目【SpringDemo2021】三、利用组件注解符精简Spring配置文件1、创建net.hw.spring.lesson02包2、将lesson01子包的四个类拷贝到lesson02子包3、修改杀龙任务类 - SlayDragonQuest4、修改救美任务类 - RescueDamselQuest5、修改勇…

2022爱分析·事务型关系数据库市场厂商评估报告:万里数据库

目录 1. 研究范围定义 2. 事务型关系数据库市场定义 3. 厂商评估&#xff1a;万里数据库 4. 入选证书 1. 研究范围定义 在国内数字化转型以及信创建设持续推进的大背景下&#xff0c;众多厂商入局国内数据库市场&#xff0c;为企业提供了面向多种应用场景的数据库&am…

taobao.trade.memo.update( 修改交易备注 )

&#xffe5;开放平台基础API必须用户授权 需要商家或以上权限才可调用此接口&#xff0c;可重复调用本接口更新交易备注&#xff0c;本接口同时具有添加备注的功能 公共参数 点击获取 请求示例 TaobaoClient client new DefaultTaobaoClient(url, appkey, secret); Trade…

2022年AI顶级论文 —生成模型之年(上)

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 过去十年来&#xff0c;人工智能技术在持续提高和飞速发展&#xff0c;并不断冲击着人类的认知。 2012年&#xff0c;在ImageNet图像识别挑战赛中&#xff0c;一种神经网络模型&#xff08;AlexNet&…

Java程序员进阶宝典,让你学习面试无忧!

心净则明,心诚则灵如果你想要一个月速成程序员&#xff0c;那么这篇文章不适合&#xff0c;如果你仅想要在IT圈“耍酷”&#xff0c;那你也不需要研读&#xff0c;如果你执着询问“退化”成为一名程序猿有啥捷径&#xff0c;那我只能告诉你&#xff0c;此路不通&#xff01;不可…

Flink-处理函数(ProcessFunction、KeyedProcessFunction、ProcessWindowFunctionHe侧输出流)

文章目录处理函数基本处理函数&#xff08;ProcessFunction&#xff09;功能和使用ProcessFunction 解析分类按键分区处理函数&#xff08;KeyedProcessFunction&#xff09;定时器&#xff08;Timer&#xff09;和定时服务&#xff08;TimerService&#xff09;KeyedProcessFu…

Vue的模板语法(双大括号表达式、插值、v-bind 指令、v-on、指令缩写)

模板语法前言知识点1、双大括号表达式2、插值2.1 文本2.2 原始 HTML2.3 特性2.4 javascript 表达式3、指令3.1 参数3.2 动态参数3.3 修饰符4、指令缩写4.1 v-bind4.2 v-on前言 相信模板语法大家多少都有所接触&#xff0c;例如百度模板引擎、ejs 等等。同样 Vue.js 也使用了基于…

基于springboot+vue物流项目

基于springbootvue物流项目 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#x…

内网渗透(四十二)之横向移动篇-WMIC远程执行命令横向移动

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

业内人士告诉你,买流量卡时一定要问的几个问题?

互联网时代&#xff0c;流量当然是至关重要&#xff0c;但是&#xff0c;在网上搜索流量卡时&#xff0c;广告可谓是铺天盖地&#xff0c;五花八门&#xff0c;所以&#xff0c;小编提醒大家&#xff0c;为了选择性价比较高的卡&#xff0c;在购买流量卡时一定要关注几个问题。…

深度学习神经网络基础知识(二)权重衰减、暂退法(Dropout)

专栏&#xff1a;神经网络复现目录 深度学习神经网络基础知识(二) 本文讲述神经网络基础知识&#xff0c;具体细节讲述前向传播&#xff0c;反向传播和计算图&#xff0c;同时讲解神经网络优化方法&#xff1a;权重衰减&#xff0c;Dropout等方法&#xff0c;最后进行Kaggle实…

一次简陋的页面登录练习

看着有点丑&#xff0c;果然我还是不太适合写前端哈<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&q…

2023年,Java岗大厂的架构师之路该怎样走?互联网寒冬能否有所好转?

大厂还值得去吗&#xff1f;程序员这个行业是不是不行了&#xff1f;我还有必要继续学习吗&#xff1f;答案显然是否定的&#xff0c;其实在行业里面很多年的程序员们都知道&#xff0c;大厂每年都会裁员&#xff0c;只不过是裁的数量多少而已&#xff0c;而大规模的裁员&#…

我的周刊(第079期)

我的信息周刊&#xff0c;记录这周我看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。&#x1f3af; 项目ChatGPT 项目推荐基于 ChatGPT 相关接口衍生的项目&…

计算机网络学习笔记02

学习视频&#xff1a;https://www.bilibili.com/video/BV1c4411d7jb/?p7&spm_id_frompageDriver&vd_source75dce036dc8244310435eaf03de4e330 一、计算机网络体系结构 1 常见的计算机网络体系结构 OSI体系结构和TCP/IP体系结构 TCP/IP体系结构的网络接口层并没有规…

【笔试强训】Day_02

目录 一、选择题 1、 2、 3、 4、 5、 6、 7、 8、 9、 10、 二、编程题 1、排序子序列 2、倒置字符串 一、选择题 1、 使用printf函数打印一个double类型的数据&#xff0c;要求&#xff1a;输出为10进制&#xff0c;输出左对齐30个字符&#xff0c;4位精度。…