SOLID Principles
     In this post, I am going to discuss SOLID principles, yes I mean the holy grail of OOP that  empower  developers to produce better software.     Let's start with the definition.   SOLID  Principles   is an acronym for five design principles intended to make software design more understandable, flexible and  maintainable; including S ingle Responsibility  principle, O pen-Closed principle, L iskov Substitution  principle, I nterface Segregation  principle and D ependency Inversion  principle.   The consequence of following SOLID principles will lead developers towards more extendable, logical and easier to read software; and even thought it seems like an irony to have a SOLID software but we all hope to these principles guide us toward more  understandable, flexible and maintainable software. Now let's get into the principles' details.    Single Responsibility Principle (SRP)         A class should have only a single responsibility, that is, o...


