Data abstraction and object-oriented programming in C++