2. 定义一个抽象类Shape,包含纯虚函数Area()(用来计算面积)和SetShape()(用来重设形状大小)。然后派生出三角形类Triangle类、矩形Rect类、圆Circle类,分别求其面积

#include <iostream>
#include<math.h>
using namespace std;
class  shape
{   public:
    virtual double area()=0;
    virtual void setshape()=0;
};
class triangle:public shape
{
    private:
    double length1,length2,length3;
    public:
    virtual void setshape()
    {
         cin>>length1>>length2>>length3;
    }

   virtual double area()
   {
       double  p;
       p=(length1+length2+length3)/2;
       double s=sqrt(p*(p-length1)*(p-length2)*(p-length3));

       return s;
   }

   };

   class rect:public shape
   {
   private:
    int a,b;
   public:
    virtual void setshape();
    virtual double area();
   };

  void rect::setshape()
{
   cin>>a>>b;

}

 double rect::area()
{
    int f;
    f=a*b;

    return f;
}
class circle:public shape
{
private:
    double r;
public:
    void setshape();
    double area();
};
void circle::setshape()
{
    cin>>r;
}
double circle::area()
{
    double q;
    double pi=3.14;

    q=pi*r*r;
    return q;
}
class totalarea:public triangle,public rect,public circle
{

public:
    double output(triangle ds,rect oo,circle ii)
    {
    double totalarea1 ;
    totalarea1=ds.area()+oo.area()+ii.area();
    return totalarea1;
    }
};




int main()
{
    triangle ds;
    ds.setshape();
    rect oo;
    oo.setshape();
    circle ii;
    ii.setshape();
    cout<<ds.area()<<endl;
    cout<<oo.area()<<endl;
    cout<<ii.area()<<endl;
    totalarea uu;
    cout<<uu.output(ds,oo,ii)<<endl;
    return 0;
}


  • 6
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你回答这个问题。 首先,我们可以在shape.properties文件中定义不同的形状及其属性,例如: ``` shape.circle.radius = 半径 shape.rectangle.width = 宽度 shape.rectangle.height = 高度 shape.triangle.side1 = 边1 shape.triangle.side2 = 边2 shape.triangle.side3 = 边3 ``` 然后,我们可以使用多态性来创建形状,如下所示: ```java public abstract class Shape { public abstract double getArea(); public abstract double getPerimeter(); public abstract void setPosition(double x, double y); public abstract void draw(); } public class Circle extends Shape { private double radius; public Circle(double radius) { this.radius = radius; } // 实现抽象方法 @Override public double getArea() { return Math.PI * radius * radius; } @Override public double getPerimeter() { return 2 * Math.PI * radius; } @Override public void setPosition(double x, double y) { // 设置心坐标 } @Override public void draw() { // 绘制形 } } public class Rectangle extends Shape { private double width; private double height; public Rectangle(double width, double height) { this.width = width; this.height = height; } // 实现抽象方法 @Override public double getArea() { return width * height; } @Override public double getPerimeter() { return 2 * (width + height); } @Override public void setPosition(double x, double y) { // 设置矩形左上角坐标 } @Override public void draw() { // 绘制矩形 } } public class Triangle extends Shape { private double side1; private double side2; private double side3; public Triangle(double side1, double side2, double side3) { this.side1 = side1; this.side2 = side2; this.side3 = side3; } // 实现抽象方法 @Override public double getArea() { double p = (side1 + side2 + side3) / 2; return Math.sqrt(p * (p - side1) * (p - side2) * (p - side3)); } @Override public double getPerimeter() { return side1 + side2 + side3; } @Override public void setPosition(double x, double y) { // 设置三角形顶点坐标 } @Override public void draw() { // 绘制三角形 } } ``` 最后,我们可以使用JavaFX来实现形状的显示和控制,例如: ```java public class ShapeController { private Shape shape; private double x; private double y; public void setShape(Shape shape) { this.shape = shape; } public void setPosition(double x, double y) { this.x = x; this.y = y; shape.setPosition(x, y); } public void drawShape() { shape.draw(); } public void showArea() { double area = shape.getArea(); // 在界面上显示面积 } public void showPerimeter() { double perimeter = shape.getPerimeter(); // 在界面上显示周长 } } ``` 这样,我们就可以通过ShapeController来控制形状的显示和位置变更,并计算面积和周长了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值