7-1 sdut-oop-5 计算长方体和四棱锥的表面积和体积(类的继承) (10分)

import java.util.Scanner;

//声明类Demo01
public class Demo01 {
    //主方法,为程序的入口,运行程序时自动执行main方法
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()){
            //每行读入三个数
            double l = sc.nextDouble();
            double h = sc.nextDouble();
            double z = sc.nextDouble();
            //构造长方体对象
            Cubic cubic = new Cubic(l,h,z);
            //构造四棱锥对象
            Pyramid pyramid = new Pyramid(l,h,z);
            //格式化数据
            String area1 = String.format("%.2f",cubic.area());
            String volumn1 = String.format("%.2f",cubic.volumn());
            String area2 = String.format("%.2f",pyramid.area());
            String volumn2 = String.format("%.2f",pyramid.volumn());
            System.out.println(area1+" "+volumn1+" "+area2+" "+volumn2);
        }
    }
}
//父类
class Rect{
    double l;
    double h;
    double z;
    public Rect(double l,double h,double z){
        if(l>0&&h>0&&z>0){
            this.l = l;
            this.h = h;
            this.z = z;
        }
    }
    //计算长方形底面积周长
    public double length(){
        return 2*(l+h);
    }
    //长方形底面面积
    public double area(){
        return 1*h;
    }
}

/*
长方体类
*/

class Cubic extends Rect{
    public Cubic(double l,double h,double z){
        super(l,h,z);
    }
    //长方体表面积,重写父类方法
    public double area(){
        return 2*super.area()+length()*z;
    }
    //长方体体积,子类新增方法
    public double volumn(){
        return super.area()*z;
    }
}
//四棱锥
class Pyramid extends Rect{
    public Pyramid(double l,double h,double z){
        super(l,h,z);
    }
    //四棱锥表面积,重写父类方法
    public double area(){
        return super.area()
                + l*Math.sqrt(z*z + h*h/4)
                + h*Math.sqrt(z*z + l*l/4);
    }
    //四棱锥体积,子类新增方法
    public double volumn(){
        return super.area()*z/3;
    }
}















  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 长方体棱锥表面积体积计算如下: 长方体表面积为2*(长*宽+长*高+宽*高),体积为长*宽*高。 棱锥表面积为底面积+4*(底面边长*斜高),体积为1/3*底面积*高。 如果使用继承,可以定义一个父Shape,其中包含计算表面积体积的方法,然后定义两个子Rectangle和Pyramid,分别表示长方体棱锥继承Shape并重写父的方法即可。具体实现可以参考以下代码: ```python class Shape: def area(self): pass def volume(self): pass class Rectangle(Shape): def __init__(self, length, width, height): self.length = length self.width = width self.height = height def area(self): return 2 * (self.length * self.width + self.length * self.height + self.width * self.height) def volume(self): return self.length * self.width * self.height class Pyramid(Shape): def __init__(self, base, height): self.base = base self.height = height def area(self): return self.base + 4 * (self.base ** .5 * self.height) def volume(self): return 1/3 * self.base * self.height ``` 使用时,可以创建Rectangle和Pyramid的实例,然后调用它们的area和volume方法即可计算表面积体积。例如: ```python rect = Rectangle(3, 4, 5) print(rect.area()) # 输出:94 print(rect.volume()) # 输出:60 pyramid = Pyramid(16, 9) print(pyramid.area()) # 输出:160.97056274847714 print(pyramid.volume()) # 输出:48. ``` ### 回答2: 长方体棱锥是常见的立体几何体,它们的表面积体积是我们在学习几何学时需要掌握的重要知识点。在面向对象编程中,我们可以通过继承来管理这些几何体的属性和方法,实现计算它们的表面积体积。 首先,我们可以定义一个名为“ThreeDimensional”的父,其中包含计算几何体表面积体积的方法。然后我们用两个子“Cuboid”和“TriangularPyramid”继承。其中,“Cuboid”代表长方体,“TriangularPyramid”代表棱锥。 在“ThreeDimensional”中,我们可以定义计算表面积体积的两个基本方法。对于表面积,我们可以用公式SA=2lw+2lh+2wh,其中l、w、h分别代表长度、宽度和高度。对于体积,我们可以用公式V=lwh。这两个方法可以被子继承并覆盖,从而实现不同型几何体的计算。 在“Cuboid”子中,我们可以定义长方体的特殊属性和方法,如输入长、宽、高三个参数,以及计算长方体表面积体积的方法。对于表面积,我们可以直接使用父计算方法,对于体积,我们用特有参数l、w、h代替父的参数,并进行计算,从而得到长方体体积。 在“TriangularPyramid”子中,我们可以定义棱锥的特殊属性和方法,如输入底面边长、高度等参数,以及计算棱锥表面积体积的方法。对于表面积,我们需要先计算出三角形的面积,再加上棱锥的底面积,即总表面积为SA=0.5×l×h×4+S,其中S是底面积。对于体积,我们用特有参数l、h代替父的参数,并进行计算,从而得到棱锥体积。 通过继承和覆盖,我们可以简便地定义和计算各种几何体的表面积体积。这方面,面向对象编程的优越性表现得尤为突出。 ### 回答3: 长方体棱锥都是几何体,在计算它们的表面积体积方法上有些相似,但也各有不同。在OOP中,可以通过继承来实现这些计算。 首先,我们创建一个三维几何体的父Shape3D,它包括通过封装实现的长、宽、高三个属性,以及计算表面积体积的方法。然后创建长方体棱锥的子,分别继承的属性和方法,并分别实现它们自己独有的方法。具体实现如下: class Shape3D: def __init__(self, length, width, height): self.__length = length self.__width = width self.__height = height def get_length(self): return self.__length def get_width(self): return self.__width def get_height(self): return self.__height def get_volume(self): return self.__length * self.__width * self.__height def get_surface_area(self): return 2 * (self.__length * self.__width + self.__length * self.__height + self.__width * self.__height) class Cuboid(Shape3D): def get_surface_area(self): return 2 * (self.get_width() * self.get_length() + self.get_length() * self.get_height() + self.get_width() * self.get_height()) class Pyramid(Shape3D): def __init__(self, length, width, height, slant_height): super().__init__(length, width, height) self.__slant_height = slant_height def get_slant_height(self): return self.__slant_height def get_surface_area(self): lateral_area = 0.5 * self.get_width() * self.__slant_height + 0.5 * self.get_length() * self.__slant_height base_area = self.get_width() * self.get_length() return lateral_area + base_area def get_volume(self): return super().get_volume() / 3 在这里,我们定义了Shape3D作为几何体的父,其中get_length、get_width、get_height方法分别用于获取长、宽、高三个值,get_volume方法用于计算体积,get_surface_area方法用于计算表面积。Cuboid和Pyramid分别作为长方体棱锥的子,它们继承了Shape3D中的属性和方法,并实现了自己独有的get_surface_area和get_volume方法。在Cuboid中,我们可以直接调用Shape3D中的get_surface_area方法来计算表面积,因为长方体的公式与Shape3D中的一致;在Pyramid中,我们需要重新实现get_surface_area方法,因为棱锥表面积计算公式不同。 在具体计算时,我们可以实例化Cuboid和Pyramid对象,并分别调用它们的get_volume和get_surface_area方法,如下所示: cuboid = Cuboid(3, 4, 5) pyramid = Pyramid(3, 4, 5, 5) print("Cuboid volume: ", cuboid.get_volume()) print("Cuboid surface area: ", cuboid.get_surface_area()) print("Pyramid volume: ", pyramid.get_volume()) print("Pyramid surface area: ", pyramid.get_surface_area()) 上述代码首先实例化了一个Cuboid和一个Pyramid对象,分别表示一个长方体和一个棱锥。然后,通过调用它们的get_volume和get_surface_area方法,分别计算出它们的体积表面积,并将结果输出。 通过以上继承和实例化方法,我们可以方便地计算长方体棱锥表面积体积。这种代码的结构化设计可以方便我们扩展其他的几何体,只需要在Shape3D的基础上扩展出对应的子即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值