Object-Oriented Programming
A programming language model organized around objects rather than "actions" and data rather than logic.
Abstraction
Simplifying complex reality by modeling classes appropriate to the problem.
Encapsulation
Hide the implementation details of a class from other objects. e.g. Data is accessible only via methods, at least in ruby.
Inheritance
A way to form new classes using classes that have already been defined.
Objects/Classes
An object is a combination of data and methods. In a OOP program, we create objects. These objects communicate together through methods. Each object can receive messages, send messages and process data.
Polymorphism
Being able to send the same message to different objects and get different results
Ways of achieving it:
- Inheritance (see above)
- Duck Typing
- Decorator Pattern