# Activity: Object-Oriented Programming (OOP) in TypeScript

# **Research and Study OOP Concepts in TypeScript:**

* Understand how TypeScript implements Object-Oriented Programming principles.
    
* Focus on TypeScript’s features, such as strong typing, access modifiers, and how these enhance OOP practices.
    
    ---
    
    # **Explain the Core OOP Concepts in TypeScript:**
    
* For each OOP concept, provide the following details:
    
    * **Definition:** A brief explanation of the concept.
        
    * **Key Features:** The important characteristics of the concept.
        
    * **How it’s Implemented in TypeScript:** Explain how to implement this concept in TypeScript.
        
    * **Example Code in TypeScript:** Provide a code snippet demonstrating how the concept works in TypeScript.
        
    
    **The key OOP concepts to cover are:**
    

# **Class and Object:**

* * Define what classes and objects are in TypeScript.
        
    * Explain how classes act as blueprints and how objects are instances of classes.
        
    * Show how to define a class and create an object in TypeScript.
        

# **Encapsulation:**

* * Define encapsulation and explain how it helps hide the internal details of a class.
        
    * Demonstrate how TypeScript uses access modifiers like `public`, `private`, and `protected` to control access to class properties and methods.
        

# **Inheritance:**

* * Define inheritance and explain how one class can inherit the properties and methods of another class in TypeScript.
        
    * Demonstrate how to use the `extends` keyword and how to override methods from the parent class.
        

# **Polymorphism:**

* * Define polymorphism and explain how it allows for different classes to be treated as instances of the same parent class.
        
    * Show examples of both method overriding (runtime polymorphism) and method overloading (compile-time polymorphism) in TypeScript.
        

# **Abstraction:**

* * Define abstraction and explain its purpose in OOP.
        
    * Demonstrate how to use abstract classes and interfaces in TypeScript to implement abstraction.
        

# **Additional OOP Concepts to Include:**

# **Interfaces:**

* * Explain what an interface is in TypeScript and how it defines the structure of an object without providing implementation details.
        
    * Show how interfaces help in achieving abstraction.
        

# **Constructor Overloading:**

* * Explain how TypeScript allows multiple constructor definitions using optional parameters.
        
    * Show an example of implementing constructor overloading.
        

# **Getters and Setters:**

* * Explain how TypeScript provides `get` and `set` methods for encapsulating access to properties.
        
    * Provide an example showing how to define and use getters and setters in TypeScript.
