welcome
Thank you for purchasing the MEAP of my book, Object-Oriented Software Design in C++. When I teach this course to my university students, I tell them the goal is that by the end of the semester, they’ll all be much better programmers. I want the same goal for my book; by the end of it, you’ll be a much better programmer.
You should have the same “course prerequisites” — basic knowledge of object-oriented programming in C++. The book’s examples use C++ 17, but I tried not to use too many C++- specified features so the design techniques can apply to earlier versions of the language or to any modern object-oriented language. Each example program is simple to compile and run on the command line.
How do you become a better programmer? The key is good software design. I teach design principles and design patterns. Examples of design principles include Single Responsibility, Encapsulation, Delegation, and Code to the Interface. Applying these principles will improve your code when you’re solving common programming problems that you encounter as you develop an application. Design patterns exist at a higher plane of software design, but they are based on the design principles. Design patterns, such as the Observer Pattern and the Visitor Pattern, are industry-proven solutions to common software architecture problems that you can adapt for your applications. Well-designed software does what it’s supposed to do and is flexible, reliable, maintainable, and costs less time and money.