¿Qué es programación orientada a objetos?
Dentro del mundo del diseño de software existe un tipo de programación conocida con las siglas OOD, que provienen del concepto en inglés Object Oriented Programming.
Se trata de la programación orientada a objetos y su objetivo difiere de otros tipos de diseños de software, ya que en este caso lo que se busca es desarrollar el software en torno a un objeto o datos.
Te preguntarás qué significa esto? Pues bien, básicamente la característica principal en la programación orientada a objetos es que su código está relacionado a un objeto específico y reemplaza el código lineal simple.
De esta manera el código encaja con dicho objeto y es posible así que se puedan desarrollar operaciones de usuario específicas en torno al conjunto de datos de dicho objeto.
Qué vas a encontrar aquí? Qué es la programación orientada a objetos? Historia, características, tipos, ventajas y usos de la programación orientada a objetos.
Ten en cuenta que gracias a la programación orientada a objetos ha sido posible el desarrollo de nuevas tecnologías en el ámbito de la programación. Un caso puntual de ello ha sido Microsoft Visual Basic.
Qué es la programación orientada a objetos?
Lo primero que tienes que saber es que dentro del mundo de la programación informática, un objeto es considerado un campo de datos. Este objeto posee comportamientos y atributos que son únicos.
En función de ello, la programación orientada a objetos (OOP) consiste en un modelo de programación informática en la cual el diseño del software se desarrolla alrededor de dichos objetos, ya no en torno a lógica y funciones.
Por ende, quienes trabajan en este tipo de programación, en vez de crear códigos en base a la lógica que permite manipular los objetos, lo que hacen es centrarse en los propios objetos.
Debido a las características que posee la programación de este tipo, suele utilizarse más frecuentemente en la creación de programas más bien complejos, grandes y que suelen ser actualizados periódicamente.
Es por ello que suele ser un tipo de programación muy utilizada en el ámbito del desarrollo de plataformas colaborativas.
Etapas
Dentro de la programación orientada a objetos, existen una serie de etapas que deben cumplirse para poder programar un software adecuado.
- Recopilación
En principio, lo primero que hará un desarrollador será recopilar los objetos que desea manipular.
- Identificación y modelado de datos
Una vez realizada esta recopilación, lo que hará será identificar el comportamiento individual de esos objetos y cómo se relacionan entre ellos. Esta etapa se la conoce como “modelado de datos”.
Ten en cuenta que un objeto puede contener la más variada información, es decir que pueden ser programas como los widgets, pero también pueden tener atribuciones de entidades físicas.
- Clasificación
Cuando el programador ha identificado correctamente el objeto, lo clasifica de acuerdo a los datos que contiene, como así también definiendo las secuencias lógicas que pueden manipularlo.
- Método y secuencias lógicas
Cada objeto puede tener diferentes secuencias lógicas para su manipulación, y cada una de ellas es conocida con el término de “método”. Además lo objetos tienen la facultad de comunicarse a través de interfaces denominadas “mensajes”.
- Resultado
Teniendo en cuenta esto, puedes hacer una idea de cómo es un desarrollo de programación orientada a objetos de forma muy sencilla. Por ejemplo, en aplicaciones visuales suelen disponer de botones, cuadros de diálogo y demás.
Pero además, cada objeto contiene su propio código específico. A través de dicho código se establece el comportamiento y el uso de ese objeto.
Historia de la programación orientada a objetos
Pueden encontrarse los primeros orígenes de la programación orientada a objetos en el año 1967, cuando Ole-Johan Dahl y Kristen Nygaard, del Centro de Cómputo Noruego en Oslo lanzaron Simula 67.
En líneas generales se trataba de un lenguaje que había sido desarrollado para poder realizar simulaciones de naves, para lo cual se introdujo el concepto de clase, que permitió agrupar las naves en distintas clases de objetos.
Con el correr de los años, este tipo de programación fue evolucionando y mejorando, dando lugar a la primera programación con Basic, conocida como Simula en Xerox PARC.
En este caso se introdujo la posibilidad de que los objetos pudieran crearse y modificarse según las necesidades, lo que permitió pasar a un diseño de software dinámico.
Ya para mediados de la década de los años 80´s, la programación orientada a objetos fue dominando el ámbito de la programación, sobre todo por el surgimiento de C++. Este consistía en una extensión del lenguaje de programación C.
Una de las causas fundamentales de ello fue el interés cada vez mayor en las interfaces gráficas de usuario.
Ten en cuenta que la programación orientada a objetos está perfectamente adaptada a las interfaces gráficas de usuario.
Debido a ello, cada vez más lenguajes de programación existentes fueron incorporando características propias de la programación orientada a objetos. Tal es el caso de Basic, Pascal, Ada y otros.
Si bien en principio esta incorporación a lenguajes existentes generó algunos inconvenientes de compatibilidad de código, lo cierto es que ello permitió el surgimiento de nuevos lenguajes basados en métodos orientados a objetos.
Uno de los primeros ejemplo de ello fue el lenguaje de programación Eiffel de Bertrand Meyer, que luego con el correr del tiempo fue reemplazado por el conocido Java. Claro que allí tuvo una gran preponderancia la masificación de internet y la implementación de la máquina virtual Java en la mayoría de navegadores web.
Hoy, después de varias décadas nos encontramos con las últimas y más modernas versiones de PHP, que es capaz de soportar la programación orientada a objetos de forma absoluta, con todas sus características.
Características de la programación orientada a objetos
Como sucede con cada uno de los tipos de programación, en el caso de la programación orientada a objetos también posee una serie de características que la diferencian del resto.
Lo más destacado en este punto es que la programación orientada a objetos se basa en una serie de principios esenciales. Estos son los siguientes:
- Encapsulación
Se trata de un método de ocultación de datos.
Cada objeto y su implementación se encuentran definidos por una clasificación a la cual no tienen acceso el resto de los objetos.
Por ende los objetos y procedimiento que no se encuentran en dicha categoría no pueden efectuar cambios, aunque sí pueden llamar a una lista de funciones o métodos públicos.
Esta característica permite mayor seguridad al programa, evitando así que se pueda producir una corrupción de datos por descuidos o equivocación.
- Abstracción
Gracias al concepto de abstracción, los desarrolladores que trabajan con la programación orientada a objetos pueden ir añadiendo cambios y actualizaciones al software.
Para ello, se ocultan los códigos de implementación que no se requieren para efectuar esos cambios, y al mismo tiempo se brinda acceso a los mecanismos internos de cada objeto, en función del uso de otros objetos.
- Herencia
Esta característica hace posible que los desarrolladores tengan acceso a todos los datos para su análisis. Con ello logran generar nuevos desarrollos en menor tiempo y alcanzar una mayor precisión.
Para ello, entre los objetos se determinan relaciones y subclases. De esta forma es posible utilizar una lógica común y al mismo tiempo mantener una jerarquía única.
- Polimorfismo
Esta característica consiste puntualmente en que los objetos pueden adoptar más de una forma, dependiendo del contexto en el cual se encuentren.
Para ello, el software será el que determinará cuál es el uso y el significado para cada ejecución de un objeto. De esta forma, no se genera la duplicación innecesaria de códigos.
- Modularidad
Gracias a esta característica, cada aplicación puede ser separada en partes que se denominan módulos.
Cada uno de esos módulos son independientes entre sí dentro de los posible, como así también deben serlo de la propia aplicación.
De esta forma, si bien cada uno de los módulos tiene cierta conexión con el resto de los módulos de la aplicación, lo cierto es que pueden ser compilados por separado.
- Garbage collection
En español significa recolección de basura, y precisamente se trata de la técnica que utiliza el entorno de objetos para destruir automáticamente aquellos objetos que no poseen referencias asociadas.
Gracias a ello, los desarrolladores no deben preocupase por la asignación o liberación de memoria.
El entorno será el encargado de asignar la memoria al nuevo objeto, y de la misma forma de liberarla cuando ningún objeto la esté utilizando.
Tipos de la programación orientada a objetos
Existen dos tipos de programación orientada a objetos, que se diferencias por sus conceptos básicos en cuando al método de desarrollo.
Por un lado se encuentra la programación basada en clases, que suele ser la más utilizada, y por otra parte la basada en prototipos, es decir mundanalmente en los objetos.
Repasemos las características de cada una:
- POO basada en clases
En la programación orientada a objetos basada en clases, como su nombre lo indica se utiliza la clasificación como herramienta principal, es decir como si fuese un molde.
Para ello, se crea una instancia de cada objeto, lo que vendría a ser una copia del mismo. Con ello se genera una estructura molde, llamada “clase”, en la cual estarán especificados los campos y métodos que tendrá cada uno de los objetos.
Suele ser el tipo de programación más utilizada en este ámbito, y la podemos encontrar en Java, C++ y C#.
- POO basada en prototipos
La premisa de este tipo de programación es que cualquier objeto puede ser usado como el prototipo de otro objeto. De esta forma ambos objetos comparten las mismas propiedades.
Para ello se utiliza la clonación de objetos, es decir que se crea un objeto, y cuando es necesario generar otro objeto que posee la misma estructura se utiliza el método de clonación.
Claro que además de ello, es posible añadir campos y métodos específicos al objeto clonado.
Para ello se utilizan objetos prototípicos, que son básicamente utilizados como si fueran plantilla que contienen el conjunto inicial de propiedades de un objeto.
Como has podido ver, en este tipo de POO no se utilizan las clases sino los objetos. Ejemplos de ello son JavaScript, Python y Ruby.
Ventajas la programación orientada a objetos
La programación orientada a objetos, independientemente de la variante de basamento que posea, ofrece una serie de importantes ventajas para el desarrollo de software.
En líneas generales, podemos decir que la POO tiene las siguientes ventajas:
- Reusabilidad
Fomenta la reutilización y ampliación del código, ya que cuando se han diseñado de forma correcta las clases, es posible utilizar diferentes partes del programa en diversos proyectos.
- Mantenibilidad
Los programas desarrollados en base a la programación orientada a objetos suelen ser más fáciles de leer y comprender, gracias a la sencillez que posee para abstraer el problema. Además permite ocultar detalles de implementación, con lo cual se accede a los datos más relevantes.
- Modificabilidad
Este tipo de programación hace posible que sea muy fácil modificar, suprimir o añadir nuevos objetos. De esta forma se logra agilizar el desarrollo del software.
- Fiabilidad
Teniendo en cuenta que en la POO es posible dividir el problema en partes más pequeñas, todas estas partes pueden ser analizadas y probadas de forma independiente. Así es mucho más sencillo aislar y determinar con precisión posibles errores.
Debido a todas estas ventajas, la programación orientada a objetos permite crear programas altamente conceptuales y funcionales, como así también generar sistemas más complejos.
Además teniendo en cuenta que se trata de un tipo de programación que se asemeja al mundo real, brinda la posibilidad de desarrollar software que pueda imitar eventos del mundo físico.
Esto es realmente útil no solo para mejorar y facilitar el trabajo en equipo, sino también que brinda grandes posibilidades del ámbito de TI.
Desventajas de la programación orientada a objetos
Si bien has comprobado que la POO tiene una importante serie de ventajas, lo cierto es que como todo incluye también algunos aspectos en contra.
Las principales desventajas de la programación orientada a objetos son:
- La dificultad que puede representar el cambio en la forma de pensar de la programación tradicional a la orientada a objetos
- Posible lentitud en la ejecución de programas orientados a objetos
- Requiere de aprendizaje y entrenamiento para poder utilizar las bibliotecas de clases
Usos de la programación orientada a objetos
En sus comienzos, allá por la década de los sesenta, la programación orientada a objetos tuvo su primera aparición en Simula. Se trata del primer lenguaje que poseía las características de la POO.
Sin embargo, es Smalltalk, que llegó en la década de los setenta, el mejor ejemplo de este tipo de programación, ya que con este desarrollo se logró la generación de toda la teoría en torno a la POO.
Algunos de los ejemplos más conocidos son Java, JavaScript, Pauscal, PHP, PowerScript, Python, Ruby, Visual FoxPro y Visual Basic.
Accede a nuestro post exclusivo sobre los Lenguajes de programación orientada a objetos
Existen otros lenguajes de programación orientados a objetos. Algunos de los ejemplos más notables son:
- ABAP
- ABL
- ActionScript
- ActionScript 3
- C#
- Clarion
- Clipper
- Object Pascal
- Delphi
- Gambas
- GObject
- Genie
- Harbour
- Eiffel
- Fortran 90/95
- Lexico
- Objective-C
- Ocaml
- Perl
- Smalltalk
- Swift
- Magik
- Vala
- VB.NET
- Visual DataFlex
- Visual Objects
- XBase++
- Scala
En la actualidad, puede encontrarse la programación orientada a objetos en diversos ámbitos, aunque lo cierto es que muchos de esos desarrollos actuales suelen ser híbridos, que combinan características de la POO y otros conceptos.
Ejemplo de estos híbridos son lenguajes tales como C++, OOCOBOL, OOLisp, OOProlog y Object REXX. Estos han sido diseñados en base a un lenguaje de programación clásico, al cual se han añadido extensiones orientadas a objetos.
Ten en cuenta que este universo está en constante cambio y desarrollo, buscando la forma de dar respuesta a las diferentes necesidades que surgen.
Es por ello que la programación orientada a objetos ha dado origen también a la programación orientada a aspectos, conocida también como POA.
Si bien esta es una metodología que se encuentra en plena etapa de desarrollo y maduración, lo cierto es que cada vez son más los proyectos que se están generando en base a ello.
Deja una respuesta