OOP concepts
As we have already stated in the introduction, the main OOP concepts are as follows:
- Class: This defines the properties and behavior (methods) of objects that are created based on this class.
 - Object: This defines a state (data) as values of its properties, adds behavior (methods) taken from a class, and holds them together.
 - Inheritance: This propagates behavior down the chain of classes connected via parent-child relationships.
 - Interface: This describes how object data and behavior can be accessed. It isolates (abstracts) an object’s appearance from its implementations (behavior).
 - Encapsulation: This hides the state and details of the implementation.
 - Polymorphism: This allows an object to assume an appearance of implemented interfaces and behave like any of the ancestor classes.
 
Object/class
In principle, you can create a very powerful application with minimal usage of classes and objects. It became even easier to do this after...