Independientemente de la implementación, la programación Orientada a objetos se basa en 4 conceptos fundamentales:
Abstracción
La abstracción consiste en captar las características esenciales de un objeto, así como su comportamiento. Por ejemplo, piensa en unos automóviles, ¿Qué características podemos abstraer de los automóviles? O lo que es lo mismo ¿Qué características semejantes tienen todos los automóviles? Todos tendrán una marca, un modelo, número de chasis, peso, llantas, puertas, ventanas, etc. Y en cuanto a su comportamiento todos los automóviles podrán acelerar, frenar, retroceder, etc.
En los lenguajes de programación OO, el concepto de Clase es la representación y el mecanismo por el cual se gestionan las abstracciones.
Por ejemplo, en Java seria asi:
public class Automovil {
// variables
// métodos
}
Encapsulamiento
El encapsulamiento se utiliza para ocultar o esconder las características esenciales de un objeto, de manera que no pueda ser alterado por otros objetos, en cierto modo proveen un efecto de caja negra donde la interacción entre objetos debe hacerse por medio de su interfaz y no directamente.
Dependiendo de la implementación del lenguaje OO. Se tienen diferentes reglas de visibilidad para atributos, métodos y / o clases, dichas reglas son:
Privado: visible sólo para la clase y para las clases amigas o del mismo paquete en C++ y Java, respectivamente.
Protegida: visible sólo para las clases derivadas (subclases).
Pública: visible para todas las clases con las que está asociada.