Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Prompt engineering para programación, Unidad 9 — Prompt engineering para distintos lenguajes, 9.2 — Paradigmas de programación ·

Orientado a objetos

Orientado a objetos

Introducción

El paradigma orientado a objetos (OO) es una forma de programación que organiza el código alrededor de "objetos" y usa conceptos como clases, herencia, polimorfismo y encapsulamiento. Es uno de los paradigmas más populares en la industria debido a su capacidad para modelar problemas complejos de manera modular y reutilizable.

Cuando se aplica el paradigma orientado a objetos con IA, es crucial diseñar prompts adecuados que guíen a las LLMs (Sistemas de Modelos de Lenguaje Generativos) en crear o refactorizar código OO. En esta unidad, aprenderemos cómo utilizar correctamente los paradigmas orientados a objetos para optimizar la generación y el mantenimiento del código utilizando IA.

Explicación principal

Clases y Objetos

La idea fundamental detrás del paradigma orientado a objetos es representar entidades en un programa como objetos. Un objeto es una instancia de una clase, que define los atributos (propiedades) y métodos (funciones) comunes a ese tipo de objeto.

Ejemplo:

class Coche:
    def __init__(self, marca, modelo):
        self.marca = marca
        self.modelo = modelo

    def mostrar_informacion(self):
        return f"Este es un {self.marca} {self.modelo}"

mi_coche = Coche("Toyota", "Corolla")
print(mi_coche.mostrar_informacion())  # Este es un Toyota Corolla

Herencia

La herencia permite que una clase herede propiedades y métodos de otra clase. Esto promueve la reutilización del código y facilita la creación de jerarquías de clases.

Ejemplo:

class Vehiculo:
    def __init__(self, marca):
        self.marca = marca

    def mostrar_informacion(self):
        return f"Este es un {self.marca}"

class Coche(Vehiculo):
    def __init__(self, marca, modelo):
        super().__init__(marca)
        self.modelo = modelo

mi_coche = Coche("Toyota", "Corolla")
print(mi_coche.mostrar_informacion())  # Este es un Toyota

Polimorfismo

El polimorfismo permite que los objetos de diferentes clases se traten como si fueran del mismo tipo. Esto se logra a través de la sobrescritura de métodos.

Ejemplo:

class Vehiculo:
    def mostrar_informacion(self):
        return "Este es un vehículo"

class Coche(Vehiculo):
    def mostrar_informacion(self):
        return f"Este es un {self.marca} {self.modelo}"

mi_coche = Coche("Toyota", "Corolla")
print(mi_coche.mostrar_informacion())  # Este es un Toyota Corolla
otro_vehiculo = Vehiculo("Vehículo Anónimo")
print(otro_vehiculo.mostrar_informacion())  # Este es un vehículo

Encapsulamiento

El encapsulamiento implica ocultar los detalles internos de la implementación y exponer solo las partes del objeto que son necesarias para ser utilizadas por otros objetos. En Python, esto se logra con el uso de _ (un guión bajo) antes del nombre de un atributo o método.

Ejemplo:

class Coche:
    def __init__(self, marca, modelo):
        self._marca = marca  # Atributo encapsulado
        self.modelo = modelo

    def mostrar_informacion(self):
        return f"Este es un {self._marca} {self.modelo}"

mi_coche = Coche("Toyota", "Corolla")
print(mi_coche.mostrar_informacion())  # Este es un Toyota Corolla
# print(mi_coche._marca)  # Esto generaría un aviso de encapsulamiento en IDEs con soporte

Errores típicos / trampas

  1. No entender la jerarquía de clases: Las LLMs pueden generar códigos que no reflejan una relación heredera adecuada, lo que puede llevar a comportamientos inesperados.
  1. Ignorar el encapsulamiento: La IA podría exponer información privada o hacer modificaciones indeseadas en atributos de la clase, afectando la integridad del objeto.
  1. No respetar la cohesión y acoplamiento: Los modelos pueden generar código con alto acoplamiento o baja cohesión, lo que dificulta el mantenimiento y la escalabilidad del software.

Checklist accionable

  1. Usa nombres de clases descriptivos para evitar confusiones sobre las responsabilidades de cada clase.
  2. Documenta herencias explícitamente en los prompts, indicando cuáles clases extenden a otras.
  3. Refactoriza el código manualmente antes y después del uso de IA para asegurar que se mantengan las buenas prácticas OO.
  4. Especifica métodos encapsulados adecuadamente al solicitarlos en los prompts, indicando que deben usarse con precaución.
  5. Verifica la cohesión y acoplamiento del código generado antes de incorporarlo en el proyecto.

Cierre

Siguientes pasos

  • Aprende a identificar las características únicas de cada paradigma para mejorar la precisión de los prompts.
  • Practica con diversos ejemplos de problemas de programación para familiarizarte con la generación y refactorización de código OO.
  • Mantén un registro de los prompts utilizados para que puedas revisar y optimizarlos a lo largo del tiempo.

Siguiendo estos pasos, podrás aprovechar al máximo el poder del paradigma orientado a objetos en combinación con la IA para escribir software más modular, reutilizable y mantenido.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).