Object-oriented programming(OOP) is programming model that organizes software design around data, or objects, rather than functions and logic.
- -Classes are a blueprint for creating objects(data structure), providing initil values for state(variables or attributes), and implementations of behaviour(functions or methods.)
- -Objects are instances of a class with collection of keys(properties) which are used to hold values
- -Methods are functions that are defined inside a class that describe the behaviours of an object.
- -Attributes are defined in the class template and represent a value held by each object of the class. It represents some property of the thing that is shared by all the objects of that class. Each attribute has a value for each object
-Encapsulation: Is when we build variables and functions that work on that data within one unit, like classes. This concept is also used to hide the internal represantation, or state of an object from the outside- information hiding
-Abstraction: Is to handle complexity by hiding unnecessary details from the user. Basically it goal is to 'show' essential attributes and 'hide' unnecessary information-information hiding
-Inheritance: Is a mechanism of basing an object or class upon another object or class, retaining similar implementation-extends
-Polymorphism: Is the act of redefining a method inside a derived child class of a parent- overriding