代码之家  ›  专栏  ›  技术社区  ›  Alexander Rafferty

面向对象的优点

oop
  •  3
  • Alexander Rafferty  · 技术社区  · 15 年前

    可能重复:
    What's the point of OOP?

    举个简单的例子:

    struct vector_t {
      int x, y, z;
    }
    
    void setVector(vector_t *vector, int _x, int _y, it _z) {
      vector->x = _x;
      vector->y = _y;
      vector->z = _z;
    }
    
    vector_t addVector(vector_t* vec1, vector_t* vec2) {
      vector_t vec3;
      vec3.x = vec1->x + vec2->x;
      // and so on...
      return vec3;
    }
    

    现在,我对面向对象编程还不太熟悉,但上面的内容可以转化为面向对象编程:

    class vector_t {
    private:
      int x, y, z;
    public:
      void set(int _x, int _y, int _z) { ... };
      int getX() { return x; }
      // ...
      void addVector(vector_t *vec) { ... };
      // ...
    };
    

    1 回复  |  直到 8 年前
        1
  •  3
  •   Mhmmd    15 年前

    您的第一个代码片段实际上是一个穷人用非OO语言实现OO的例子。您正在定义一个抽象数据类型( vector_t )所有允许的操作( setVector addVector ,等等),但并不是将所有数据和操作封装到单个逻辑单元(即类)中。如果你想要或需要使用C而不是C++,这仍然是有用的,但是仍然希望拥有OOP的一些好处。

    既然您已经在这两个示例中进行了面向对象编程,那么我认为第二个代码段更好的原因应该是显而易见的。