Many applications have been developed using object-oriented languages, particularly C++. Today, the popularity of object-oriented programming is justified. In fact, several teams are usually involved in the development of a piece of software, hence the problem of interaction between these different parties. What's more, software has an increasingly long lifespan, during which it undergoes major adaptations and modifications (changes in technology, requirements, standards, etc.). Finally, object-oriented programming, through the concepts it proposes (object, class, inheritance, sub-typing, polymorphism, etc.), meets the needs of such applications.
The first part of this article describes the object concepts offered by the C++ language. Then, based on our experience of developing C++ applications, we'll analyze some of the problems associated with object-oriented design choices in C++ and their immediate or future consequences for product development.
I would like to thank my colleagues who, despite their busy schedules, agreed to devote part of their time to reading this document. Through their comments, they have encouraged me to develop the presentation of certain concepts or to provide additional explanations. I am thinking in particular of my colleague and friend Mamoun Filali.