设计一个Dot基类并设计相应的派生类实现如下对象的功能:1、对象Circle:需记录圆心坐标;能计算圆的面积并支持打印输出;2、对象Rectangle:需记录矩形中心坐标;能计算矩形的面积并打印输出;3、对象Triangle:需记录三角形的三个顶点坐标;能计算三角形的面积并打印输出;进一步的设计一个小车对象Car:1、三角形的三个顶点坐标等于两个圆心坐标和矩形中心坐标;2、
class Dot{ protected: double x, y; public: Dot(double x_, double y_): x(x_), y(y_){} virtual double area() = 0; virtual void print() = 0; };
class Circle: public Dot{ private: double r; public: Circle(double x_, double y_, double r_): Dot(x_, y_), r(r_){} double area() override { return 3.14 * r * r; } void print() override { cout << "Circle: Center(" << x << ", " << y << "), Radius = " << r << ", Area = " << area() << endl; } };
class Rectangle: public Dot{ private: double w, h; public: Rectangle(double x_, double y_, double w_, double h_): Dot(x_, y_), w(w_), h(h_){} double area() override { return w * h; } void print() override { cout << "Rectangle: Center(" << x << ", " << y << "), Width = " << w << ", Height = " << h << ", Area = " << area() << endl; } };
class Triangle: public Dot{ private: double x2, y2, x3, y3; public: Triangle(double x1_, double y1_, double x2_, double y2_, double x3_, double y3_): Dot(x1_, y1_), x2(x2_), y2(y2_), x3(x3_), y3(y3_){} double area() override { return abs((xy2-x2y)+(x2y3-x3y2)+(x3y-xy3))/2; } void print() override { cout << "Triangle: Point1(" << x << ", " << y << "), Point2(" << x2 << ", " << y2 << "), Point3(" << x3 << ", " << y3 << "), Area = " << area() << endl; } };
class Car{ private: Circle c1, c2; Rectangle r; Triangle t; public: Car(double x1_, double y1_, double r1_, double x2_, double y2_, double r2_, double x3_, double y3_, double w_, double h_): c1(x1_, y1_, r1_), c2(x2_, y2_, r2_), r(x3_, y3_, w_, h_), t(x1_, y1_, x2_, y2_, x3_, y3_){} void draw(){ initgraph(800, 600); setfillcolor(YELLOW); setlinecolor(BLACK); fillcircle(c1.x, c1.y, c1.r); fillcircle(c2.x, c2.y, c2.r); fillrectangle(r.x - r.w/2, r.y - r.h/2, r.x + r.w/2, r.y + r.h/2); POINT points[] = {{int(c1.x), int(c1.y)}, {int(c2.x), int(c2.y)}, {int(r.x), int(r.y)}}; fillpolygon(points, 3); getch(); closegraph(); } };
原文地址: https://www.cveoy.top/t/topic/b6sY 著作权归作者所有。请勿转载和采集!