Conceptos Clave de Programación Lógica y Orientada a Objetos

Clasificado en Informática

Escrito el en español con un tamaño de 6,38 KB

Programación Lógica: Fundamentos y Conceptos Clave

La programación lógica es un paradigma de programación donde un programa es un conjunto de fórmulas para resolver un problema mediante la computación.

Características del Programa Lógico

  • Especificación: Define qué debe computarse.
  • Instrucciones: Se basan en fórmulas lógicas.
  • Modelo de Cómputo: Utiliza la inferencia lógica.
  • Variables: Son de tipo lógico.

Principios Fundamentales

  • El programador especifica qué debe computarse en lugar de cómo debe realizarse.
  • El componente lógico determina el significado del programa, mientras que el componente de control afecta su eficiencia.
  • Se basa en la lógica de predicados.
  • Proporciona las especificaciones de una solución y permite que la computadora deduzca la secuencia de acciones.

Conceptos Clave en Programación Lógica

  • Relaciones: Son un conjunto de tuplas definidas por el programador.
  • Reglas y Hechos: Conjunto de instrucciones que deben ser ciertas.
  • Unificación: Proceso mediante el cual se asignan valores a variables cuyo valor no se conoce.
  • Tipos de Datos Primitivos: Variables, constantes, enteros, reales y caracteres.
  • Tipos de Datos Estructurados: Listas u objetos.
  • Functor: Definen objetos formados por componentes.

Reglas de Unificación

  • Una variable no instanciada emparejará con cualquier objeto y, como resultado, ese objeto será señalado por la variable.
  • Una constante, átomo o entero solo emparejará consigo misma.
  • Una estructura emparejará con otra estructura con el mismo functor.

Cortes (Cut)

  • Si la primera pregunta tiene éxito y la segunda no, se hace un retroceso para probar con otro valor en el patrón.


Programación Orientada a Objetos (POO): Pilares y Aplicaciones

La Programación Orientada a Objetos (POO) es un paradigma de programación que se basa en el concepto de "objetos", los cuales pueden contener datos en forma de campos (atributos) y código en forma de procedimientos (métodos).

Conceptos Fundamentales de POO

  • Polimorfismo: Capacidad de un objeto de tomar muchas formas.
  • Herencia: Mecanismo que permite a una clase heredar propiedades y comportamientos de otra clase.

Ventajas y Características de la POO

  • Comprensión: Su funcionamiento es conceptualmente simple.
  • Flexibilidad: Permite lograr cambios automáticos y adaptabilidad.
  • Estabilidad: Contribuye a minimizar posibles fallas en el sistema.
  • Reusabilidad: Facilita la reutilización de código mediante objetos ya definidos.
  • Confiabilidad: Los sistemas basados en POO suelen ser más fiables debido a su estructura y estabilidad.

Características Clave de la POO

  • Abstracción: Oculta los detalles de implementación y muestra solo la funcionalidad esencial.
  • Libera automáticamente memoria (característica presente en muchos lenguajes POO, como Java o Python, a través de recolectores de basura).

Definiciones Esenciales en POO

  • Clase: Es una plantilla o molde para crear objetos. En muchos lenguajes, todo tipo de dato es una clase, excepto los tipos primitivos.
  • Herencia: Es el mecanismo de extensión de una clase, permitiendo la creación de jerarquías.
  • Instancias: Son representaciones concretas de una clase; es decir, los objetos creados a partir de una clase.
  • Encapsulamiento: Mecanismo que permite agrupar datos y métodos que operan sobre esos datos dentro de una unidad (objeto), controlando el acceso a ellos.
  • Clase Interna: Una clase que se anida dentro de otra clase.
  • Clase Anónima: Clases que no tienen nombre y cuya definición se coloca directamente al crear un objeto de ellas.
  • Polimorfismo: Define métodos con la misma referencia (nombre) en diferentes niveles de la jerarquía de clases (sobrescritura) o con diferentes firmas en la misma clase (sobrecarga).

Beneficios de la Herencia

  • Facilidad de modificación y mantenimiento del código.
  • Evita la duplicación de código.
  • Establece una jerarquía clara entre las clases.
  • Ayuda a evitar grandes volúmenes de código repetitivo.

Modificadores y Conceptos Avanzados (Ej. Java)

  • Static: Permite que un miembro (variable o método) pertenezca a la clase en sí, en lugar de a una instancia específica, referenciando a memoria de forma única.
  • Abstract: Las clases abstract son clases padre que no pueden ser instanciadas directamente, pero pueden ser extendidas. Sus métodos abstract deben ser implementados por las subclases concretas.
  • Final:
    • Una clase final no se puede extender.
    • Un método final no se puede anular (sobrescribir).
    • Una variable final es una constante (su valor no puede cambiar una vez asignado).

Interfaces

  • Una interfaz es una "clase" especial que se utiliza para describir el comportamiento de una subclase sin proporcionar la implementación.
  • Una clase "extiende" (implementa) una interfaz para heredar su contrato.
  • Define un conjunto de métodos, pero no sus implementaciones (antes de Java 8/9, ahora pueden tener métodos default y static).
  • Contiene datos constantes (implícitamente public static final) y métodos solo declarados (implícitamente public abstract).
  • Todos sus miembros son públicos.
  • Una clase puede implementar varias interfaces, lo que permite la herencia múltiple de comportamiento.
  • La clase que implementa una interfaz debe proporcionar la implementación para todos sus métodos abstractos o ser declarada como abstracta.

Entradas relacionadas: