marzo 29, 2024

BitCuco

¡Hola Mundo!

Programación Orientada a Objetos – Introducción

programacion orientada a objetos

¿Qué es la Programación Orientada a Objetos (POO)?

Es un paradigma de programación enfocado a objetos, a diferencia de otros paradigmas, el concepto de orientado a objetos es casi literal, tal como un animal (por ejemplo un caracol), el cual tiene atributos o propiedades característicos del objeto (por ejemplo color, tamaño, forma, género) y métodos para llevar a cabo acciones específicas con el objeto (por ejemplo caminar, dormir, comer).

Programación Orientada a Objetos – Breve Historia

Simula 67, el primer lenguaje de POO

El concepto Programación Orientada a Objetos (POO) nace de la idea de crear objetos identificables por medio de sus propiedades. Éste concepto fue formulado por Ole-Johan Dahl y Kristen Nygaard en la Universidad de Oslo. Éstos científicos noruegos inventaron el lenguaje de programación Simula en el año 1967.

Simula incorporaba nuevos conceptos de programación tales como el nacimiento del concepto objeto, clases, herencia, cantidades virtuales y multithreading, de modo que cada objeto fuese independiente de otros objetos del mismo tipo y que pudiese tener corutinas de ejecución, sin llegar a presentarse una concurrencia como tal.

Así mismo con Simula 67 tampoco existían los moldes de objetos llamados abstract class (clases abstractas), pero su implementación de objetos y paradigma hace que Simula 67 se considere el primer lenguaje utilizando el concepto Programación Orientado a Objetos.

SmallTalk y refinamiento del concepto de POO

Al mismo tiempo que existió Simula 67, Alan Kay, científico en Ciencias de la Computación que realizó trabajos de investigación importantes en el MIT (Massachusetts Institute of Technology) y en la Universidad de Utah, acuñó el término como un nuevo paradigma de programación alrededor de los años 1966 y 1967.

Al desarrollar el concepto, Alan Kay especificó que jamás tuvo en la mente crear un lenguaje similar a C u otro existente en el momento, en donde los lenguajes funcionales estaban en pleno apogeo. Su idea consistía en crear un lenguaje que permitiese una simbiosis entre humanos y computadoras, asemejando todo lo que existiese en la computadora a lo que los seres humanos experimentaban en la vida real.

A raíz de ésta hipótesis, Alan Kay desarrollo en 1972 el lenguaje de programación Smalltalk. Éste lenguaje de programación fue inspirado por Simula 67, y fue desarrollado para el Xerox Palo Alto Research (PARC), un centro de investigación.

Debido a su naturaleza en donde todo es un objeto, SmallTalk se le considera el padre de todos los lenguajes de programación orientada a objetos actuales, por ejemplo, Objective-C, Java, Python y Ruby.

SmallTalk también incorporó uno de los primeros conceptos de diseño de patrones: el MVC (Modelo – Vista – Controlador), así como los conceptos de Entidad-Relación, objeto modelo, clases abstractas, etc.

Componentes de Programación Orientada a Objetos

La programación orientada a objetos requiere el intercambio de mensajes entre los objetos, para funcionar en forma natural y más semejante a la existente en la vida real, uno de los objetivos de la POO desde la formulación de su concepto.

Los componentes fundamentales de la POO son los siguientes:

Atributos: Son variables que conforman la estructura física del objeto, que pueden ser de diferentes tipos, por ejemplo boolean, integer, string, array o incluso un objeto anidado. Se pueden declarar con valores por defecto (llamado constructor) o bien sin inicializarse, dejando al usuario la responsabilidad de inicializar sus valores.

Métodos: Son todas las funciones y procedimientos que puede realizar el objeto. Éstos métodos son propios del objeto y solo pueden ser utilizados una vez que el usuario declara el objeto.

Para acceder a un atributo o método dentro de un objeto, se puede hacer por medio del operador punto (.) (solo si el atributo es público en algunos lenguajes de programación como Java), y dependiendo del lenguaje de programación, se puede encapsular haciendo su alcance privado y solo accesible al valor por medio de un método interno hacia el atributo del objeto, asemejando aún más la clase a un objeto de la vida real.

programacion orientada a objetos

Ventajas de la Programación Orientada a Objetos

Algunas de las ventajas de la programación orientada a objetos son las siguientes:

  • Se pueden reutilizar, es decir, al declarar el objeto se realiza una nueva instancia de la clase objeto.
  • Al tener el objeto declarado, se puede acceder y modificar el objeto deseado en forma directa, sin modificar los demás.
  • El encapsulamiento permite que los atributos de los objetos sean accesibles solo a través de sus métodos y no en forma directa.
  • Facilita la creación de una interfaz gráfica de usuario o GUI.
  • Cada objeto es una entidad, que puede enviarse a una base de datos para almacenarse, o bien recuperar su valor desde una operación con BD.

Desventajas

  • Se requiere de un código limpio para entender cómo funciona el objeto, cualquier fallo en la encapsulación o ruptura en el paradigma, puede traer al desarrollador graves problemas para seguir el patrón de diseño.
  • Los atributos privados podrían estar fuera del alacance de la comunicación entre otros objetos, si no se especifica directamente en el mensaje (o su valor).
  • Una mala documentación, aumenta la dificultad de saber cómo funciona el objeto, ya que los métodos utilizados no proporcionan información de sus variables.
  • No es tan trivial de entender para programadores novatos. Requiere de conocimiento sobre cómo funcionan las clases, a diferencia de los paradigmas imperativos.
programacion orientada a objetos

¿Porqué utilizar la POO?

La Programación Orientada a Objetos permite al desarrollador interpretar todo como si se tratase de un objeto con atributos y métodos. Esto facilita en gran medida la generación de código, evitando código repetitivo gracias a las instancias hacia las clases que la POO nos permite.

Cada instancia es independiente, así que podremos declarar dos objetos de la clase perro llamados Ruffo y Firulais, y éstos pueden tener diferentes valores y ejecutar sus métodos a nuestra conveniencia, sin alterar los valores del otro.

La herencia de clases, también permite que los objetos padre hereden características a sus hijos, es decir podemos declarar como uno de los atributos del objeto a otro objeto, heredando los métodos del padre hacia el hijo, a esto se le conoce como extend en algunos lenguajes de programación como Java y Kotlin.

Al hacer extend, es posible sobreescribir los métodos existentes del padre en el hijo utilizando Override.

También te recomendamos aprender más de acceso a los objetos a través de DAO en Kotlin, para aprender a acceder a las entidades de éste lenguaje de programación para Android.