1. Clases: Son los datos y operaciones comunes a un conjunto de objetos que comparten características.
2. Herencia: Una herencia puede heredar sus variables y métodos a varias subclases (la clase que hereda es llamada es llamada súper clase o clase padre).
3. Abstracción: Consiste en captar las características esenciales de un objeto, así como sus comportamientos, es decir, es un método por el cual obtenemos una determinada entidad de la realidad; sus características y funciones que desempeñan, estos son representados en clases por medios de atributos y métodos de dicha clase.
4. Encapsulamiento: Es el ocultamiento de información que no es necesario saber un determinado usuario, la utilidad del encapsulamiento va por la facilidad para manejar la complejidad, donde solo se conoce el comportamiento pero no los detalles internos, aquí lo que interesa es ¿Qué hace la clase? Pero no el ¿Cómo lo hace?
5. Modularidad: Es la propiedad que tiene un sistema que ha sido descompuesto en un conjunto de módulos cohesivos y vagamente convexos, cada modulo se puede compilar separadamente aunque tenga conexiones con otros módulos. En un diseño estructural, modularizacion comprende el agrupamiento significado de subprogramas en diseño orientado a objetos, la modularidad debe ceñirse a la estructura lógica elegida en el proceso de diseño. Dividir un programa en componentes individualizados reduce en alguna manera su complejidad; C++ separa los módulos interface de los módulos con implementación.
6. Objetos: Entidad compuesta de datos y operaciones que realizan sobre esos datos. Mantienen unas características en una o más variables e implementan su comportamiento con métodos.
7. Polimorfismo: Se basa en utilizar varios métodos con el mismo nombre y con diferente funcionalidad, un objeto polimorfismo es una entidad que puede contener valores de diferentes tipos durante la ejecución de un programa.