We may earn an affiliate commission when you visit our partners.
Tod Vachev

This course will lay the foundations of Object Oriented Programming (OOP) in your mind, allowing you to progress to more systematic and cleaner Programming methods.

The course is aimed at students who have at least some coding experience, preferably with C# (but Java or any other similar language is also acceptable).

There are so many things that you will learn in this course, some of the most noted ones are:

Read more

This course will lay the foundations of Object Oriented Programming (OOP) in your mind, allowing you to progress to more systematic and cleaner Programming methods.

The course is aimed at students who have at least some coding experience, preferably with C# (but Java or any other similar language is also acceptable).

There are so many things that you will learn in this course, some of the most noted ones are:

  • What is an object and a class
  • What is object oriented programming
  • Class Constructors
  • Namespaces
  • Should you or should you not use the "this" keyword
  • Fields and Properties
  • Different ways in which Properties can be used
  • Const and Readonly constants, the difference between them and how to use them
  • Static Fields and Static (Singleton) Classes
  • Enumerations
  • Access Modifiers
  • The 4 Pillars of Object Oriented Programming - Inheritance, Abstraction, Encapsulation, Polymorphism
  • Many, many quality code guidelines

Each of these topics will be looked upon in great detail, and each of them are accompanied by a variety of Exercises. Practice makes perfect.

There are tons and tons of tutorials on Youtube, so why would you have to pay for this course?

The answer is very simple, in this course you will get every single lecture systemized in such way, that it ensures smooth transition between the previous and the following topic. Guaranteeing great learning experience.

There are no stones left unturned, everything is explained in great detail (but not too much, that would be boring :) )

The video lectures in the course are produced with the highest possible audio and video quality. No static noises to disturb you while you watch the videos, no blurry images, everything is crystal clear with crisp audio.

Enroll now

What's inside

Learning objectives

  • Understand and implement the best object oriented programming (oop) practices
  • Write better and cleaner code
  • Understand fields & properties, the relationship between them and the tidbits of properties
  • Create constructors, constructors chaining, automated constructors and more
  • The .this and .base keywords, what is their purpose, when, why and how to use them
  • Namespaces and how they help us organize our code better
  • Implementing the 5 access modifiers
  • Understand the concept behind the 4 pillars of object oriented programming
  • Inheritance, base and derived classes
  • Abstraction, abstract classes and interfaces, when to use which and what is the difference between them
  • Encapsulation or how to hide your code
  • Polymorphism, write less and more optimized code
  • Cohesion & coupling
  • Many, many quality code tips and guidelines throughout the course
  • Show more
  • Show less

Syllabus

Introduction
Brief Introduction to the Course
BONUS: Shortcuts and Quality Code Tips PDF
BONUS: Magic Destroyers Project - Guidelines PDF
Read more
The Building Blocks of a Class (Object)
Intro to Object Oriented Programming - OOP
Creating a Basic Object (Class) in C#
Fields and Properties - The Variables of a Class and The Difference Between Them
The Actions of a Class - Methods
Constructing a Class - What is The Purpose of Constructors?
Structuring The Files in Our Project - Namespaces
The Building Blocks of a Class - Source Code
Project Part 1
Project Part 1 - Introduction to the Project, Class and Class Members Creation
Project Part 1.1 - Creating Classes, Folders and Namespaces
Project Part 1.2 - Populating Classes
Project part 1 - Source Code
Properties
Hiding Fields with Properties
Read, Write and ReadWrite Properties
Logic to Validate Properties
Exceptions in Object Oriented Programming
Properties - Source Code
Project Part 2
Project Part 2 - Adding & Validating The Properties of our Classes
Project Part 2 - Enveloping Fields with Properties and Validation
Project Part 2 - Properties - Source Code
Constructors
The THIS Keyword, When and Why to Use It
It All Comes Together
Multiple Constructors in a Single Class
Reusing Constructors - Constructors Chaining
Generating Automated Constructors
Constructors - Source Code
Project Part 3
Project Part 3 - Final Constructors for our Classes
Project Part 3.1 - The "this."
Project Part 3.2 - Additional Constructors
Project part 3.3 - Constructors Chaining
Project Part 3 - Source Code
Access Modifiers
Public and Private Access Modifiers
Internal and Protected Access Modifiers
Access Modifiers - Source code
Static
Static Fields And Their Purpose
Constants in C# - Const and ReadOnly and The Difference Between Them
Static Methods
Static Class (Singleton Design Pattern) And What You Can Do With It
Enumerations - Limit The Input Options To Defend Your Code
Static - Source code
Project Part 4
Project Part 4 - Adding Static Classes and Members, and Enums Where Necessary
Project Part 4.1 - Constants
Project Part 4.2 - Enumerations
Project Part 4.3 - Static Classes
Project Part 4 - Source Code
Inheritance - 1 of 4 Pillars of Object Oriented Programming
Inheritance Introduction - Reuse Your Code, Don't Rewrite It!
Constructors in Inheriting Classes
Difference Between .base and .this Keywords
Virtual Methods and Properties - Same Method, Different Implementation
Is-A and Has-A Relationships
Inheritance - Source Code
Project Part 5
Project Part 5 - Inheritance, Eliminating Redundant Code
Project Part 5 - Inheritance
Project Part 5 - Inheritance - Source Code
Abstraction - 2 of 4 Pillars of Object Oriented Programming
Why and What is Abstraction
Interfaces - The Skeleton of a Class
A Little More on Interfaces - One Lecture is Not Enough!
Abstract Classes and Difference With Interfaces
Abstraction - Source Code
Project Part 6
Project Part 6 - Implementing Abstraction (Classes & Interfaces) in the project
Project Part 6 - Abstraction
Project Part 6 - Abstraction - Source Code
Encapsulation - 3 of 4 Pillars of Object Oriented Programming
What is the Point of Encapsulation?
Polymorphism - 4 of 4 Pillars of Object Oriented Programming
Introduction to Polymorphism
Different Classes in a Single Class Type Collection
Abstracting Collections to Generalize Methods
Final Quality Code Guidelines
Polymorphism - Source Code
Project Part 7
Project Part 7 - Implementing Polymorphism where applicable
Project Part 7 - Polymorphism
Project Part 7 - Polymorphism - Source Code
Finishing the Project
Project Part 8 - Characters Initialization
Project Part 9 - Mocking Up The Game Logic
Project Part 10 - To Couple or Not To Couple
Project Part 11 - Populating The Abilities
Project Part 12 - Finishing The Game Logic
Project Part 13 - The PlayersInfo Class Explained
Project Part 14 - Dedicated Constants File
Project Part 15 - Tools Static Class
Final Project Source Code

Save this course

Save Object Oriented Programming with C# - Beginner to Advanced to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Object Oriented Programming with C# - Beginner to Advanced with these activities:
Review C# Fundamentals
Solidify your understanding of C# syntax and basic programming concepts. This will make grasping OOP principles in C# much easier.
Show steps
  • Review C# syntax, data types, and control flow.
  • Practice writing simple C# programs.
  • Familiarize yourself with the .NET framework.
Review 'C# 8.0 and .NET Core 3.0 – Modern Cross-Platform Development'
Gain a deeper understanding of C# and .NET Core. This book will provide a solid foundation for the course.
Show steps
  • Read the introductory chapters on C# and .NET Core.
  • Focus on chapters covering language features relevant to OOP.
  • Experiment with the code examples provided in the book.
Implement a Simple Class Hierarchy
Practice implementing inheritance and polymorphism. This hands-on exercise will solidify your understanding of these core OOP concepts.
Show steps
  • Define a base class with common properties and methods.
  • Create derived classes that inherit from the base class.
  • Override methods in the derived classes to implement polymorphism.
  • Test the class hierarchy with different objects.
Four other activities
Expand to see all activities and additional details
Show all seven activities
OOP Practice Problems on HackerRank
Reinforce your OOP skills with targeted practice problems. HackerRank offers a variety of challenges that will test your understanding of inheritance, polymorphism, and other OOP concepts.
Show steps
  • Search for OOP practice problems on HackerRank.
  • Solve problems related to inheritance and polymorphism.
  • Analyze your solutions and identify areas for improvement.
Create a Blog Post on SOLID Principles
Deepen your understanding of SOLID principles by explaining them to others. Writing a blog post will force you to articulate these concepts clearly and concisely.
Show steps
  • Research the SOLID principles of object-oriented design.
  • Write a blog post explaining each principle with examples.
  • Illustrate how these principles lead to better code.
  • Publish your blog post on a platform like Medium.
Contribute to an Open Source C# Project
Apply your OOP skills in a real-world project. Contributing to open source will expose you to different coding styles and best practices.
Show steps
  • Find an open-source C# project on GitHub.
  • Identify a bug or feature you can contribute to.
  • Submit a pull request with your changes.
  • Respond to feedback from the project maintainers.
Review 'Design Patterns: Elements of Reusable Object-Oriented Software'
Learn about common design patterns used in OOP. This will help you write more maintainable and reusable code.
View Design Patterns on Amazon
Show steps
  • Read the introductory chapters on design patterns.
  • Study the examples of different design patterns.
  • Try to apply these patterns in your own projects.

Career center

Learners who complete Object Oriented Programming with C# - Beginner to Advanced will develop knowledge and skills that may be useful to these careers:
C# Developer
A C# Developer specializes in developing applications using the C# programming language. The course focuses specifically on Object Oriented Programming with C#, directly aligning with the core skills needed for this role. A C# developer will benefit from the course's detailed exploration of object oriented principles, namespaces, access modifiers, and the four pillars of OOP. The course may be particularly useful to a C# developer because of its practical exercises and emphasis on code quality, which are essential for building robust and scalable C# applications. A C# developer is expected to follow quality code guidelines that are provided in this course.
Software Engineer
A software engineer applies engineering principles to the design, development, and testing of software systems. This course may be useful in laying a strong foundation in object oriented programming, a core skill for software engineers. The course covers essential OOP concepts in C#, such as inheritance, polymorphism, and encapsulation, which are crucial for building robust and scalable software. A software engineer will find the course beneficial due to its systematic approach, practical exercises, and emphasis on code quality. The course provides quality code guidelines that a software engineer is expected to follow.
Software Developer
A software developer designs, develops, and tests software applications. This course helps build a foundation in object oriented programming using C#, which is a commonly used language in the software development world. Understanding concepts like classes, objects, inheritance, and polymorphism, as taught in this course, is crucial for writing clean, maintainable, and efficient code. Further, this course may be particularly useful because it provides a systematic, comprehensive approach to learning object oriented programming. The course provides quality code guidelines that a software developer is expected to follow.
Application Developer
An application developer is responsible for creating and maintaining software applications for various platforms. This course may be useful in understanding the principles of object oriented programming, which are fundamental to modern application development. The course covers key concepts like inheritance, abstraction, encapsulation, and polymorphism, which are essential for designing well structured and maintainable applications. An application developer will find the course useful because of its systematic approach and practical exercises. The course provides quality code guidelines that an application developer is expected to follow.
Mobile App Developer
A mobile app developer creates applications for mobile devices, often using languages like C# with platforms like Xamarin or Unity. This course helps build a foundation in object oriented programming, which is essential for designing and developing mobile applications. The course covers key concepts like class constructors, access modifiers, and inheritance, which are crucial for building well structured and efficient mobile apps. The course may be particularly useful because of its systematic approach and focus on code quality. A mobile app developer is expected to follow quality code guidelines that are provided in this course.
Game Developer
A game developer creates video games for various platforms, requiring a strong understanding of programming principles. The course can help a budding game developer gain proficiency in object oriented programming using C#, a popular language in game development, especially with the Unity engine. This course may be particularly useful because it covers topics like class constructors, namespaces, and the four pillars of OOP, all of which are essential for building complex game systems. The course includes a project to implement the concepts taught. A game developer is expected to follow quality code guidelines that are provided in this course.
Full-Stack Developer
A full stack developer works on both the front end and back end of web applications. This course may be useful for the back end development aspect, particularly if the stack involves C#. The course can help build a strong understanding of object oriented programming principles, which are essential for designing and implementing robust server side logic. A full stack developer will find the course useful because of its comprehensive coverage of OOP concepts and practical exercises. The course provides quality code guidelines that a full stack developer is expected to follow.
Technical Lead
A technical lead guides a team of developers, making technical decisions and ensuring code quality. This course may be useful for a technical lead to reinforce their understanding of object oriented programming principles, which are essential for guiding developers and ensuring code maintainability. The course covers key concepts like inheritance, abstraction, and polymorphism, plus code guidelines, which can aid a technical lead in making informed decisions. The course provides quality code guidelines a technical lead may find useful.
Web Developer
A web developer specializes in building websites and web applications. While web development involves various technologies, understanding object oriented programming can be beneficial, especially for backend development using C#. This course may be useful if one wants an understanding of OOP principles, such as classes, objects, and inheritance, which can help a web developer write modular and maintainable code. The course may be valuable because of its detailed explanations and practical exercises. A web developer is expected to follow quality code guidelines that are provided in this course.
Software Architect
A software architect is responsible for designing the high level structure of software systems. While this role typically requires experience, a solid understanding of object oriented programming is essential. This course may be useful in reinforcing and expanding knowledge of OOP principles, such as abstraction, encapsulation, and polymorphism, which are crucial for making architectural decisions. The course will also expose a software architect to quality guidelines that are expected to be followed in the field. Note that this role typically requires an advanced degree such as a master's.
Solution Architect
A solution architect designs and oversees the implementation of solutions to business problems using technology. A solution architect typically has a strong base in programming. This course may be useful in expanding knowledge of OOP principles, such as abstraction, encapsulation, and polymorphism, which are crucial for making architectural decisions. The course will also expose a solution architect to quality guidelines that are expected to be followed in the field. Note that this role typically requires an advanced degree such as a master's.
Data Engineer
A data engineer designs, builds, and maintains data pipelines and infrastructure. Data engineers use programming languages to build robust data systems. The course may be useful in learning object oriented programming techniques in C#, which can be applied to data processing tasks. Data engineers may find the discussion of namespaces and other topics valuable in structuring data projects and code. The course provides quality code guidelines that a data engineer may benefit from.
Database Developer
A database developer designs and implements databases and related software. While database work often involves SQL, understanding object oriented programming can be beneficial for creating custom database applications and tools. The course may be useful in understanding C# and OOP principles, which can be used to build data access layers and other database related components. The course provides quality code guidelines that a database developer may use.
Quality Assurance Engineer
A quality assurance engineer tests software to ensure it meets quality standards. While not directly involved in development, understanding object oriented programming can be helpful for writing test cases and automated tests. This course may be useful in providing a better understanding of the code being tested, which can lead to more effective testing strategies. The course provides quality code guidelines that may be useful to the quality assurance engineer.
DevOps Engineer
A DevOps engineer focuses on automating and streamlining the software development lifecycle. While not directly related to day to day coding, understanding object oriented programming can be beneficial for scripting and infrastructure as code. This course may be useful if one wants to improve skills in C#, which can be used for writing automation scripts and tools. The course provides quality code guidelines that a DevOps engineer may use in their work.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Object Oriented Programming with C# - Beginner to Advanced.
Classic in the field of object-oriented design. It introduces common design patterns that can be used to solve recurring problems in software development. Understanding these patterns will help you write more maintainable and reusable code. This book is commonly used as a textbook at academic institutions and by industry professionals.
Provides a comprehensive overview of C# and .NET Core. It useful reference for understanding the underlying platform and language features used in object-oriented programming with C#. It can be used as a reference to deepen your understanding of the course materials. It is commonly used as a textbook at academic institutions.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser