美文网首页
C++ 入门笔记 OOP与类2

C++ 入门笔记 OOP与类2

作者: 被子十三 | 来源:发表于2018-11-14 13:08 被阅读4次

    类的继承

    假设现在需要实现多种曲线的类,如直线,圆,等等。有一个方式是先定义一个空泛的“曲线”类,再根据需要具体定义的实际曲线。这些实际的曲线可继承“曲线”类,从而节省很多功夫。
    “曲线”类curve的定义如下。

    #include "vector.h"
    #include "point.h"
    
    class curve{
        public:
        //{ } means no implementation required
          curve() { };
          ~curve() { };
          double length() const;
          virtual vector tangent(point const & p) const = 0; // Pure virtual
          point p0() const;
          point p1() const;
       protected:
          point endpoint0_;
          point endpoint1_;
      }
    

    类成员属性

    类成员属性分为private, protected, public三种。此处定义一个直线类line,其继承自curve.

    #include "curve.h"
    
    class line : public curve{
      public:
          line();
          line(point const& point0, point const& point1);
          virtual vector tangent(point const& p) const;
          vector tangent() const;
    };
    

    注意此处的public。此时,line可以访问和修改curve中的所有public成员,可以访问curve中的所有protected成员,而无法访问curve中的private成员。对于class而言,此关键字默认为private
    下图展示了他们之间的关系。

    类成员属性

    UML图

    UML图代表了类之间的关系。

    curve系的UML图
    在上图中,+表示public#代表protected-代表private
    详细讲解图中类与类之间的关系:
    vectorcurve之间是关联关系。这表示……他们之间有关系。实际实现通过在curve中定义一个带有vector类型的成员。如此处的tangent()函数。
    pointcurve之间是组合关系,这表示pointcurve的一部分。
    line, circlecurve之间是继承关系。所以我们可以说line是一个curve

    相关文章

      网友评论

          本文标题:C++ 入门笔记 OOP与类2

          本文链接:https://www.haomeiwen.com/subject/anfdfqtx.html