First, I’ll cover the basics: objects, classes, instance, and methods. Then, I’ll briefly explain the four main pillars of OOP design: Encapsulation, Abstraction, Inheritance, and Polymorphism.
An object is data formatted to represent a real world object that has a state and behavior.
Different programming languages go about this different ways, but essentially a class is a blueprint for creating an object.
Any time an object is created it is instantiated.
Functions within an object.
In other words, our object’s behaviors. The coffee machine above would have a method for making coffee and the button would call it. The office worker would have a method for pushing the button, drinking the coffee, and caffeinated typing.
You don’t need to know how the coffee machine works to press the button and get coffee.
In other words, the behavior and state of the object in question should be private and only affected by private methods within the object. (The person who pressed the button doesn’t see the water being heated and pushed through the coffee grounds.) The object should have public methods that other objects can use to interact with it (like the button).
The only information about an object that is available outside the object is information absolutely necessary for other objects to use it.
This is also referred to as information hiding, and the public methods made available for other objects are “getters” and “setters.”
Just like genetics — if a class was a dog and each object inheriting from the dog class was a puppy.
ghostFred both have a method called
getDressed() is called,
Fred will put on his ascot, and
ghostFred will put on his ghost costume.
In this case,
Fred is the class, and
ghostFred is an object that extends
ghostFred inherits the method
Fred, but when
ghostFred is instantiated, the programmer passes different arguments to
getDressed() and/or changes the method’s code. The OOP language evaluates which
getDressed() to use based on which object is being referenced when it is called (the object the
this keyword would refer to). Used correctly, this can significantly cut down on repeated code.
If you’re an experienced developer, hopefully you got a chuckle out of this. If you’re a beginner, I hope it helps you use an OOP language more confidently!
If you enjoyed this high level overview of OOP in memes or it left you with more questions, leave a comment!