Object Oriented Design

Thinking in terms of Objects

Created by D3images - Freepik.com

Disclaimer : The content of this blog are my views and understanding of the topic. I do not intend to demean anything or anyone. I am only trying to share my views on the topic so that you will get a different thought process and angle to look at this topic.

Introduction

Object oriented programming is a paradigm which helps in dividing the complex problems into small components and assembling them to provide complete solution. We tend to objectify everything. Similar to Mechanical, Civil and Electrical field of Engineering even Software Engineering is all about creating reusable Software components which we can assemble together to create a big software.

Object oriented programming is suitable for use cases wherein you need to develop and manage a complex application. We can understand objects and their relationships. Broadly we divide the application objects into two categories: REAL (DOMAIN) & META. Real objects for mapping the real world entities and META objects for modelling our application code for effective understanding and managing.

Application

Object oriented programming is applicable when you want to manage a huge and complex software. In the olden days when the procedural programming was popular, the issue was that an increase in the software size made it unmanageable. Moreover the code was difficult to understand and change. Hence object oriented programming was born.

However in today's world where big data and cloud is popular the main problem is processing and managing huge data. The typical use case for this is functional programming paradigm. Now the question is in the current world is there still a need of Object Oriented Programming ? The answer is 'yes'. Typical use case for the OOP is modelling the domain for better understanding the code.

Conclusion

Object oriented programming thought process is all about thinking in terms of objects. Follow SOLID design principles while designing your application. We will be learning through the series of tutorials how to achieve this.