Skip to main content

OOPs simply explained

What is OOPs ? It is Object Oriented Programming. It comprises of

  1. Polymorphism
  2. Encapsulation
  3. Inheritance
  4. Abstraction
Already lost me ? Now here it is read about OOPs as if you deal with it every day. Let's take at OOPs from a Corporate world point of view. There is an organization which comprises of several employees which form a hierarchy.
Now every employee has their way of working, some work hard, some like to delegate and some are smart. Though everyone does work in office, they do it in their own way. This is Polymorphism (implementing a function differently while keeping the semantics of function same).
Employees are after all humans, we all have secrets. We have our own perspective which we may or may not share with everyone i.e. we have state and behavior only accessible to us. We share some of our secrets with our closest friends, some of our perspective to a group of people depending upon our status. In the end we do keep everything close and private, nothing is visible clearly to the outer world. This is Encapsulation (state are private variables and most of the behavior is in protected methods, objects share state and behavior only through methods which again have access modifiers for better control).
Inheritance is simple. We all are employees, we all get salary on the end of month, we all have performance ratings, performance bonus payouts. We all are subjected to rules and regulations of organization. We all have to live by certain norms designed for employees. This all behavior is inherited by us because we are employees.
Abstraction sounds tricky especially if we compare it to encapsulation. First let me clear what abstraction is. So we all work in teams, a team is associated with a project. Each project originates from a client. Now not everyone on the team is in direct communication with client. Client just hands over the requirements to a point of contact, a Manager or Sales guy and then expects a product at the end of the deadline. We as team work on the requirements, follow some processes but all of this is abstracted away from client. He just gets one contact to pass on the parameters and how those parameters are used and end product is achieved does not matter; hence Abstraction. If you look at encapsulation, it is more focused on each object while abstraction is seen from the point of orchestration of functionality which is usually achieved by interaction between multiple objects.

Comments

  1. Good work; thanks for sharing this important information. This information demonstrates how well you understand this issue and is useful for us in expanding our understanding. About funnel boost media share this kind of knowledge continuously.

    ReplyDelete
  2. You have Shared great content here about Toledo Ohio web design I am glad to discover this post as I found lots of valuable data in your article. Thanks for sharing an article like this.

    ReplyDelete
  3. This article was clear, well structured, and easy to read.
    The writing style felt calm and professional throughout. I liked how each section had a clear purpose. Nothing felt confusing or out of place. It made understanding the topic much easier. Well done.

    ReplyDelete
  4. It is a proficient article that you have shared here about website design toledo I got some unique and valuable information from your article. Thankful to you for sharing this article here.

    ReplyDelete

Post a Comment

Popular posts from this blog

Guide : Spring Boot with Apache CXF for REST services

In this series of guide, we are going to explore writing REST services with Apache CXF using Spring Boot. The project is build using maven. I assume that you already know how to use maven. Step 1 : Adding dependencies for Spring Boot By default you have to inherit the parent pom of spring boot, but that cannot be followed everytime, so I use an alternative to that. I basically add spring boot pom as dependency so that it brings all the dependencies. <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring.version>1.4.3.RELEASE</spring.version> <cxf.version>3.1.10</cxf.version> </properties> <dependencies> <dependency> <!-- Alternative to inheriting from parent spring pom --> <groupId>org.springframework.boot...

Resource Pooling

Requirements for Resource Pool: Allow threads to access resources concurrently Should block threads if no resource is available at the moment Maintain a pool of initialized resources to allow reuse and avoid costly initialization of resources Classes from java.util.concurrent package that will be used: ConcurrentLinkedQueue - An unbounded thread-safe queue. This collection is ideal to act as container of resources since it provides concurrent non blocking access to its elements. Semaphore - Semaphore maintains a set of permits by having a counter. This can be used to acquire or release a permit. If no permits are available then acquire() blocks the invoking thread. Implementation Code reference on github: Resource Pooling

DIY Testing Portal

Introduction A simple portal for tracking testing reports, bugs found and then mapping all this way back to features and releases. However JIRA and other such project management tools provide the features that are mentioned in this document but still this solution can come in handy for those who don't want an outside tool rather a quick dirty solution. Note this is for a general solution overview and focuses more on data modelling. Any installation and setup related findings is homework for reader :) What all is compassed in testing ? Testing Report Bugs Releases Features Test cases Environment What all do you need to see in a testing dashboard ? Timeline of all testing that has happened till date Individual testing report Test cases, which cases map to which feature(s) Testing cycles for a specific release Bugs introduced in a release, mapped to which feature(s) The portal solution involves : Mongodb Mongodb Compass - mongodb dashboard tool Elas...