Programación orientada a objetos


La programación orientada a objetos ( POO ) es un paradigma de programación basado en el concepto de " objetos ", que pueden contener datos y código: datos en forma de campos (a menudo conocidos como atributos o propiedades ) y código, en forma de procedimientos. (a menudo conocidos como métodos ).

Una característica de los objetos es que los propios procedimientos de un objeto pueden acceder y, a menudo, modificar los campos de datos de sí mismo (los objetos tienen una noción de o ). En OOP, los programas de computadora se diseñan haciéndolos a partir de objetos que interactúan entre sí. [1] [2] Los lenguajes OOP son diversos, pero los más populares están basados ​​en clases , lo que significa que los objetos son instancias de clases , que también determinan sus tipos .thisself

Muchos de los lenguajes de programación más utilizados (como C ++, Java, Python, etc.) son de paradigma múltiple y admiten la programación orientada a objetos en mayor o menor grado, normalmente en combinación con la programación procedimental imperativa . Los lenguajes orientados a objetos importantes incluyen: Java , C ++ , C # , Python , R , PHP , Visual Basic.NET , JavaScript , Ruby , Perl , SIMSCRIPT , Object Pascal , Objective-C , Dart, Swift , Scala , Kotlin , Common Lisp , MATLAB y Smalltalk .

La terminología que invoca "objetos" y "orientada" en el sentido moderno de programación orientada a objetos hizo su primera aparición en el MIT a finales de la década de 1950 y principios de la de 1960. En el entorno del grupo de inteligencia artificial , ya en 1960, "objeto" podía referirse a elementos identificados ( átomos LISP ) con propiedades (atributos); [3] [4] Alan Kay citó más tarde una comprensión detallada de los aspectos internos de LISP como una fuerte influencia en su pensamiento en 1966. [5]

Pensé que los objetos eran como células biológicas y / o computadoras individuales en una red, que solo podían comunicarse con mensajes (por lo que la mensajería llegó desde el principio; tomó un tiempo ver cómo enviar mensajes en un lenguaje de programación lo suficientemente eficiente como para ser útil).

Otro ejemplo temprano del MIT fue Sketchpad creado por Ivan Sutherland en 1960-1961; En el glosario del informe técnico de 1963 basado en su disertación sobre Sketchpad, Sutherland definió las nociones de "objeto" e "instancia" (con el concepto de clase cubierto por "maestro" o "definición"), aunque especializado en interacción gráfica. [6] Además, una versión de MIT ALGOL , AED-0, estableció un vínculo directo entre las estructuras de datos ("plexes", en ese dialecto) y los procedimientos, prefigurando lo que luego se denominaron "mensajes", "métodos" y "funciones miembro". ". [7] [8]


Notación UML para una clase. Esta clase Button tiene variables para datos y funciones . Mediante herencia, se puede crear una subclase como subconjunto de la clase Button. Los objetos son instancias de una clase.
El gráfico del índice de popularidad del lenguaje de programación TIOBE de 2002 a 2018. En la década de 2000, el Java orientado a objetos (azul) y el C de procedimiento (negro) compitieron por la primera posición.