第十一周 项目3 - 点类派生直线类】定义点类Point,并以点类为基类,继承关系

项目3 - 点类派生直线类】定义点类Point,并以点类为基类,派生出直线类Line,从基类中继承的点的信息表示直线的中点。请阅读下面的代码,并将缺少的部分写出来。

[cpp] view
plain
copyprint?

  1. #include<iostream>
  2. #include<Cmath>
  3. using namespace std;
  4. class Point //定义坐标点类
  5. {
  6. public:
  7. Point():x(0),y(0) {};
  8. Point(double x0, double y0):x(x0), y(y0) {};
  9. void PrintPoint(); //输出点的信息
  10. protected:
  11. double x,y;   //点的横坐标和纵坐标
  12. };
  13. void Point::PrintPoint()
  14. {
  15. cout<<"Point: ("<<x<<","<<y<<")";    //输出点
  16. }
  17. class Line: public Point   //利用坐标点类定义直线类, 其基类的数据成员表示直线的中点
  18. {
  19. public:
  20. Line(Point pts, Point pte); //构造函数,用初始化直线的两个端点及由基类数据成员描述的中点
  21. double Length();    //计算并返回直线的长度
  22. void PrintLine();   //输出直线的两个端点和直线长度
  23. private:
  24. class Point pts,pte;   //直线的两个端点,从Point类继承的数据成员表示直线的中点
  25. };
  26. int main()
  27. {
  28. Point ps(-2,5),pe(7,9);
  29. Line l(ps,pe);
  30. cout<<"About the Line: "<<endl;
  31. l.PrintLine();  //输出直线l的信息:两端点及长度
  32. cout<<"The middle point of Line is: ";
  33. l.PrintPoint(); //输出直线l中点的信息
  34. return 0;
  35. }

程序运行代码:

/*
*Copyright (c)2014,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:d.cpp
*作    者:张旺华
*完成日期:2015年5月31日
*版 本 号:v1.0
*/

#include <iostream>
#include<iomanip>
#include<cstring>
#include <cmath>
using namespace std;

class Point
{
public:
    Point(double x=0,double y=0):X(x),Y(y) {}
    void printPoint();
    double getX();
    double getY();
protected:
    double X,Y;
};

void Point::printPoint()
{
    cout<<"("<<X<<","<<Y<<")"<<endl;
}

double Point::getX()
{
    return X;
}

double Point::getY()
{
    return Y;
}
class Line :public Point
{
public:
    Line(Point P1=(0,0), Point P2=(0,0)):p1(P1),p2(P2), p((P1.getX()+P2.getX())/2,(P1.getY()+P2.getY())/2) {};
    double Length();   //求线段长度
    void printLine();  //输出线段起始点、终止点,长度
   void  printPoint(); //输出线段中点坐标
private:
    Point p1,p2,p;
};
void Line::printPoint()
{
    cout<<"("<<p.getX()<<","<<p.getY()<<")"<<endl;
}

void Line::printLine()
{
    cout<<" 1st "<<endl;
    p1.printPoint();
    cout<<" 2nd "<<endl;
    p2.printPoint();
    cout<<" The Length of Line: "<<Length()<<endl;
}
double Line::Length()
{
    double dx = p1.getX() - p2.getX();
    double dy =p1.getY() - p2.getY();
    return sqrt(dx*dx+dy*dy);
}
int main()
{
    Point ps(-2,5),pe(7,9);
    Line l(ps,pe);
    cout<<"About the Line: "<<endl;
    l.printLine();  //输出直线l的信息
    cout<<"The middle point of Line is: ";
    l.printPoint(); //输出直线l中点的信息
    return 0;
}

运行结果:

知识点运用及学习心得:

考察构造函数,继承的理解。

时间: 2024-08-06 20:03:33

第十一周 项目3 - 点类派生直线类】定义点类Point,并以点类为基类,继承关系的相关文章

第十一周项目三-点类派生直线类

[项目3 - 点类派生直线类]定义点类Point,并以点类为基类,派生出直线类Line,从基类中继承的点的信息表示直线的中点.请阅读下面的代码,并将缺少的部分写出来. #include<iostream> #include<Cmath> using namespace std; class Point //定义坐标点类 { public: Point():x(0),y(0) {}; Point(double x0, double y0):x(x0), y(y0) {}; void

十一周 项目三 点类

#include<iostream> #include<Cmath> using namespace std; class Point //定义坐标点类 { public: Point():x(0),y(0) {}; Point(double x0, double y0):x(x0),y(y0){}; void PrintPoint(); //输出点的信息 double getx() { return x; } double gety() { return y; } protect

第十一周(点类派生直线类)

/* *copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:第十一周(点类派生直线类) *作者:王忠 *完成日期:2015.5.20 *版本号:v1.0 * *问题描述:定义点类Point,并以点类为基类,派生出直线类Line,从基类中继承的点的信息表示直线的中点.请阅读下面的代码,并将缺少的部分写出来. *输入描述: *程序输出: #include<iostream> #include<Cmath> using name

十一周 项目4 类族的设计

#include <iostream> #include <cmath> using namespace std; class Point { public: Point(double x=0,double y=0); void setPoint(double,double); double getx() { return x; } double gety() { return y; } void display(); protected: double x,y; }; class

十一周 项目4 类族的设计 完整版

#include <iostream> #include <cmath> using namespace std; class Point { public: Point(double x=0,double y=0); void setPoint(double,double); double getx() { return x; } double gety() { return y; } void display(); protected: double x,y; }; Point

第11周 【项目3 - 点类派生直线类】

问题描述: [项目3 - 点类派生直线类]定义点类Point,并以点类为基类,派生出直线类Line,从基类中继承的点的信息表示直线的中点.请阅读下面的代码,并将缺少的部分写出来. [cpp] view plaincopyprint? #include<iostream> #include<Cmath> using namespace std; class Point //定义坐标点类 { public: Point():x(0),y(0) {}; Point(double x0, 

第十一周项目1

#include <iostream> using namespace std; class Stu { public: Stu (int n,string nam); void display(); protected: int num; //学号 string name; //姓名 }; Stu::Stu(int n,string nam ) { num=n; name=nam; } void Stu::display() { cout<<"学号:"<

十一周 项目2 职员有薪水了 扩展

#include <iostream> #include <cstring> using namespace std; class CPerson { protected: char *m_szName; char *m_szId; int m_nSex;//0:women,1:man int m_nAge; public: CPerson(char *name,char *id,int sex,int age); void Show1(); ~CPerson(); }; CPer

十一周 项目2 职员有薪水了

#include <iostream> using namespace std; class CPerson { protected: string m_szName; string m_szId; int m_nSex;//0:women,1:man int m_nAge; public: CPerson(string name,string id,int sex,int age); void Show1(); ~CPerson(); }; CPerson::CPerson(string n