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 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 multiparadigmáticos y admiten la programación orientada a objetos en mayor o menor grado, generalmente en combinación con la programación imperativa y procedimental . Los lenguajes orientados a objetos significativos 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 "orientado" en el sentido moderno de la programación orientada a objetos hizo su primera aparición en el MIT a fines 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 luego citó una comprensión detallada de las funciones internas 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, solo capaces de comunicarse con mensajes (por lo que la mensajería apareció 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 denominó "mensajes", "métodos" y "funciones miembro". ". [7] [8]


Notación UML para una clase. Esta clase Button tiene variables para datos y funciones . A través de la 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 procedimiento C (negro) compitieron por la primera posición.