Java面向对象(下)作业
首先我把题目先列到这里,可以仔细看一下题。
- (1)设计一个名为Geometric的几何图形的抽象类,该类包括:
- ①两个名为color、filled属性分别表示图形颜色和是否填充。
- ②一个无参的构造方法。
- ③一个能创建指定颜色和填充值的构造方法。
- ④一个名为getArea()的抽象方法,返回图形的面积。
- ⑤一个名为getPerimeter()的抽象方法,返回图形的周长。
- ⑥一个名为toString()的方法,返回该几何图形的字符串描述。
- (2)设计一个名为Circle的圆类来实现Geometric类,该类包括:
- ①一个名为radius的double类型私有属性表示半径。
- ②一个无参构造方法创建圆。
- ③一个能创建指定radius的圆的构造方法。
- ④radius的访问器方法。
- ⑤一个名为getArea()的方法,返回该圆的面积。
- ⑥一个名为getPerimeter()的方法,返回圆的周长。
- ⑦一个名为toString()的方法,返回该圆的字符串描述。
- (3)设计一个名为Rectangle的矩形类来实现Geometric类,该类包括:
- ①两个名为side1、side2的double类型私有属性表示矩形的两条边。
- ②一个无参构造方法创建矩形。
- ③一个能创建指定sidel和side2的矩形的构造方法。
- ④side1和side2的访问器方法。
- ⑤一个名为getArea()的方法,返回该矩形的面积。
- ⑥一个名为gelPerimeter()的方法,返回该矩形的周长。
- ⑦一个名为toString()的方法,返回该矩形的字符串描述。
- (4)设计一个名为Triangle的三角形类来实现Geometric类,该类包括:
- ①三个名为side1,side2和side3的double类型私有属性表示三角形的三条边。
- ②一个无参构造方法创建三角形。
- ③一个能创建指定side1,side2和side3的矩形的构造方法。
- ④side1,side2和side3的访问器方法。
- ⑤一个名为getArea()的方法,返回该三角形的面积。
- ⑥一个名为getPerimeter()的方法,返回该三角形的周长。
- ⑦一个名为isTriangle()的方法,判断三边是否能构成三角形。
- ⑧一个名为toString()的方法,返回三边较小的字符串描述。
- (5)编写测试类,测试图形的面积和周长。
在具体展示作业之前,我想先说两句。
- 如果你想将getXXX方法里获得的某个值返回到这个类的全局变量里面,你需要使用到setXXX方法,通过 this.XXX = XXXX 来覆盖原先的值。这样,这个类在调用这个变量的时候就不用再次调用方法来获取这个值了(前提是这个值是你想要的且不再需要更改,在实现类里需要首先调用get方法获取这个值,然后再调用set方法将值赋值到原先变量里)。
- 构造方法里最好不要有输出的语句,如果需要输出,最好是在最后的实现类里面再进行调用,或者在原先类中再次定义一个新的方法来输出。(主要还是在调用toString方法是会返回出方法中的输出语句。
好了,既然说了说两句,那就两句吧,接下来就是我的作业了!首先附上代码:
Geometric类
package com.sdbi.hhh;
import java.awt.Color;
//(1)设计一个名为Geometric的几何图形的抽象类,该类包括:
//①两个名为color、filled属性分别表示图形颜色和是否填充。
//②一个无参的构造方法。
//③一个能创建指定颜色和填充值的构造方法。
//④一个名为getArea()的抽象方法,返回图形的面积。
//⑤一个名为getPerimeter()的抽象方法,返回图形的周长。
//⑥一个名为toString()的方法,返回圆的字符串描述。
abstract class Geometric {// 定义一个抽象类Geometric
String Color;// 定义一个color属性表示图形颜色
boolean fillde;// 定义一个filled属性表示是否填充
double getArea;// 定义一个图形的面积的抽象方法
double getPerimeter;// 定义一个图形周长的抽象方法
public void Geometric() {// 定义一个无参数的构造方法
}
public void Geometric(String Color, boolean fillde) {// 定义一个含有color和filled参数的构造方法
this.Color = Color;
this.fillde = fillde;
}
@Override
public String toString() {
return "Geometric [Color=" + Color + ", fillde=" + fillde + "]";
}
}
Circle类
package com.sdbi.hhh;
import java.awt.geom.Area;
import java.nio.channels.Pipe;
import java.util.Scanner;
import java.util.Set;
import org.omg.CORBA.PUBLIC_MEMBER;
////设计一个名为Circle的圆类来实现Geometric类,该类包括:
//①一个名为radius的double属性表示半径。
//②一个无参构造方法创建圆。
//③一个能创建指定radius的圆的构造方法。
//④radius的访问器方法。
//⑤一个名为getArea()的方法,返回该圆的面积。
//⑥一个名为getPerimeter()的方法,返回圆的周长。
//⑦一个名为toString()的方法,返回该圆的字符串描述。
public class Circle extends Geometric {
public static double radius;// 定义一个名为radius的double属性表示半径。
public static double area;// 定义一个名为area的double属性表示面积。
public final double Pi = 3.14;
String Color = "紫色";// 定义一个color属性表示图形颜色
boolean fillde = true;// 定义一个filled属性表示是否填充
public Circle() {// 一个无参构造方法创建圆
}
public void setRadius() {// 用户输入半径,局部变量覆盖全局变量。
System.out.println("请输入圆的半径长度");
Scanner sc = new Scanner(System.in);
double a = sc.nextDouble();
System.out.println("圆的半径为:" + a);
this.radius = a;
}
public Circle(double radius) {// 一个能创建指定radius的圆的构造方法
this.radius = radius;
}
public double getRadius() {// radius的访问器方法
return radius;
}
public double getArea() {// 一个名为getArea()的方法,返回该圆的面积。
double S = Pi * radius * radius;// 圆的面积为pi*r^2
return S;// 返回S的值给getArea
}
public double getPerimeter() {// 一个名为getPerimeter()的方法,返回圆的周长。
double P = Pi * Pi * radius;
// System.out.println("圆的周长为:" + P);
return (P);
}
public void setPerimeter() {//将周长变量赋上计算所得到的周长的值。
this.area = getPerimeter();
}
@Override
public String toString() {
return "Circle [radius=" + radius + ", area=" + area + ", Color=" + Color + ", fillde=" + fillde + ", getArea="
+ getArea()+ ", getPerimeter=" + getPerimeter() + "]";
}
}
Rectangle类
package com.sdbi.hhh;
import java.util.Scanner;
//(3)设计一个名为Rectangle的矩形类来实现Geometric类,该类包括:
//两个名为side1、side2的double属性表示矩形的两条边。
//一个无参构造方法创建矩形。
//一个能创建指定side1和side2的矩形的构造方法。
//side1和side的访问器方法。
//一个名为getArea()的方法,返回该矩形的面积。
//一个名为gelPerimeter()的方法,返回该矩形的周长。
//一个名为toString()的方法,返回该矩形的字符串描述。
public class Rectangle extends Geometric {
public double side1;
public double side2;// 两个名为side1、side2的double属性表示矩形的两条边。
public String Color = "红色";
public boolean filllde = false;
public Rectangle() {// 一个无参构造方法创建矩形。
}
public Rectangle(double side1, double side2) {// 一个能创建指定sidel和side2的矩形的构造方法。
this.side1 = side1;
this.side2 = side2;
}
public double getSide1() {// side1的访问器方法
return side1;
}
public void setSide1() {// side1的赋值方法
System.out.println("请输入矩形的长");
Scanner a = new Scanner(System.in);
this.side1 = a.nextDouble() ;
}
public double getSide2() {// side2的访问器方法
return side2;
}
public void setSide2() {// side1的赋值方法
System.out.println("请输入矩形的宽");
Scanner a = new Scanner(System.in);
this.side2 = a.nextDouble();
}
public double getArea() {// 一个名为getArea()的方法,返回该矩形的面积。
double S = side1 * side2;
return S;
}
public double getPerimeter() {// 一个名为gelPerimeter()的方法,返回该矩形的周长。
double P = side1 * 2 + side2 * 2;
return P;
}
@Override
public String toString() {
return "Rectangle [side1=" + side1 + ", side2=" + side2 + ", Color=" + Color + ", fillde=" + fillde
+ ", getArea=" + getArea() + ", getPerimeter=" + getPerimeter() + "]";
}
}
Triangle类
package com.sdbi.hhh;
import java.util.Scanner;
//(4)设计一个名为Triangle的三角形类来实现Geometric类,该类包括:
//三个名为side1,side2和side3的double属性表示三角形的三条边。
//一个无参构造方法创建三角形。
//一个能创建指定side1,side2和side3的矩形的构造方法。
//side1,side2和side3的访问器方法。
//一个名为getArea()的方法,返回该三角形的面积。
//一个名为getPerimeter()的方法,返回该三角形的周长。
//一个名为isTriangle()的方法,判断三边是否能构成三角形。
//一个名为toString()的方法,返回三边较小的字符串描述。
public class Triangle extends Geometric {
public double side1;// 名为side1的double属性表示三角形的一条边。
public double side2;// 名为side2的double属性表示三角形的一条边。
public double side3;// 名为side3的double属性表示三角形的一条边。
public String color = "粉色";
public boolean fillde = true;
public Triangle() {// 一个无参构造方法创建三角形。
}
public Triangle(double side1, double side2, double side3) {// 一个能创建指定side1,side2和side3的矩形的构造方法。
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
public void setSide1() {// 获取side1的值
System.out.println("请输入三角形的第一条边长度");
Scanner sc = new Scanner(System.in);
this.side1 = sc.nextDouble();
}
public double getSide1() {// side1的访问器方法。
return side1;
}
public void setSide2() {// 获取side2的值
System.out.println("请输入三角形的第二条边长度");
Scanner sc = new Scanner(System.in);
this.side2 = sc.nextDouble();
}
public double getSide2() {// side2的访问器方法。
return side2;
}
public void setSide3() {// 获取side3的值
System.out.println("请输入三角形的第三条边长度");
Scanner sc = new Scanner(System.in);
this.side3 = sc.nextDouble();
}
public double getSide3() {// side3的访问器方法。
return side3;
}
public double getArea() {// 一个名为getArea()的方法,返回该三角形的面积。
if (isTriangle() == true) {
double P = (side1 + side2 + side3) / 2;
double S = (P * (P - side1) * (P - side2) * (P - side3));
return Math.sqrt(S);
} else {
System.out.println("输入的三条边无法构成三角形。");
return 0;
}
}
public double getPerimeter() {// 一个名为getPerimeter()的方法,返回该三角形的周长。
if (isTriangle() == true) {
double P = side1 + side2 + side3;
return P;
} else {
System.out.println("输入的三条边无法构成三角形。");
return 0;
}
}
public boolean isTriangle() {// 一个名为isTriangle()的方法,判断三边是否能构成三角形。
if ((side1 + side2) > side3 && (side1 + side3) > side2 && (side2 + side3) > side1) {
return true;
} else {
return false;
}
}
@Override
public String toString() {
return "Triangle [side1=" + side1 + ", side2=" + side2 + ", side3=" + side3 + ", Color=" + Color + ", fillde="
+ fillde + ", getArea=" + getArea() + ", getPerimeter=" + getPerimeter() + "]";
}
}
Test(实现)类
package com.sdbi.hhh;
import java.io.ObjectInputStream.GetField;
public class Test {
public static void main(String[] args) {
System.out.println("----------圆形------------");
Circle c = new Circle();
c.setRadius();// 创建一个圆,并对半径赋值。
c.getArea();// 用定义好的圆的半径计算圆的面积。
System.out.println("圆的面积为:" + c.getArea());
c.getPerimeter();// 用定义好的圆的半径计算圆的周长。
c.setPerimeter();
System.out.println("圆的周长为:" + c.getPerimeter());
System.out.println(c.toString());
System.out.println("--------------------------");
System.out.println("----------矩形------------");
Rectangle r = new Rectangle();
r.getSide1();// 创建一个矩形的长
r.getSide2();// 创建一个矩形的宽
r.setSide1();// 将获得的长的值返回到变量
r.setSide2();// 将获得的宽的值返回到变量
r.getArea();// 计算矩形的面积
System.out.println("矩形的面积为:" + r.getArea());
r.getPerimeter();// 就散矩形的周长
System.out.println("矩形的周长为:" + r.getPerimeter());
System.out.println(r.toString());
System.out.println("--------------------------");
System.out.println("----------三角形------------");
Triangle t = new Triangle();
t.setSide1();
t.setSide2();
t.setSide3();
t.isTriangle();
if (t.isTriangle() == true) {
System.out.println("输入的三条边可以构成三角形");
t.getArea();
System.out.println("三角形的面积为:" + t.getArea());
t.getPerimeter();
System.out.println("三角形的周长为:" + t.getPerimeter());
t.toString();
System.out.println(t.toString());
} else {
System.out.println("输入的三条边不可以构成三角形");
}
System.out.println("--------------------------");
}
}
下面附上代码原图:
Geometric类

Circle类

Rectangle类

Triangle类

Test(实现)类

最后附上运行结果:

诶嘿!
Java面向对象(下)作业的更多相关文章
- java 面向对象--------时间作业
编写Java应用程序.首先,定义一个时钟类——Clock,它包括三个int型 成员变量分别表示时.分.秒,一个构造方法用于对三个成员变量(时.分.秒) 进行初始化,还有一个成员方法show()用于显示 ...
- java面向对象下:Java数据库编程
19.Java数据库编程: JDBC概述: JDBC(Java Database Connection)是java中提供的一套数据库编程API,它定义了一套用来访问数据库的标准Java类 ...
- java面向对象下:JavaXML解析技术
20.JavaXML解析技术: XML概述: XML可扩展标记性语言,用于数据表达和数据传递. XML语法规则: 合法DTDXML:1.内部DTD(和XML一起):2.外部 ...
- java面向对象(下)-抽象类
抽象类和抽象方法 抽象类和抽象方法必须使用abstract修饰符来定义,有抽象方法的类只能被定义成抽象类,抽象类里可以没有抽象方法 抽象类和抽象方法的规则如下 1.抽象类和抽象方法必须要用abstra ...
- Java面向对象作业-用接口方式测试向下转型
Java面向对象作业-用接口方式测试向下转型 根据视频的里实例 我们直接修改Test2测试方法: package com.java1234.chap03.sec13; public class Tes ...
- 1903021121-刘明伟-java十一周作业-java面向对象编程
项目 内容 课程班级博客链接 19级信计班(本) 作业要求链接 第十一周作业 博客名称 1903021121-刘明伟-java十一周作业-java面向对象 要求 每道题要有题目,代码(使用插入代码,不 ...
- Java面向对象 网络编程 下
Java面向对象 网络编程 下 知识概要: (1)Tcp 练习 (2)客户端向服务端上传一个图片. (3) 请求登陆 (4)url 需求:上传图片. 客户端: ...
- Java面向对象 集合(下)
Java面向对象 集合(下) 知识概要: (1)Map集合的体系结构 (2)Map集合的方法 (3)HashMap TreeMap (4)集合框架中的常用工具类 ( ...
- Java面向对象 继承(下)
Java面向对象 继承(下) 知识概要: (1)抽象类 1.1 抽象类概述 1.2 抽象类的特点 ...
- 20175221 《Java程序设计》迭代和JDB(课下作业,选做):
20175221 <Java程序设计> 迭代和JDB(课下作业,选做): 任务详情 1 使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式进行递归编程实现求组合数C(m,n)的功 ...
随机推荐
- XCTF练习题---MISC---give_you_flag
XCTF练习题---MISC---give_you_flag flag:flag{e7d478cf6b915f50ab1277f78502a2c5} 解题步骤: 1.观察题目,下载附件 2.打开发现是 ...
- 通过配置文件(.htaccess)实现文件上传
一·什么是服务器配置文件.htaccess 许多服务器还允许开发人员在各个目录中创建特殊的配置文件,以便覆盖或添加一个或多个全局设置.例如,Apache 服务器将从一个名为(.htaccess如果存在 ...
- 一文看懂:网址,URL,域名,IP地址,DNS,域名解析
一个执着于技术的公众号 前言 今天给大家梳理一篇关于网址.URL.IP地址.域名.DNS.域名解析的白话长文,并以简单的提问-解答 形式让读者更加深刻理解,希望有助于读者的学习,面试和工作! 1.一个 ...
- redo log 和 binlog 的一些总结
1 redo log 和 binlog 的区别 redo log 是 InnoDB 引擎特有的:binlog 是 MySQL 的 Server 层实现的,所有引擎都可以使用. redo log 是物理 ...
- 精华!一张图进阶 RocketMQ
前 言 大家好,我是三此君,一个在自我救赎之路上的非典型程序员. "一张图"系列旨在通过"一张图"系统性的解析一个板块的知识点: 三此君向来不喜欢零零散散的知识 ...
- 简单的 useState 实现
简单的 useState 实现 本文写于 2020 年 10 月 21 日 以下是一段非常简单的 React 代码: const App = () => { const [n, setN] = ...
- zabbix 1.2
1.zabbix图形界面乱码问题处理 2.自定义监控项 (1)在agent端配置agent.conf 打开vim /etc/zabbix/zabbix-agent.conf 找到UserP ...
- 李阳:京东零售OLAP平台建设和场景实践
导读: 今天和大家分享京东零售OLAP平台的建设和场景的实践,主要包括四大部分: 管控面建设 优化技巧 典型业务 大促备战 -- 01 管控面建设 1. 管控面介绍 管控面可以提供高可靠高效可持续运维 ...
- 万字长文,带你轻松学习 Spark
大家好,我是大D. 今天给大家分享一篇 Spark 核心知识点的梳理,对知识点的讲解秉承着能用图解的就不照本宣科地陈述,力求精简.通俗易懂.希望能为新手的入门学习扫清障碍,从基础概念入手.再到原理深入 ...
- unity---判断物体碰撞的对象
脚本效果 trrn对象为地面,排除这个选项