编写程序,定义抽象基类Shape(形状),其中有一虚函数show()显示单个图形的面积,showTotal显示总面积。一个静态数据成员totalArea,存放派生的所有图形的面积。由它派生出2个派生类:Circle(圆形) 和Rectangle(矩形),要求显示所有图形的总面积
#include using namespace std; const double PI = 3.1415926; class Shape {public: Shape() { } virtual ~Shape() { } virtual Show() = 0; static double totalArea; static void ShowTotalArea() { cout << "总面积:" << totalArea << endl; } }; class Circle: public Shape {private: double radius; public: Circle(double r): radius(r) { totalArea += PI * r * r; } ~Circle() { } virtual Show() { cout << "圆面积:" << PI * radius * radius << endl; }; }; class Rectangle: public Shape {private: double length; double width; public: Rectangle(double l, double w): length(l), width(w){ totalArea += l * w; } ~Rectangle() { } virtual Show() { cout << "矩形面积:" << length * width << endl; }; }; double Shape::totalArea = 0; int main(void) { Circle c(1); c.Show(); Rectangle r(1, 2); r.Show(); Shape::ShowTotalArea(); return 0; }
举一反三
- 编写一个程序上传程序运行结果截图。声明抽象基类Shape,由它派生出3个派生类: Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个函数printArea分别输出以上三者的面积,3个图形的数据在定义对象时给定。
- 编写程序定义抽象类Shape,由它派生出5个派生类Circle(圆形)、Square(正方形)、Rectangle(矩形)、Trapezoid(梯形)、Triangle(三角形)。用虚函数分别计算几种图形的面积,并求它们的和。要求:用基类指针数组,使它每一个元素指向一个派生类对象。
- 抽象:编写一个计算图形面积的程序,程序应当能够计算并输出矩形、圆的面积。为了程序的未来扩展,设计一个图形抽象类Shape,在此基础上派生出图形类Rectangle类和Circle类。(1)Rectangle类基本信息:宽度、高度。(2)Circle类基本信息:圆心坐标、半径。(3)每个图形类有多个构造方法:默认构造方法、带参数的构造方法,成员变量为private属性,成员方法为public属性。(4)每个图形类有计算图形面积getArea()方法,显示图形的基本信息toString()方法,以及访问方法set()和get()。
- 多态实现编写一个学生计算图形面积的程序,程序能够计算并输出矩形、圆形的周长、面积。为了程序的未来扩展,设计一个图形类Shape,在此基础上派生出Rectangle类和Circle类。(1) Rectangle类基本信息:宽度、高度;(2) Circle类基本信息:圆心坐标、半径;(3)每个图形类有多个构造方法:默认构造方法、带参数构造方法;成员变量为private属性,成员方法为public属性;(4)每个图形类有area()和perimeter()方法以及显示图形基本信息print()方法。
- 定义一个抽象类Shape,它包含一个抽象方法getArea(),再定义两个类Rectangle和Circle继承于Shape,并实现getArea()方法计算具体图形的面积。编写测试类创建Rectangle和Circle类的对象,并输出对象的面积。
内容
- 0
定义一个 Shape 基类,在此基础上派生出 Rectangle 和Circle ,二者都有 GetArea() 函数计算对象的面积。使用Rectangle 类创建一个派生类 Square。
- 1
定义一个shape抽象类,派生出Rectangle类和Circle类,计算各派生类对象的面积Area().
- 2
任务:针对不同几何图形计算周长与面积1、创建Shape类,提供两个方法double perimeter() —— 计算图形周长double area() —— 计算图形面积2、创建矩形类Rectangle继承Shape类包含双精度的长宽属性:a和b3、创建圆形类Circle继承Shape类包含双精度的半径属性:r4、创建ShapeCalculation类,提供两个方法double getPerimter(Shape shape); ——计算图形周长double getArea(Shape shape); ——计算图形面积5、创建TestShapeCalculation类实例化ShapeCalculation对象输入矩形长与宽,计算其周长与面积输入圆半径,计算其周长和面积
- 3
定义一个Shape基类,在此基础上派生出Rectangle和Circle类,二者都有GetArea()函数计算对象的面积。通过屏幕提示请用户选择输入矩形长、宽,或者圆的半径,程序算出面积后输出到屏幕。
- 4
下列有关继承和派生的叙述中,不正确的是()。 A: 一个基类只能派生出一个派生类 B: 派生类可以继承到基类成员的基础上增加新的成员 C: 每一个派生类又可以作为基类再派生出新的派生类 D: 派生类继承了基类的所有数据成员和成员函数