Skip to content

Comprehensive resource on OOP principles (Encapsulation, Inheritance, Polymorphism, Abstraction), advanced concepts (Interfaces, Abstract Classes, Nested Classes, Lambda Expressions, Generics), and design patterns (Singleton, Factory, Adapter, Strategy). Includes detailed docs, Java/C++ code examples, diagrams, and exercises. Contributions welcome!

License

Notifications You must be signed in to change notification settings

HarshalMPatil20/Object-Oriented-Programming

Repository files navigation

image  image  image  image  image 

The Object Oriented Programming

Welcome to the Object-Oriented Programming (OOP) Repository! This repository is dedicated to providing resources, examples, and exercises to help you learn and master object-oriented programming concepts.

Table of Contents

  1. Introduction
  2. Getting Started
  3. Roadmap
  4. Contributing
  5. Author's Note
  6. Contact

Introduction

Image Alt Text

Object-oriented programming (OOP) is a programming paradigm that revolves around objects and classes. It emphasizes concepts such as inheritance, polymorphism, encapsulation, and abstraction. This repository aims to provide a comprehensive guide to OOP concepts using various programming languages and real-world examples.

Getting Started

To get started with this repository, follow these steps:

  1. Clone the repository to your local machine:
git clone https://github.com/HarshalMPatil20/Object-Oriented-Programming  
  1. Choose a programming language and navigate to the corresponding directory (e.g., java-examples, python-examples).

  2. Explore the examples, exercises, and resources provided in each directory.

  3. Refer to the README files in each directory for specific instructions and guidelines.

Roadmap :

1. Basics of Object-Oriented Programming   Dive in!

  1. Introduction to Object-Oriented Programming (OOP)  >>>

    • Principles Of Object-Oriented Programming  >>
      • Abstraction
      • Encapsulation
      • Inheritance
      • Polymorphism
  2. Class Vs Object  >>>

  3. How to Write Classes  >>>

    • Important : tostring() Method  >>
      • Overridden
      • Default
  4. Data Hiding  >>>

  5. Types of Properties  >>>

    • Read & Write Properties : (get & set)
    • Read-only Properties : (get)
    • Read-only Properties : (get)
  6. Constructors  >>>

  7. Types of Constructors  >>>

    • Default Constructor
      • Implicit
      • Explicit
    • Parameterized Constructor
    • Constructor Overloading  >>
  8. Array of Objects  >>>


2. Inheritance : The Code Legacy Continues...   Dive in!

  1. Generalization vs Specialization  >>>

    • Generalization >>
    • Specialization >>
  2. What is Inheritance ?  >>>

  3. Types of Inheritance  >>>

    1. Single Inheritance >>
    2. Multilevel Inheritance >>
    3. Hierarchical Inheritance >>
    4. Multiple Inheritance >>
    5. Hybrid Inheritance >>
  4. Constructors in Inheritance  >>>

    • Order of Constructors >>
    • Calling Parameterized Constructors : super() >>
  5. this v/s super Keyword  >>>

    • this Keyword >>
    • super Keyword >>
    • Detailed Comparison with Examples >>
  6. Method Overriding  >>>

  7. Dynamic Method Dispatch  >>>


3. Polymorphism : Shape-shifting Code Wizards... 🧙🔮   Dive in!

  1. What Polymorphism ?  >>>

  2. Types of Polymorphism  >>>

  3. Compile-time Polymorphism  >>>

    • Method Overloading >>
  4. Run-time Polymorphism  >>>

    • Method Overriding >>
    • Dynamic Method Dispatch >>
  5. Comparing Compile-time polymorphism and Runtime polymorphism  >>>


4. Abstraction : Mastering the Art of Hiding Complexity ... 🛡️✨   Dive in!

  1. What Abstraction ?  >>>

  2. Abstract Classes  >>>

    • What is an Abstract Class ? >>
    • Abstract Method >>
    • How to Inherit Abstract Class ? >>
    • What is the use of abstract class ? >>
  3. Interfaces  >>>

    • What is an Interface ? >>
    • Important about Interfaces >>
  4. Interface vs Abstract class  >>>

  5. Interface & Multiple Inheritance  >>>

    • Why Multiple inheritance is tricky ? >>

      • Diamond Problem
    • How Java Avoids Multiple Inheritance directly ? >>

    • Comparison Table >>


5. Encapsulation : The Secret Keeper of Code... 🤐🔐   Dive in!

  • Key Concepts of Encapsulation >>
  1. Access Modifiers  >>>

  2. Getter and Setter Methods  >>>

  3. Data Hiding  >>>

    • Encapsulation of Fields >>
    • Access through Methods >>
    • Immutable Objects >>
  4. Encapsulation in Classes  >>>

    • Properties (Fields) : >>

      • Instance Variables >
      • Constants >
      • Static Variables >
    • Methods : >>

      • Instance Methods >
      • Static Methods >
      • Constructors >
    • Constructors : >>

      • Default Constructor >
      • Parameterized Constructor >
      • Overloading Constructors >
      • Copy Constructor >
      • Constructor Chaining >
      • Private Constructors >
      • Static Initialization Blocks >
      • Copy Assignment Operator (c++) >
    • Nested Classes : >>

      • Nested Inner Class >
      • Local Inner Class >
      • Anonymous Inner Class >
      • Static Inner Class >

6. Additional Concepts :  Dive in!

  1. Static And Final  >>>

    • Static Keyword >>

      • Static Variables >
      • Static Methods >
      • Static Blocks >
      • Static Nested Class >
    • Final Keyword >>

      • Final Variables >
      • Final Methods >
      • Final Classes >
    • Comparison of Static and Final Keywords >>

  2. Packages  >>>

 

Contributing

I welcome contributions from the community! If you have suggestions, improvements, or additional examples, please feel free to open an issue or submit a pull request. Your feedback and collaboration are highly appreciated :

  1. Fork the repository and create a new branch for your contributions.
  2. Add your changes (code examples, documentation, etc.) to the appropriate directories.
  3. Write clear and concise commit messages.
  4. Submit a pull request to merge your changes into the main branch.

For more information on contributing, refer to the CONTRIBUTING.md file in this repository.

 

Author's Note

Thank you for visiting this Object-Oriented Programming (OOP) repository. My name is Harshal Patil, and I have created this repository to share my journey and insights into OOP concepts, design patterns, and practical implementations.

Why This Repository?

As a passionate software developer, I believe in the power of sharing knowledge and collaborating with the community. This repository is intended to be a comprehensive resource for anyone interested in understanding and applying OOP principles in their projects. Whether you are a beginner looking to grasp the basics or an experienced developer seeking advanced techniques, I hope you find valuable information here.

What You'll Find

In this repository, you'll discover a variety of topics related to OOP, including:

  • Fundamental OOP concepts (classes, objects, inheritance, polymorphism, encapsulation, and abstraction)
  • Design patterns and their implementations
  • Practical examples and use cases
  • Code snippets and exercises to practice OOP principles
  • Additional concepts such as static and final keywords, packages, and more
  • A comprehensive glossary of OOP terms and definitions
  • A detailed table of contents to help you navigate the repository easily

 

Contact

If you have any questions, suggestions, or just want to connect, you can reach out to me via:

Thank you for your interest in this OOP repository. Happy coding!

Best regards,
Harshal Patil

 

gmail logo   linkedin logo   discord logo   instagram logo  

About

Comprehensive resource on OOP principles (Encapsulation, Inheritance, Polymorphism, Abstraction), advanced concepts (Interfaces, Abstract Classes, Nested Classes, Lambda Expressions, Generics), and design patterns (Singleton, Factory, Adapter, Strategy). Includes detailed docs, Java/C++ code examples, diagrams, and exercises. Contributions welcome!

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages