C++圆类代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++圆类代码
头文件Shape.h
#ifndef SHAPE_H
#define SHAPE_H
#include
using namespace std;
class Shape
{
public:
virtual double Area() const{return 0.0;}
virtual void PrintShapeName() const=0;
virtual void Print() const=0;
};
#endif
头文件Point.h
#ifndef POINT_H
#define POINT_H
#include "Shape.h"
class Point:public Shape
{
int x,y;
public:
Point(int=0,int=0);
void SetPoint(int,int);
int GetX(){return x;}
int GetY(){return y;}
virtual void PrintShapeName() const{cout<<"Point:";} virtual void Print() const;
};
#endif
头文件Square.h
#ifndef SQUARE_H
#define SQUARE_H
#include
using namespace std;
#include "Point.h"
class Square:public Point{
double length;
public:
Square (int x=0,int y=0,double l=0.0);
void SetLength(double);
double GetLength() const;
virtual double Area() const;
virtual void Print() const;
virtual void PrintShapeName() const{cout<<"Square:";} };
#endif
头文件Cylinder.h
#ifndef CYLINDER_H
#define CYLINDER_H
#include
using namespace std;
#include "Point.h"
class Cylinder:public Point{
double radius,high;
public:
Cylinder (int x=0,int y=0,double r=0.0,double h=0.0); void SetRadius(double);
double GetRadius() const;
void SetHigh(double);
double GetHigh() const;
virtual double Area() const;
virtual void Print() const;
virtual void PrintShapeName() const{cout<<"Cylinder:";} };
#endif
头文件Rectangle.h
#ifndef RECTANGLE_H
#define RECTANGLE_H
#include
using namespace std;
#include "Point.h"
class Rectangle : public Point
{ double length, width;
public:
Rectangle(int x =0, int y =0, double l =0.0, double w =0.0 );
void SetLength( double );
void SetWidth( double );
double GetLength() const;
double GetWidth() const;
virtual double Area() const;
virtual void Print() const;
virtual void PrintShapeName() const { cout << "Rectangle: "; } };
#endif
头文件Circle.h
#ifndef CIRCLE_H
#define CIRCLE_H
#include
using namespace std;
#include "Point.h"
class Circle : public Point{
double radius;
public:
Circle(int x = 0,int y = 0,double r = 0.0);
void SetRadius( double );
double GetRadius() const;
virtual double Area() const;
virtual void Print() const;
virtual void PrintShapeName() const { cout << "Circle: "; } };
#endif
Square.cpp
#include "Square.h"
Square::Square(int a,int b,double l):Point(a,b){SetLength(l);} void Square::SetSquare(double l){length=(l>=0?l:0);}
double Square::GetLength()const{return length;}
double Square::Area()const{return length*length;}
void Square::Print()const
{ cout<<"Left T op Vertex=";
Point::Print();
cout<<";Length="<<length<<endl;< bdsfid="175" p=""></length<<endl;<>
}
Cylinder.cpp
#include "Cylinder.h"
Cylinder::Cylinder(int a,int b,double r,double h):Point(a,b)
{ SetRadius(l);SetHigh(w);}
void Cylinder::SetRadius(double r){radius=(r>=0?r:0);}
void Cylinder::SetHigh(double h){high=(h>=0?h:0);}
double Cylinder::GetRadius()const{return radius;}
double Cylinder::GetHigh()const{return high;}
double Cylinder::Area()const{return 3.14159*radius*radius*high;} void Cylinder::Print()const
{ cout<<"Bottom center=";
Point::Print();
cout<<";Radius="<<radius<<",high="<<high<<endl;< bdsfid="189" p=""></radius<<",high="<<high<<endl;<> }
Circle.cpp
#include "Circle.h"
Circle::Circle(int a,int b,double r): Point(a,b) { SetRadius( r ); } void Circle::SetRadius ( double r ) { radius = ( r >= 0 ? r : 0 ); } double Circle::GetRadius () const { return radius; }
double Circle::Area () const{ return 3.14159 * radius * radius; } void Circle::Print () const
{ cout << "Center = ";
Point::Print ();
cout << " ; Radius = " << radius << endl;
}
Rectangle.cpp
#include "Rectangle.h"
Rectangle::Rectangle(int a,int b,double l,double w): Point(a,b) { SetLength(l);SetWidth(w);}
void Rectangle::SetLength ( double l ) { length = ( l >= 0 ? l : 0 ); } void Rectangle::SetWidth ( double w )
{ width = ( w >= 0 ? w : 0 ); }
double Rectangle::GetLength () const { return length; }
double Rectangle::GetWidth () const { return width; }
double Rectangle::Area () const
{ return length * width; }
void Rectangle::Print () const
{ cout << "Left Top Vertex = ";
Point::Print ();
cout << "; Length = " << length << ", Wigth = " << width << endl; }
Example12-6.cpp
#include
using namespace std;
#include "Shape.h"
#include "Point.h"
#include "Square.h"
#include "Cylinder.h"
#include "Circle.h"
#include "Rectangle.h"
void virtualViaPointer(const Shape * );
void virtualViaReference(const Shape & );
int main()
{
Point point(30,50);
Square square(100,50,15.0);
Cylinder cylinder(90,40,4.0,5.0);
Circle circle(120,80,10.0);
Rectangle rectangle(10,10,8.0,5.0);
point.PrintShapeName();
point.Print();
cout<<endl;< bdsfid="234" p=""></endl;<>
square.PrintShapeName();
square.Print();
cylinder.PrintShapeName();
cylinder.Print();
circle.PrintShapeName();
circle.Print();
rectangle.PrintShapeName();
rectangle.Print();
Shape *arrayOfShapes[5];
arrayOfShapes[0]=&point;
arrayOfShapes[1]=□
arrayOfShapes[2]=&cylinder;
arrayOfShapes[3]=&circle;
arrayOfShapes[4]=&rectangle;
cout<<"Virtual function calls made off"<<" base-class pointers\n";
for(int i=0;i<5;i++)
virtualViaPointer( arrayOfShapes[i]);
cout<<"Virtual function calls made off"<<" base-class references\n";
for(int j=0;j<5;j++)
virtualViaReference( *arrayOfShapes[j]);
getchar();
return 0;
}
void virtualViaPointer(const Shape* baseClassPtr)
{
baseClassPtr->PrintShapeName();
baseClassPtr->Print();
cout<<"Area="<Area()<<endl;< bdsfid="264" p=""></endl;<>
}
void virtualViaReference(const Shape& baseClassRef)
{
baseClassRef.PrintShapeName();
baseClassRef.Print();
cout<<"Area="<<baseclassref.area()<<endl;< bdsfid="271" p=""></baseclassref.area()<<endl;<>
}。