- Brief Introduction to the Course
- BONUS: Shortcuts and Quality Code Tips PDF
- BONUS: Magic Destroyers Project - Guidelines PDF
- 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 - 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
- Hiding Fields with Properties
- Read, Write and ReadWrite Properties
- Logic to Validate Properties
- Exceptions in Object Oriented Programming
- Properties - Source Code
- 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
- 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 - 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
- Public and Private Access Modifiers
- Internal and Protected Access Modifiers
- Access Modifiers - Source code
- 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 - 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 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 - Inheritance, Eliminating Redundant Code
- Project Part 5 - Inheritance
- Project Part 5 - Inheritance - Source Code
- 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 - Implementing Abstraction (Classes & Interfaces) in the project
- Project Part 6 - Abstraction
- Project Part 6 - Abstraction - Source Code
- What is the Point of Encapsulation?
- 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 - Implementing Polymorphism where applicable
- Project Part 7 - Polymorphism
- Project Part 7 - Polymorphism - Source Code
- 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