版权声明:就是码字也不容易啊 https://blog.csdn.net/qq_40946921/article/details/84497265
(1) 请运用面向对象程序设计思想编写完成几何对象的面积计算程序,
具体要求为:
- GeometricObject(抽象类)、Circle、Cylinder和Rectangle之间的继承关系如下图所示,
- 请分按类图分别实现这四个类;
- 然后编写一测试类GeoAreaSum,在该类中编写一个方法求数组中所有几何对象的面积之和,其方法头为:public static double sumArea(GeometricObject[ ] a),
- 再在GeoAreaSum的main方法中创建一个包括三个对象(一个半径为5的圆、一个半径为10、高为5的圆柱体和一个宽和高分别为6和8的矩形)的GeometricObject数组,
- 使用sumArea方法计算出它们的总面积并在屏幕上打印输出。
package geo;
abstract class GeometricObject{
public abstract double findeArea();
public abstract double findPerimeter();
}
class Rectangle extends GeometricObject{
private double w,h;
public Rectangle(double w,double h){
this.w=w;this.h=h;
}
@Override
public double findeArea() {
return w*h;
}
@Override
public double findPerimeter() {
return (w+h)*2;
}
}
class Circle extends GeometricObject{
private double r;
public Circle(double r){
this.r=r;
}
public double getR(){
return r;
}
@Override
public double findPerimeter() {
return Math.PI*r*2;
}
@Override
public double findeArea() {
return Math.PI*r*r;
}
}
class Cylinder extends GeometricObject{
private double r,h;
public Cylinder(double r,double h){
this.r=r;
this.h=h;
}
@Override
public double findeArea() {
return Math.PI*r*r*h;
}
@Override
public double findPerimeter() {
return 2*Math.PI*r*r*+2*Math.PI*r*h;
}
}
public class GeoAreaSum {
public static double sumArea(GeometricObject[] a){
double sum=0;
for(int i=0;i<a.length;i++){
sum+=a[i].findeArea();
}
return sum;
}
public static void main(String[] args){
GeometricObject t[]={new Circle(5),new Cylinder(10,5),new Rectangle(6,8)};
System.out.println("The sum of area is "+sumArea(t));
}
}
另请思考如果将Cylinder与GeometricObject的继承关系改成与Cylinder与Circle的继承关系,同时将Cylinder中的私有变量r去掉,Cylinder又该如何编写?
package geo;
abstract class GeometricObject{
public abstract double findeArea();
public abstract double findPerimeter();
}
class Rectangle extends GeometricObject{
private double w,h;
public Rectangle(double w,double h){
this.w=w;this.h=h;
}
@Override
public double findeArea() {
return w*h;
}
@Override
public double findPerimeter() {
return (w+h)*2;
}
}
class Circle extends GeometricObject{
private double r;
public Circle(double r){
this.r=r;
}
public double getR(){
return r;
}
@Override
public double findPerimeter() {
return Math.PI*r*2;
}
@Override
public double findeArea() {
return Math.PI*r*r;
}
}
class Cylinder extends Circle{
private double h;
public Cylinder(double r,double h){
super(r);
this.h=h;
}
@Override
public double findeArea() {
return Math.PI*super.getR()*super.getR()*h;
}
@Override
public double findPerimeter() {
return 2*Math.PI*super.getR()*super.getR()*+2*Math.PI*super.getR()*h;
}
}
public class GeoAreaSum {
public static double sumArea(GeometricObject[] a){
double sum=0;
for(int i=0;i<a.length;i++){
sum+=a[i].findeArea();
}
return sum;
}
public static void main(String[] args){
GeometricObject t[]={new Circle(5),new Cylinder(10,5),new Rectangle(6,8)};
System.out.println("The sum of area is "+sumArea(t));
}
}