La programación orientada a objetos requiere aplicar conceptos como la abstracción, el encapsulamiento, la jerarquía de clases y el polimorfismo. La abstracción se enfoca en la visión externa de un objeto y separa su comportamiento interno, logrando esto mediante el encapsulamiento al almacenar los elementos de una abstracción junto con su estructura y comportamiento. La jerarquía de clases define una relación entre clases donde una provee la estructura de comportamiento definida en otras. El polimorfismo permite que una referencia ace