Programación Orientada a
Objetos
Universidad Francisco de Paula Santander
Programación Orientada a Objetos
Juan David Velasco Contreras
1092067
Lenguaje de Programación
Villamizar Nuñez Cesar Antonio
2023
Programación Orientada a Objetos
Para tener un entendimiento
más amplio del qué es la
programación orientada a
objetos debemos tener claros
ciertos conceptos básicos, que
son de suma importancia al
momento de desarrollar
nuestros estudios, por ello
deben ser explicados muy
puntualmente, pero entonces,
¿qué es la programación orientada a objetos? Y como se originó.
La programación orientada a objetos (POO, en español); es un paradigma de
programación que parte del concepto de "objetos" como base, los cuales contienen
información en forma de campos (a veces también referidos
como atributos o propiedades) y código en forma de métodos.
Los objetos son capaces de interactuar y modificar los valores contenidos en sus campos
o atributos (estado) a través de sus métodos (comportamiento).1
Muchos de los objetos prediseñados de los lenguajes de programación actuales permiten
la agrupación en bibliotecas o librerías, sin embargo, muchos de estos lenguajes permiten
al usuario la creación de sus propias bibliotecas.
Algunas características clave de la programación orientada a objetos
son herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento.
Su uso se popularizó a principios de la década de 1990. En la actualidad, existe una gran
variedad de lenguajes de programación que soportan la orientación a objetos, estando la
mayoría de éstos basados en el concepto de clases e instancias.
Los conceptos de la POO tienen origen en Simula 67, un lenguaje diseñado para hacer
simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard, del Centro de Cómputo
Noruego en Oslo. En este centro se trabajaba en simulaciones de naves, que fueron
confundidas por la explosión combinatoria de cómo las diversas cualidades de diferentes
naves podían afectar unas a las otras. La idea surgió al agrupar los diversos tipos de
naves en diversas clases de objetos, siendo responsable cada clase de objetos de definir
sus "propios" datos y comportamientos. Fueron refinados más tarde en Smalltalk,
desarrollado en Simula en Xerox PARC (cuya primera versión fue escrita sobre Basic)
pero diseñado para ser un sistema completamente dinámico en el cual los objetos se
podrían crear y modificar "sobre la marcha" (en tiempo de ejecución) en lugar de tener un
sistema basado en programas estáticos.
La POO se fue convirtiendo en el estilo de programación dominante a mediados de
los años 1980, 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, para las cuales la POO está particularmente bien adaptada. En este caso, se
habla también de programación dirigida por eventos.
Las características de orientación a objetos fueron agregadas a muchos lenguajes
existentes durante ese tiempo, incluyendo Ada, BASIC, Lisp más 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 lenguaje de programación 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 Java en la mayoría
de navegadores web. PHP en su versión 5 se ha modificado; soporta una orientación
completa a objetos, cumpliendo todas las características propias de la orientación a
objetos.
Teniendo esto claro ya tendríamos un concepto básico de que es la programación
orientada a objetos, pero aún existen más cosas por saber, cómo lo son sus principios
que se ven explicados en el siguiente texto:
Principios de OOP
La programación orientada a objetos se basa en los siguientes principios:
Encapsulación. La implementación y el estado de cada objeto se mantienen de forma
privada dentro de un límite definido o clase. Otros objetos no tienen acceso a esta
clase o la autoridad para realizar cambios, pero pueden llamar a una lista de funciones
o métodos públicos. Esta característica de ocultación de datos proporciona una mayor
seguridad al programa y evita la corrupción de datos no intencionada.
Abstracción. Los objetos solo revelan mecanismos internos que son relevantes para
el uso de otros objetos, ocultando cualquier código de implementación innecesario.
Este concepto ayuda a los desarrolladores a realizar cambios y adiciones más
fácilmente a lo largo del tiempo.
Herencia. Se pueden asignar relaciones y subclases entre objetos, lo que permite a
los desarrolladores reutilizar una lógica común sin dejar de mantener una jerarquía
única. Esta propiedad de OOP obliga a un análisis de datos más completo, reduce el
tiempo de desarrollo y asegura un mayor nivel de precisión.
Polimorfismo. Los objetos pueden adoptar más de una forma según el contexto. El
programa determinará qué significado o uso es necesario para cada ejecución de ese
objeto, reduciendo la necesidad de duplicar código.
Modularidad. Se denomina "modularidad" a la propiedad que permite subdividir
una aplicación en partes más pequeñas (llamadas módulos), cada una de las
cuales debe ser tan independiente como sea posible de la aplicación en sí y de las
restantes partes. Estos módulos se pueden compilar por separado, pero tienen
conexiones con otros módulos. Al igual que la encapsulación, los lenguajes
soportan el modularidad de diversas formas.
Principio de ocultación. Cada objeto está aislado del exterior, es un módulo
natural, y cada tipo de objeto expone una "interfaz" a otros objetos que detalla
cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las
propiedades de un objeto contra su modificación por quien no tenga derecho a
acceder a ellas; solamente los propios métodos internos del objeto pueden
acceder a su estado. Esto asegura que otros objetos no puedan cambiar el estado
interno de un objeto de manera inesperada, eliminando efectos secundarios e
interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso
directo a los datos internos del objeto de una manera controlada y limitando el
grado de abstracción. La aplicación entera se reduce a un agregado
o rompecabezas de objetos.
Recolección de basura. La recolección de basura (garbage collection) es la
técnica por la cual el entorno de objetos se encarga de destruir automáticamente,
y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin
ninguna referencia a ellos. Esto significa que el programador no debe preocuparse
por la asignación o liberación de memoria, ya que el entorno la asignará al crear
un nuevo objeto y la liberará cuando nadie lo esté usando. En la mayoría de los
lenguajes híbridos que se extendieron para soportar el Paradigma de
Programación Orientada a Objetos como C++ u Object Pascal, esta característica
no existe y la memoria debe desasignarse expresamente.
Hasta el momento se ha recopilado un concepto un poco más complejo acerca de la
POO, y ya teniendo esto podríamos iniciar, pero y ¿dónde podemos programar este
lenguaje?, pues acá hay una lista de los lenguajes mas usados para la POO.
Si bien Simula se acredita como el primer lenguaje de programación orientado a objetos,
los lenguajes de programación orientada a objetos más populares son:
Java.
JavaScript.
Python.
C++.
Visual Basic .NET.
Ruby.
Scala.
PHP.
Y esto sería todo, como se observa la POO es un tema un tanto complejo pero que a su
vez nos facilita algunas ya que es un lenguaje muy versátil ya que su gran accesibilidad y
sus opciones como lo son el poder hacer la reutilización del código, evitar una duplicación
del código, nos permite convertir cosas complejas en estructuras más simples de
reproducir, permite amplias opciones de corrección en nuestro código, además nos da
opciones de trabajo en equipo, gracias a sus funciones de encapsulamiento, ya que
minimiza la posibilidad de duplicar o reescribir funciones al momento de haber barias
personas trabajando en un proyecto, esto y muchas cosas más hacen que la POO sea
muy versátil.
Bibliografía:
Programación orientada a objetos - Wikipedia, la enciclopedia libre
¿Qué es Programación orientada a objetos, OOP? - Definición en WhatIs.com
(computerweekly.com)