Why do I need to learn about object-oriented programming?
Because most of modern software are written using object-oriented programming languages. Using object-oriented programming as a tool and more importantly as a problem solving approach will save you a lot of time and cost when you create modern software systems.
What can I do after finishing learning object-oriented programming?
You will be able to write a program to allow a user
– to draw a picture, save it, then load it, or
– to play ping-pong game, or
– to store and search for an employee’s CV.
Alright! What should I do now?
First, please read this book to gain a fundamental understanding of object-oriented programming with intuitive examples, and to distinguish object-oriented concepts from procedural programming concepts: Jim Keogh and Mario Giannini (2004). OOP Demystified. McGraw-Hill.
After that, please read this book to learn how to apply object-oriented concepts to creating real world software using a specific object-oriented programming language (i.e. C# language): RB Whitaker (2017). The C# Player’s Guide. Starbound Software.
After that, please take a quick look at one of the books below so you can refer to a specific topic that requires further study when developing real-world software:
- Joseph Albahari (2023). C# 12 in a Nutshell – The Definitive Reference. O’Reilly Media
- Herbert Schildt (2010). C# 4.0 The Complete Reference. McGraw Hill
I hear that there are many object-oriented programming languages, such as C++, C#, Java, PHP, Objective-C, Swift, Python, and Ruby. How many object-oriented programming languages do I need to learn?
You should learn as many as possible. However, at this stage, we recommend that you focus on learning only C++, C#, or Java.
C++ is the most widely used language for developing high-performance software systems, including games, operating systems, compilers, database management systems, web browsers, graphics editors, and medical or engineering applications.
Java and C# are the most widely used languages for developing enterprise systems.
If you are required or prefer to learn C++, please read this book to learn the core concepts of object-oriented programming with C++ implementation and specific features: Bjarne Stroustrup (2013). The C++ Programming Language. Pearson Education.
If you are required or prefer to learn Java, please read this book to learn the core concepts of object-oriented programming with Java implementation and specific features: Herbert Schildt (2019). Java: The Complete Reference. McGraw-Hill Education.
You should focus on mastering the core object-oriented principles such as encapsulation, inheritance, polymorphism, and abstraction, rather than trying to learn every OOP language. Once you understand these principles well, you can apply them across different languages with relatively little effort.
After that, please read the two books below to deepen your understanding of OOP concepts and to learn how to design software more efficiently using this approach:
- Matt Weisfeld (2019). The Object-Oriented Thought Process. Pearson Education
- Bertrand Meyer (1997). Object-Oriented Software Construction. Prentice Hall
Terminology Review:
- Abstraction.
- Encapsulation.
- Class-based Inheritance.
- Prototype-based Inheritance.
- Polymorphism.
- Types.
- Method Variables (C++ Function Pointers, C# Delegates).
- Concurrency.
- Collections.
- Object-Oriented Analysis.
- Object-Oriented Design.
- Object-Oriented Programming.
After finishing learning about object-oriented programming, please click on Topic 6 – Introduction to Windows Programming to continue.