Aplicación disciplinaria de la programación orientada a objetos.
El lenguaje Smalltalk, inventado por el Instituto de Investigación Xerox PARC en la década de 1970, define el concepto de programación orientada a objetos como la aplicación amplia de objetos y mensajes en operaciones básicas. Los fundadores de Smalltalk estuvieron fuertemente influenciados por las ideas principales de Simula 67, pero los objetos en Smalltalk son completamente dinámicos: pueden crearse, modificarse y destruirse, a diferencia de los objetos estáticos en Simula. Además, Smalltalk también introdujo la idea de herencia, trascendiendo así el modelo de programación que no puede crear instancias y Simula sin herencia.
Además, las ideas de Simula 67 también se han aplicado en muchos lenguajes diferentes, como Lisp y Pascal.
La programación orientada a objetos se convirtió en la idea dominante en la década de 1980, principalmente debido a C++, una versión extendida del lenguaje C. Con el auge de las interfaces gráficas de usuario (GUI), la programación orientada a objetos se ha adaptado bien a esta tendencia. La estrecha relación entre la GUI y la programación orientada a objetos se puede ver en Mac OS X. MAC OS X está escrito en lenguaje Objective-C, que es una versión extendida del lenguaje C que imita a Smalltalk. La idea de programación orientada a objetos también hace que la programación de procesamiento de eventos se utilice más ampliamente (aunque este concepto no se limita a la programación orientada a objetos). Una opinión es que la introducción de la GUI ha promovido en gran medida el desarrollo de la programación orientada a objetos.
Niklaus Wilt de ETH Zurich y sus colegas estudiaron datos abstractos y programación modular. Modula-2 incluye todo esto, mientras que Oberon incluye un enfoque especial orientado a objetos, a diferencia de Smalltalk y C++.
También se añadieron funciones orientadas a objetos a los lenguajes populares de la época: Ada, BASIC, Lisp, Fortran, Pascal, etc. Debido a que estos lenguajes no tenían un diseño orientado a objetos en primer lugar, esta combinación a menudo genera problemas de compatibilidad y mantenibilidad. Por el contrario, los lenguajes "puros" orientados a objetos carecen de algunas características en las que los programadores confían para sobrevivir. En este entorno, desarrollar nuevos lenguajes se ha convertido en una máxima prioridad. Como pionero, Eiffel resolvió con éxito estos problemas y se convirtió en un lenguaje popular en ese momento.
En los últimos años, Java se ha convertido en un lenguaje ampliamente utilizado, excepto que tiene una sintaxis similar a C y C++. La portabilidad de Java fue una parte integral de su éxito, ya que esta característica atrajo la inversión de un gran grupo de programadores.
Han surgido silenciosamente algunos lenguajes que soportan tanto la programación orientada a objetos como la programación procedimental. Entre ellos se encuentran Python, Ruby, etc.
Así como la programación procedimental ha mejorado las técnicas de programación estructurada, los métodos modernos de programación orientada a objetos también han mejorado el uso de patrones de diseño, diseño de contratos y técnicas de lenguaje de modelado (como UML).