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?
Please read this Jim Keogh and Mario Giannini (2004). OOP Demystified. McGraw-Hill book.
Is that all?
Unfortunately, the book is not sufficient for writing real world object-oriented software. Although the book already gives you the fundamental concepts of object-oriented programming the examples are only to illustrate the concepts, not to demonstrate real world situations.
We recommend that you read it first because it introduces basic concepts of object-oriented programming very well. It helps you to distinguish object-oriented concepts from procedural programing concepts very clearly so that you could read other books to dig into real world object-oriented programming in a proper way.
Please read this RB Whitaker (2017). The C# Player’s Guide. Starbound Software 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).
After that please take a quick look at
– this Joseph Albahari (2023). C# 12 in a Nutshell – The Definitive Reference. O’Reilly Media book or
– this Herbert Schildt (2010). C# 4.0 The Complete Reference. McGraw Hill book so that you can refer to a specific topic that needs more study when developing real world software.
I hear that there are many object-oriented programming languages such as C++, C#, Java, PHP, Objective-C, Swift, Python, Ruby.
How many object-oriented programming languages do I need to know?
You should learn as many as possible. However, in this stage, we recommend that you learn only C++ or C# or Java.
C++ is the most used language for creating software systems that need high performance, including games, operating systems, compilers, database management systems, web browsers, graphics editors, medical and engineering applications.
Java and C# are the most used languages for creating enterprise systems.
If you are required or prefer to learn C++, please read this Bjarne Stroustrup (2013). The C++ Programming Language. Pearson Education book.
If you are required or prefer to learn Java, please read this Herbert Schildt (2019). Java: The Complete Reference. McGraw-Hill Education book.
After that please read
– this Matt Weisfeld (2019). The Object-Oriented Thought Process. Pearson Education book and
– this Bertrand Meyer (1997). Object-Oriented Software Construction. Prentice Hall book to get deeper understanding about object-oriented concepts and learn how to design software using object-oriented approach more efficiently.
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 Topic 6 – Introduction to Windows Programming to continue.