This course is an introduction to Object-Oriented Programming (OOP) concepts, and programming practices. The course introduces the concepts, discusses them, and then elaborates on them, using specific examples in various OOP languages. The main language used is C++, but examples from other OOP languages may be used on occasion.
Many books and courses on C++ programming treat C++ as merely an extension of the C language. While there are many areas where C++ does provide better facilities than C, and these have (sometimes considerable) value, I believe that this is not the best way to learn how to use the object-oriented approach effectively. On the contrary, it tends to allow programmers to continue to write C programs that take advantage of the fact that C++ is ‘a better C’. C++ is much more than that.
On the other hand, other books and courses take a ‘purist’ view of object-oriented programming, and insist on using a pure object-oriented language (back in the day, Smalltalk was often cited) to provide an introduction to object-oriented programming that essentially forces the programmers to change their mindset to adapt to what such a language requires. While this may be more effective at teaching object-oriented principles, it often distracts people with the unique and often peculiar details of the syntax of such a language. In my experience, students prefer to take a more pragmatic approach, and often consider languages like Smalltalk as interesting but not particularly practical, because they will rarely use Smalltalk to produce solutions for their customers.
This course attempts to take a middle road. I believe that the concepts of object-oriented programming are important enough to discuss without bogging students down in language-specific details of syntax and implementation. So, I am taking the approach of introducing object-oriented concepts in a way that is not directly related to the language we will primarily be using — C++. In fact, I deliberately avoid the use of C++ during the Object-Oriented Concepts part of the course! But eventually, I do want you to do realistic and practical programming, and so, after the introductory sections, we will then plunge into C++ to learn its concepts, syntax, etc.
We delve into C++ in a fairly deep way. C++ is a complex language, and it has been enhanced significantly in recent decades. Some of those enhancements are pretty advanced, and not easy to understand and use.
At the end of the course, I hope that you will be using C++ in a way that goes beyond using it merely as ‘a better C’.