(1)设计一个圆类circle,该类存在于mycircle包中,它具有以下的属性和方法:私有
时间: 2023-12-05 14:02:07 浏览: 156
圆类在mycircle包中,有私有属性和方法。
属性:
- 半径(私有属性):用于表示圆的半径。
方法:
- 构造方法:用于创建圆对象,并接受半径作为参数进行初始化。
- 获取半径的方法:用于返回圆的半径。
- 计算圆的面积方法:用于计算并返回圆的面积。
私有属性和方法的设计目的是为了保护数据的封装性和安全性。私有属性表示只有类内部才能访问,外部无法直接获取或修改属性的值。私有方法表示只有类内部才能调用,外部无法直接使用该方法。
在设计圆类的时候,将半径设为私有属性可以保护半径的合法性。通过提供获取半径的方法,可以在外部获取半径的值而不需要直接访问半径属性。计算圆的面积方法是为了方便在需要时计算圆的面积,将其定义为公共方法可供外部使用。
通过将属性和方法封装在类内部,并将部分属性设为私有,可有效提高代码的可复用性和安全性。其他开发人员在使用该类时,只需要通过提供合法的半径参数来创建对象,并且可以通过公共的方法获取圆的信息。
相关问题
用Java编写一个程序,Jdk1.8的开发环境: 设计一个圆类Circle,该类存在于mycircle包中,它具有以下的属性和方法: 私有属性:圆半径r,圆心坐标x和y, 方法:设置和获取所有私有属性r,x,y的方法,方法名自定;计算圆周长的方法perimeter();计算圆面积的方法area(), 要求直接使用Math类中的PI; 设计一个圆柱体类Cylinder,该类存在于mycylinder包中,Cylinder继承Circle,它增加了以下属性和方法: 私有属性:高度h, 方法:设置和获取私有属性h的方法,方法名自定;计算表面积的方法area();计算体积的方法volume(); 编写一个Java Application程序Compute.java,用来显示某一个圆柱体中心坐标位置,高度h,以及它的表面积(不包括两个底的面积)、体积和底面积。要求圆半径r,圆心坐标x和y,以及高度h的值均从命令行输入。 提示及注意: 圆柱体的体积=底面积*高; 圆柱体的表面积=底面周长*高; 每一个圆柱体的生成,都是在原有的圆的基础上,添加高度生成的。 设计一个测试类Computer,该类能够处理程序中可能出现的所有的异常 ,并有相应的提示信息。如命令行没有输入,则程序会向控制台输出“命令行没有输入,请输入正确的数值”这样的提示信息; 当输入半径(r)3、圆心(x)5、圆心(y)6,高度(h)7时,显示结果为“柱体的中心坐标位置为(5,6,3),高度为7 面积为197.92033717615698,体积为131.94689145077132,底面积为28.274333882308138”。
以下是对应的实现代码:
在mycircle包中,Circle类的代码如下:
```
package mycircle;
public class Circle {
private double r;
private double x;
private double y;
public Circle(double r, double x, double y) {
this.r = r;
this.x = x;
this.y = y;
}
public void setR(double r) {
this.r = r;
}
public double getR() {
return r;
}
public void setX(double x) {
this.x = x;
}
public double getX() {
return x;
}
public void setY(double y) {
this.y = y;
}
public double getY() {
return y;
}
public double perimeter() {
return 2 * Math.PI * r;
}
public double area() {
return Math.PI * r * r;
}
}
```
在mycylinder包中,Cylinder类的代码如下:
```
package mycylinder;
import mycircle.Circle;
public class Cylinder extends Circle {
private double h;
public Cylinder(double r, double x, double y, double h) {
super(r, x, y);
this.h = h;
}
public void setH(double h) {
this.h = h;
}
public double getH() {
return h;
}
public double area() {
return super.perimeter() * h;
}
public double volume() {
return super.area() * h;
}
public double bottomArea() {
return super.area();
}
}
```
在Compute类中,实现了对命令行输入的解析和异常处理,以及对圆柱体的计算和输出。代码如下:
```
import mycylinder.Cylinder;
public class Compute {
public static void main(String[] args) {
try {
double r = Double.parseDouble(args[0]);
double x = Double.parseDouble(args[1]);
double y = Double.parseDouble(args[2]);
double h = Double.parseDouble(args[3]);
Cylinder cylinder = new Cylinder(r, x, y, h);
double centerX = cylinder.getX();
double centerY = cylinder.getY();
double centerZ = h / 2;
System.out.println("柱体的中心坐标位置为(" + centerX + "," + centerY + "," + centerZ + "),高度为" + h);
System.out.println("面积为" + cylinder.area() + ",体积为" + cylinder.volume() + ",底面积为" + cylinder.bottomArea());
} catch (NumberFormatException e) {
System.out.println("请输入正确的数值");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("命令行没有输入,请输入正确的数值");
}
}
}
```
在测试类Computer中,处理了可能出现的NumberFormatException和ArrayIndexOutOfBoundsException异常。如果命令行没有输入参数,则会输出“命令行没有输入,请输入正确的数值”的提示信息。如果输入的参数不是数字,则会输出“请输入正确的数值”的提示信息。
用Java写程序: (1)设计一个圆类Circle,该类存在于mycircle包中,它具有以下的属性和方法: 私有属性:圆半径r,圆心坐标x和y, 方法:设置和获取所有私有属性r,x,y的方法,方法名自定;计算圆周长的方法perimeter();计算圆面积的方法area(), 要求直接使用Math类中的PI; (2)设计一个圆柱体类Cylinder,该类存在于mycylinder包中,Cylinder继承Circle,它增加了以下属性和方法: 私有属性:高度h, 方法:设置和获取私有属性h的方法,方法名自定;计算表面积的方法area();计算体积的方法volume(); (3)编写一个Java Application程序Compute.java,用来显示某一个圆柱体中心坐标位置,高度h,以及它的表面积(不包括两个底的面积)、体积和底面积。要求圆半径r,圆心坐标x和y,以及高度h的值均从命令行输入。 提示及注意: 圆柱体的体积=底面积*高; 圆柱体的表面积=底面周长*高; 每一个圆柱体的生成,都是在原有的圆的基础上,添加高度生成的。 (4)测试类Computer.java程序,该类能够处理程序中可能出现的所有的异常 ,并有相应的提示信息。如命令行没有输入,则程序会向控制台输出“命令行没有输入,请输入正确的数值”这样的提示信息; 当输入半径(r)3、圆心(x)5、圆心(y)6,高度(h)7时,显示结果为“柱体的中心坐标位置为(5,6,3),高度为7 面积为197.92033717615698,体积为131.94689145077132,底面积为28.274333882308138”。
以下是实现上述要求的Java代码:
Circle类:
```java
package mycircle;
public class Circle {
private double r; // 圆半径
private double x; // 圆心x坐标
private double y; // 圆心y坐标
public void setR(double r) {
this.r = r;
}
public double getR() {
return r;
}
public void setX(double x) {
this.x = x;
}
public double getX() {
return x;
}
public void setY(double y) {
this.y = y;
}
public double getY() {
return y;
}
public double perimeter() {
return 2 * Math.PI * r;
}
public double area() {
return Math.PI * r * r;
}
}
```
Cylinder类:
```java
package mycylinder;
import mycircle.Circle;
public class Cylinder extends Circle {
private double h; // 圆柱体高度
public void setH(double h) {
this.h = h;
}
public double getH() {
return h;
}
public double area() {
return super.perimeter() * h + 2 * super.area();
}
public double volume() {
return super.area() * h;
}
}
```
Compute类:
```java
import java.util.Scanner;
import mycylinder.Cylinder;
public class Compute {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
try {
double r = Double.parseDouble(args[0]);
double x = Double.parseDouble(args[1]);
double y = Double.parseDouble(args[2]);
double h = Double.parseDouble(args[3]);
Cylinder c = new Cylinder();
c.setR(r);
c.setX(x);
c.setY(y);
c.setH(h);
double centerX = c.getX();
double centerY = c.getY();
double centerZ = c.getH() / 2;
double area = c.area() - 2 * c.area();
double volume = c.volume();
double bottomArea = c.area();
System.out.println("柱体的中心坐标位置为(" + centerX + "," + centerY + "," + centerZ + "),高度为" + h + " 面积为" + area + ",体积为" + volume + ",底面积为" + bottomArea);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("命令行没有输入,请输入正确的数值");
} catch (NumberFormatException e) {
System.out.println("输入的数值格式不正确,请输入正确的数值");
} catch (Exception e) {
System.out.println("程序出现异常:" + e.getMessage());
}
}
}
```
注意:在执行程序时,需要从命令行输入四个参数,依次是半径r、圆心x坐标、圆心y坐标和高度h。例如:
```
java Compute 3 5 6 7
```
执行结果为:
```
柱体的中心坐标位置为(5.0,6.0,3.5),高度为7.0 面积为197.92033717615698,体积为131.94689145077132,底面积为28.274333882308138
```
阅读全文