Now, let's move forward. Grab your notebook!
## Unit 1, Topic 2: Object-Oriented Programming (OOP) Basics in C#
### 1. Beginner-Friendly Explanation
Imagine you want to build a house. You don't just start stacking bricks randomly. First, you hire an architect to draw a **blueprint**. The blueprint isn't a house; you can't live in it. It just defines how the house will look (number of doors, color of walls). Once the blueprint is ready, you can build **actual houses** from it. You can build one house, or fifty houses, all using that same blueprint.
In C#:
* The **Class** is the blueprint.
* The **Object** is the actual house you built.
Object-Oriented Programming (OOP) is simply a way of organizing your code around these real-world "objects" rather than just writing a long list of instructions.
### 2. Detailed Notes
C# is a purely object-oriented language. Everything you do revolves around classes and objects. There are **Four Pillars of OOP** you must memorize.
**A. Class and Object**
* **Class:** A user-defined blueprint or prototype from which objects are created. It contains properties (variables) and methods (functions).
* **Object:** An instance of a class. When a class is defined, no memory is allocated until an object is created using the new keyword.
* *C# Example:* Car myCar = new Car();
**B. The 4 Pillars of OOP**
1. **Encapsulation (Data Hiding):**
* *Concept:* Wrapping data (variables) and code (methods) together into a single unit (like a medical capsule).
* *Real-World:* You know how to use a TV remote, but you don't need to know the inner wiring to change the channel. The wiring is "encapsulated."
2. **Abstraction (Hiding Complexity):**
* *Concept:* Displaying only the essential information and hiding the background details.
* *Real-World:* When you hit the brakes on a car, the car stops. You don't need to understand the complex hydraulic mechanisms happening behind the scenes.
3. **Inheritance (Code Reusability):**
* *Concept:* A new class (Child) acquires the properties and behaviors of an existing class (Parent).
* *Real-World:* A "Smartphone" (Child) inherits basic features from a "Mobile Phone" (Parent), like making calls, but adds new features like a camera.
4. **Polymorphism (Many Forms):**
* *Concept:* The ability of a single function or method to act differently depending on the object that calls it. (Implemented via Method Overloading and Overriding).
* *Real-World:* The word "Cut" means something different to a Surgeon, a Hairdresser, and an Actor. Same word, different behavior.
### 3. Quick Revision Notes & Tricks
* **Memory Trick for the 4 Pillars:** Remember the word **A PIE**!
* **A**bstraction
* **P**olymorphism
* **I**nheritance
* **E**ncapsulation
* **Exam Tip:** University examiners *love* asking for real-world examples. Never just write the definition; always include a 1-line real-world example like the "TV Remote" or "Car Blueprint" to guarantee full marks.
### 4. Question Bank
* **2-Mark Questions:**
1. What is the difference between a Class and an Object?
2. Define Encapsulation.
* **5-Mark Questions:**
1. Explain the concepts of Inheritance and Polymorphism with real-world examples.
2. Why is C# considered an Object-Oriented language? Explain the 4 pillars briefly.
* **10-Mark Questions:**
1. Define Object-Oriented Programming. Discuss all four pillars of OOP in detail with appropriate real-world analogies and basic C# syntax examples.
### 5. Answers (Exam-Oriented)
**Q: What is the difference between a Class and an Object? (2 Marks)**
> **Answer:** A Class is a logical template or blueprint that defines the properties and behaviors of an entity, whereas an Object is a physical instance of a class that occupies memory. For example, "Car" is a class, but a "Red Ford Mustang" is an object.
>
**Q: Explain the concepts of Inheritance and Polymorphism. (5 Marks)**
> **Answer:**
> **Inheritance:** It is the mechanism where a new class (derived class) inherits the fields and methods of an existing class (base class). It promotes code reusability. *Example:* A class Dog inherits from a base class Animal.
> **Polymorphism:** Derived from Greek words meaning "many forms." It allows methods to do different things based on the object it is acting upon. It is achieved through method overloading (compile-time) and method overriding (run-time). *Example:* A method Draw() will behave differently if called by a Circle object versus a Square object.
>
### 6. Practice Section (Your Turn!)
**MCQ 2:** Which OOP principle prevents other classes from directly accessing and modifying the internal data of a specific class?
A) Inheritance
B) Polymorphism
C) Encapsulation
D) Abstraction
**Scenario Question:** If I create a base class called Bank_Account and a derived class called Savings_Account, which OOP pillar am I using?
### 7. Resources
* **YouTube:** Search "Programming with Mosh - C# Basics for Beginners" (Watch the section on Classes).
* **Textbook:** *C# 4.0 The Complete Reference* by Herbert Schildt (Chapter on Classes and Methods).
* **Documentation:** Microsoft Learn: "Object-Oriented Programming (C#)".
### 8. Learning Path & Daily Task
* **Current Status:** Unit 1, Topic 2 (OOP Concepts).
* **Today's Task:** Memorize the "A PIE" acronym. Open your notes and write down one completely original real-world example for each of the 4 pillars (do not use the car or animal examples I gave you).