Object-oriented programming (OOP) is a programming paradigm organized around objects rather than actions, and data rather than logic. With the newest release of C#, there are a number of new additions that improve OOP. This book aims to teach OOP in C# in an engaging and interactive way. After going through the book, you will have an understanding of the four pillars of OOP, which are encapsulation, inheritance, abstraction, and polymorphism, and be able to leverage the latest features of C# 8.0, such as Nullable Reference Types and Asynchronous Streams. You will then explore various design patterns, principles, and best practices in OOP.