OOPS & Design principles

Dependancy Inversion Principle

High-Level Modules Should Not Depend on Low-Level Modules. Both Should Depend on Abstractions:

Abstractions Should Not Depend on Details. Details Should Depend on Abstractions:




 The main goal of Abstraction is to handle complexity by hiding unnecessary details from the user. That enables the user to implement more complex logic on top of the provided abstraction without understanding or even thinking about all the hidden complexity. 

Encapsulation is defined as wrapping up of data and information under a single unit 

Inheritance in OOP = When a class derives from another class. The child class will inherit all the public and protected properties and methods from the parent class 

Polymorphism is the ability of an object to take on many forms. 

Compile time polymorphism and Runtime polymorphism. Method overloading, operator overloading, and method overriding are examples.