Modularidad

Es una propiedad que permite dividir la aplicación en partes más pequeñas a las que llamamos módulos; mismos que deben estar tan independientes entre sí , como sea posible, es decir débilmente acoplados pero altamente cohesivos.

El hecho de dividir un programa en componentes individuales reduce su complejidad, con lo que nos facilitará a los desarrolladores crear fronteras, elaborar una buena documentación y sobre todo tener el control y comprensión del programa en general.

La persistencia conserva el estado de un objeto en el tiempo y en el espacio
Las abstracciones forman una jerarquía

Frecuentemente un conjunto de abstracciones forma una jerarquía, y la identificación de esas jerarquías en el diseño simplifica en gran medida la comprensión del problema que se va a implementar.

La comprobación estricta de tipos impide que se mezclen abstracciones

Cabe mencionar que los objetos no son intercambiables en el caso de que sean de tipos distintos, por ejemplo no se pueden intercambiar el objeto AUTOS con el objeto LIBROS.

La concurrencia permite a diferentes objetos actuar al mismo tiempo

Fuente: Apuntes de Informática V de la FCA de la UNAM