The design of reusable software components is becoming more and more central with object-oriented
languages. This paper provides practical and
easy-to-remember guidelines on what member functions should be included in a class. The first part explains and clarifies the evolution and the pros/cons of the principles of data abstraction. It also presents classes as abstraction mechanisms. The second part provides tips about class design and a common vocabulary about methods for effective communication among embedded systems developers.