Programación Orientada a Objetos (POO)

Introducción

La programación orientada a objetos (Object Oriented Programming, OOP) es un modelo de programación informática que organiza el diseño de software en torno a datos u objetos, en lugar de funciones y lógica. Un objeto se puede definir como un campo de datos que tiene atributos y comportamiento únicos.

La programación orientada a objetos se centra en los objetos que los desarrolladores quieren manipular en lugar de enfocarse en la lógica necesaria para manipularlos. Este enfoque de programación es adecuado para programas que son grandes, complejos y se actualizan o mantienen activamente.

La organización de un programa orientado a objetos también hace que el método sea beneficioso para el desarrollo colaborativo, donde los proyectos se dividen en grupos.

Los beneficios adicionales de la programación orientada a objetos incluyen la reutilización, la escalabilidad y la eficiencia del código. Incluso cuando se utilizan microservicios, los desarrolladores deben seguir aplicando los principios de la programación orientada a objetos.

El primer paso en OOP es recopilar todos los objetos que un programador desea manipular e identificar cómo se relacionan entre sí, un ejercicio que a menudo se conoce como modelado de datos.

Los ejemplos de un objeto pueden variar desde entidades físicas, como un ser humano que se describe por propiedades como nombre y dirección, hasta pequeños programas informáticos, como widgets.

Una vez que se conoce un objeto, se etiqueta con una clase de objetos que define el tipo de datos que contiene y cualquier secuencia lógica que pueda manipularlo. Cada secuencia lógica distinta se conoce como método. Los objetos pueden comunicarse con interfaces bien definidas llamadas mensajes.

 

Historia

La terminología "objetos" y "orientada" en el sentido moderno de la programación orientada a objetos hizo su primera aparición en el MIT a finales del 1950s y principio de 1960s. Ya en 1960 en el entorno del grupo de inteligencia artificial, el término "objeto" era usado para referirse a elementos (LISP atomos) con propiedades (atributos).

Otro ejemplo temprano de programación orientada en el MIT fue Sketchpad creado por Ivan Sutherland en 1960–1961; en el glosario del informe técnico de 1963, Sutherland define la noción de "objeto" y de "instancia".

Simula introdujo conceptos importantes que hoy en día son una parte esencial de la programación orientada a objetos, como clases, objetos, herencia y dynamic binding.

Más recientemente ha surgido una serie de lenguajes que están principalmente orientados a objetos pero que también son compatibles con la programación procedural. Dos ejemplos de estos lenguajes son Python y Ruby. Probablemente los lenguajes orientados a objetos recientes con más importancia comercialmente son Java, desarrollado por Sun Microsystems y C# junto a Visual Basic.NET (VB.NET), diseñado por Microsoft's.

 

Conceptos fundamentales

·       Clase: Es un modelo o plantilla para crear objetos. Es una estructura fundamental en la Programación Orientada a Objetos (OOP) que define el comportamiento y las propiedades comunes que tendrán los objetos creados a partir de ella. En términos simples, una clase describe qué datos (atributos) y qué operaciones (métodos) pueden realizar los objetos de esa clase.

·     Objeto: Es una instancia concreta o específica de una clase. En el paradigma de Programación Orientada a Objetos (OOP), los objetos son entidades que tienen un estado (representado por sus atributos) y un comportamiento (definido por sus métodos). Se crean a partir de una clase, que actúa como una plantilla o modelo para todos los objetos de ese tipo.

·    Método: Es una función o procedimiento asociado a una clase que define el comportamiento de los objetos creados a partir de esa clase. Los métodos representan las acciones que los objetos pueden realizar o los cálculos que pueden realizar sobre sus datos internos. Cada objeto de una clase puede llamar a los métodos definidos en esa clase para realizar diversas operaciones.

·   Evento: Es una acción o suceso que ocurre en el sistema y que puede ser detectado, procesado y respondido por los objetos del programa. Los eventos son fundamentales para la interacción entre los componentes de software y para la creación de aplicaciones interactivas y responsivas.

·       Atributos: Se refiere a una característica o propiedad que describe el estado de un objeto. Los atributos representan datos asociados a un objeto y son fundamentales para modelar el estado y el comportamiento de las entidades en un sistema de software.

 

Principios de OOP

La programación orientada a objetos se basa en los siguientes principios:

·       Abstracción: Es el proceso de enfocarse en los aspectos esenciales de un objeto y ocultar los detalles complejos de implementación que no son relevantes para la utilización del objeto. Es uno de los principios fundamentales de la OOP y permite modelar entidades del mundo real como objetos en un sistema de software.

·  Herencia: Permite a una clase (llamada clase derivada o subclase) heredar características y comportamientos de otra clase (llamada clase base o superclase). Esto facilita la reutilización del código y la organización jerárquica de las clases, donde las subclases pueden extender y especializar la funcionalidad de la superclase, al mismo tiempo que pueden agregar nuevos atributos y métodos propios. La herencia promueve la estructura y la cohesión del código al agrupar objetos relacionados bajo una misma jerarquía de clases.

·    Encapsulamiento: Combina datos y métodos en una estructura llamada clase. Este concepto permite ocultar el estado interno de un objeto y restringir el acceso directo a sus datos, proporcionando métodos públicos para interactuar con ellos de manera controlada. De esta manera, se promueve la seguridad, al evitar modificaciones no autorizadas, y la modularidad, al facilitar cambios en la implementación interna sin afectar otras partes del código que utilizan el objeto. El encapsulamiento ayuda a mantener el código más organizado y reduce la complejidad al separar la implementación del comportamiento externo del objeto.

Polimorfismo: Se refiere a la capacidad de los objetos de una misma jerarquía de clases para responder de manera diferente a la misma invocación de método. Esto significa que objetos de diferentes clases pueden implementar métodos con el mismo nombre, pero con comportamientos específicos según su propia clase. El polimorfismo permite escribir código más genérico y reutilizable, ya que un método puede actuar de manera diferente según el tipo de objeto que lo invoque, facilitando la extensibilidad y la flexibilidad del sistema. Es una característica fundamental que promueve el diseño modular y la claridad del código en aplicaciones orientadas a objetos.

Comentarios

Entradas populares