The need behind various object oriented concepts

The need behind various object oriented concepts

Why do we need systems?

Systems are needed so as to give certain behaviors to its users .

Why are software systems needed?

So as to automate the complexity of real world systems using the hardware resources like (Processor, Memory, Storage Hardware, communication hardware) so as enable things which were not possible without the same or giving the user a benefit in terms of time, cost or efficiency.

Why do we write classes?

So as to do a classification for the software systems so that the objects can identify each other without which they cannot interact with each other.

Why are association relationships needed within systems?

Associations relationships are needed so as to facilitate the communication between structural components to deliver its declared behavior.

Why do we need encapsulation as a concept?

Encapsulation is needed so as to make associations succeed.

Why do we need abstraction [Hiding] within systems?

Abstraction [Hiding] is needed to enable encapsulation.

Why do we need "level of indirections" or levels of abstraction?

Level of indirections are needed so as to increase the Usability, Flexibility and Security of a system. Level of indirections is used for enabling complete hiding within systems to enable encapsulation.

Why do we need "access modifiers" within programming languages?

Access modifiers are needed so as to enable selective hiding within systems to enable encapsulation.

Why do we need polymorphism?

Polymorphism is needed to incorporate "flexibility" within systems.

Why do we need overriding within programming languages?

Overriding is needed so as to implement "Polymorphism" within Programming Languages.

Overriding is a work around created by the designers of programming languages so as to simulate or implement "Polymorphism" within Programming Languages.

Why and where do we need overloading within systems or programming languages?

Overloading is needed within systems wherein there are multiple signatures with different input output combinations for a same behavior or a functionality. Because different method signatures are for the same behavior or functionality of a system , all of the signatures will have the same name. Control entities within systems will usually have over loaded method signatures for supporting different input output combinations

Why do we need class inheritance within systems?

Class inheritance is needed so as to incorporate a static change within a system and it is one of the way of incorporating changes within the system.

Why do we need interfaces within systems?

Interfaces are usually needed within systems so as to group a set of behaviors offered by the system for a particular type of actor. Boundary Entities of a system are usually the user interfaces of a system.

Interfaces are also needed within systems to enable un controlled flexibility

Why do we need abstract classes with systems?

Abstract Classes with non abstract methods marked in a form that it cannot be over ridden are needed for enabling controlled flexibility within systems.

Usually abstract classes are extensively used in designing frameworks to enable controlled flexibility.

Why do we need application programs?

Application programs are needed to codify the functional requirements of any system.

Why do we need Tool Kits within systems?

Toolkits are needed to enable code use. During the development of multiple application programs .. there are certain pieces of code which needs to be used again and again . Instead of replicating the code at multiple places, the common piece of code is placed in a tool kit.

Why do we need frameworks within systems?

Frameworks are the foundation on which software systems are built. Frameworks are designed for design reuse so that fundamental design principles of the foundation is consistently followed in all the application developed over the framework.

Hemant Jha
Founder - VPlanSolutions
Researcher, Trainer