diff --git a/Concepts/Polymorphism.md b/Concepts/Object_Oriented_Programming/Abstraction.md similarity index 100% rename from Concepts/Polymorphism.md rename to Concepts/Object_Oriented_Programming/Abstraction.md diff --git a/Concepts/Object_Oriented_Programming/Encapsulation.md b/Concepts/Object_Oriented_Programming/Encapsulation.md new file mode 100644 index 0000000..30404ce --- /dev/null +++ b/Concepts/Object_Oriented_Programming/Encapsulation.md @@ -0,0 +1 @@ +TODO \ No newline at end of file diff --git a/Concepts/Object_Oriented_Programming/Inheritance.md b/Concepts/Object_Oriented_Programming/Inheritance.md new file mode 100644 index 0000000..30404ce --- /dev/null +++ b/Concepts/Object_Oriented_Programming/Inheritance.md @@ -0,0 +1 @@ +TODO \ No newline at end of file diff --git a/Concepts/Object_Oriented_Programming/Polymorphism.md b/Concepts/Object_Oriented_Programming/Polymorphism.md new file mode 100644 index 0000000..30404ce --- /dev/null +++ b/Concepts/Object_Oriented_Programming/Polymorphism.md @@ -0,0 +1 @@ +TODO \ No newline at end of file diff --git a/Concepts/Object_Oriented_Programming/README.md b/Concepts/Object_Oriented_Programming/README.md new file mode 100644 index 0000000..37560db --- /dev/null +++ b/Concepts/Object_Oriented_Programming/README.md @@ -0,0 +1,18 @@ +# What is Object Oriented Programming (OOP)? +*Object Oriented Programming* is a programming paradigm that organizes software design around data, or objects, rather than functions and logic, It is based on the concept of "objects", which can contain data, in the form of fields, and code, in the form of procedures. In *OOP*, data is encapsulated within objects, and objects are defined by their properties (attributes) and behaviors (methods). + +*Object Oriented Programming* is based on the following principles: +- [*Encapsulation*](Encapsulation.md) - The concept of bundling the data and the methods that operate on the data into a single unit, called an object. +- [*Abstraction*](Abstraction.md) - The concept of hiding the complex implementation details and showing only the necessary features of the object. +- [*Inheritance*](Inheritance.md) - The concept of creating a new class from an existing class, where the new class inherits the properties and behaviors of the existing class. +- [*Polymorphism*](Polymorphism.md) - The concept of using a single type entity to represent different types in different scenarios. + +# Benefits of OOP +Use of *Object Oriented Programming* has several benefits, including: +- **Modularity**: Encapsulation enables objects to be self-contained, making troubleshooting and collaborative development easier. +- **Reusability**: Code can be reused through inheritance, meaning a team does not have to write the same code multiple times. +- **Productivity**: Programmers can construct new programs quicker through the use of multiple libraries and reusable code. +- **Easily**:upgradable and scalable. Programmers can implement system functionalities independently. +- **Interface**:descriptions. Descriptions of external systems are simple, due to message passing techniques that are used for objects communication. +- **Security**: Using encapsulation and abstraction, complex code is hidden, software maintenance is easier and internet protocols are protected. +- **Flexibility**: Polymorphism enables a single function to adapt to the class it is placed in. Different objects can also pass through the same interface. \ No newline at end of file