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.
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.
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. Protegida: visible sólo para
las clases derivadas (subclases). Pública: visible para todas las clases con las que está
asociada.
Herencia: Básicamente consiste en que una clase puede heredar sus
variables y métodos a varias subclases (la clase que hereda es llamada superclase o
clase padre). Esto significa que una subclase, aparte de los atributos y métodos
propios, tiene incorporados los atributos y métodos heredados de la superclase. De
esta manera se crea una jerarquía de herencia.
En la imagen observamos el
análisis de una especie ave, la
clase padre, que se divide en
tres subclases.
En general, podemos tener una gran jerarquía de
Clases tal y como vemos en el siguiente gráfico:
Polimorfismo: Quizá es uno de los pilares de la programación orientada a objetos, más difíciles de entender. El
polimorfismo se aplica en los métodos y se refiere a que el mismo método puede ser usado para
diferentes fines según se necesite.