"""
Encapsulation

  - Encapsulation is the 'Bundling' of data and actions into a single unit the 
    (class).
  - The class acts like a capsule, that holds the attributes and the methods
    of the object.
  - The class separate the attributes and the methods from the rest of the
    program.
  - The class restricts access to the attributes and methods.
   Applied through the principle of information hiding.
  - The class restricts direct access to attributes in order to avoid making
    potentially problematic changes to the state.
  - We only let the rest of the program to see what we wanted to see from the 
    class (to have access to the objects).
  
  - Getters and Setters
  - Public and Non-Public


Abstraction
 - Show only the essential attributes and hide unnecessary details from the 
   user. 
 - Abstraction helps hide the complexity of the internal implementaton of the 
   internal class from the user, For instance, we use our smart phones UI to 
   access data, browse websites, and even do transactions. We don't need to 
   understand the complex details and the algorithms happing behind the scenes.

- A class has two main parts: Interface and implementation
 - The interface is the visible part of the class that the program can interacts
   with.  The wheel of the car is a good example of a class interface.
 - The implementation is the internal part of the class with the code that 
   performs the functionality behind the scenes. The car engine is a good 
   example of a class implementation.

 - Remember, in a class we choose what to show and what to hide.. public and 
   non-public.
 
 - Abstraction allows us to abstract common parts of the code to avoid 
   repetition. Like creating a general class that can be inherited by other 
   classes to prevent repetition of code.
  

"""
8e18fab52e8dadf32a5b8e6b8f216807a2c5d5c5
<mask token>

"""
Encapsulation

  - Encapsulation is the 'Bundling' of data and actions into a single unit the 
    (class).
  - The class acts like a capsule, that holds the attributes and the methods
    of the object.
  - The class separate the attributes and the methods from the rest of the
    program.
  - The class restricts access to the attributes and methods.
   Applied through the principle of information hiding.
  - The class restricts direct access to attributes in order to avoid making
    potentially problematic changes to the state.
  - We only let the rest of the program to see what we wanted to see from the 
    class (to have access to the objects).
  
  - Getters and Setters
  - Public and Non-Public


Abstraction
 - Show only the essential attributes and hide unnecessary details from the 
   user. 
 - Abstraction helps hide the complexity of the internal implementaton of the 
   internal class from the user, For instance, we use our smart phones UI to 
   access data, browse websites, and even do transactions. We don't need to 
   understand the complex details and the algorithms happing behind the scenes.

- A class has two main parts: Interface and implementation
 - The interface is the visible part of the class that the program can interacts
   with.  The wheel of the car is a good example of a class interface.
 - The implementation is the internal part of the class with the code that 
   performs the functionality behind the scenes. The car engine is a good 
   example of a class implementation.

 - Remember, in a class we choose what to show and what to hide.. public and 
   non-public.
 
 - Abstraction allows us to abstract common parts of the code to avoid 
   repetition. Like creating a general class that can be inherited by other 
   classes to prevent repetition of code.
  

"""