tags:

views:

83

answers:

1
+1  Q: 

Advantages of OOP

Possible Duplicate:
What's the point of OOP?

What are the advantages of using object-orientated programming over function-orientated.

As a trivial example consider:

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;
}

Now, I am not incredibly familiar with object-orientated programming, but the above would translate to OOP as:

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) { ... };
  // ...
};

My question is this? What really makes the second code example so prefered over the first in modern programming? What are the advantages and disadvantages?

+2  A: 

Your first code snippet is actually an example of a poor man's OO implementation in a non-OO language. You're defining an abstract data type (vector_t) and all the operations allowed on it (setVector, addVector, etc), but you're not encapsulating all the data and operations into a single logical unit (i.e. a class). This can be useful if you want or need to use C instead of C++ but still want to have some of the benefits of OOP.

Since you're already doing OOP in both examples, I think it should be obvious why the second code snippet is better.

ShaderOp
Can you give an example of a non-OO code snippet that functions similarly to the two above?
Alexander Rafferty