Hasta hace unos años se hablaba de la programación estructurada como técnica para escribir aplicaciones. La cual sólo contaba con tres estructuras que hasta hoy la implementamos: la estructura secuencial, estructura de selección (If) e iteración (For, While).
Hoy en día las aplicaciones Informáticas en cualquier lenguaje de programación son mucho más ambiciosas que las necesidades de programación hacia algunos años, principalmente debido al boom de las aplicaciones visuales y mucho más si hablamos de la programación móvil, ello ha llevado a una evolución en el desarrollo de nuevas técnicas, tales como la programación orientada a objetos y el desarrollo de entornos de programación que facilitan la programación de grandes aplicaciones.
La programación orientada a objetos reúne un conjunto de técnicas para obtener calidad interna como medio para obtener calidad externa (Reutilización y Extensibilidad), se basa en dividir un programa en pequeñas unidades lógicas de código. A estas pequeñas unidades lógicas de código se les llama objetos.
El software se organiza como una colección de objetos que contienen tanto estructura como comportamiento. Por lo tanto, un programa orientado a objetos es una colección de clases. Necesitará una al principal que cree objetos y comience la ejecución mediante la invocación de sus funciones miembro.
Los lenguajes de programación orientados a objetos tratan a las aplicaciones como conjuntos de objetos que se ayudan entre sí para realizar acciones, Permitiendo que los programas sean mas fáciles de escribir, mantener y reutilizar en el tiempo.
Los objetos en los lenguajes de programación siempre tomarán ambigüedad si no definen en concepto de la mejor manera, estos tienen información (atributos)que los diferencia de otros pertenecientes a otra clase. Por medio de métodos se comunican los objetos de una misma o diferente clase produciendo el cambio de estado en los objetos. Esto hace que los objetos se les trate como unidades indivisibles en las que no se separan la información ni los métodos usados en su tratamiento.
Los lenguajes de programación orientados a objetos tienen su origen en un lenguaje que fue diseñado por los profesores Ole-Johan Dahl y Kristen Nygaard en Noruega. Este lenguaje de programación orientado a objetos fue el «Simula 67» que fue un lenguaje creado para hacer simulaciones de naves.
La programación orientada a objetos se fue convirtiendo en el estilo de programación dominante a mediados de los años ochenta, en gran parte debido a la influencia de C++, una extensión del lenguaje de programación C, Su dominación fue consolidada gracias al auge de las Interfaces gráficas de usuario (GUI), para las cuales la programación orientada a objetos está particularmente bien adaptada.
Las características de orientación a objetos fueron agregadas a muchos lenguajes existentes durante ese tiempo, incluyendo Ada, BASIC, Lisp, Pascal, entre otros. La adición de estas características a los lenguajes que no fueron diseñados inicialmente para ellas condujo a menudo a problemas de compatibilidad y en la capacidad de mantenimiento del código. Los lenguajes orientados a objetos «puros”, por su parte, carecían de las características de las cuales muchos programadores habían venido a depender. Para saltar este obstáculo, se hicieron muchas tentativas para crear nuevos lenguajes basados en métodos orientados a objetos, pero permitiendo algunas características imperativas de maneras «seguras». El Eiffel de Bertrand Meyer fue un temprano y moderadamente acertado lenguaje con esos objetivos pero ahora ha sido esencialmente reemplazado por Java, en gran parte debido a la aparición de Internet, y a la implementación de la máquina virtual de Java en la mayoría de navegadores.