Fundamentos de Lenguajes de Programación y Programación Orientada a Objetos

Clasificado en Informática

Escrito el en español con un tamaño de 5,9 KB

Tipos de Lenguajes de Programación

Los lenguajes de programación se pueden clasificar de diversas maneras:

  • Imperativos: Se centran en la secuencia de instrucciones para lograr un resultado.
  • Declarativos: Describen el resultado deseado sin especificar el flujo de control.
  • Orientados a Objetos (OO): Organizan el código alrededor de objetos que manipulan datos.

Clasificación por Ejecución

  • Interpretados: El código fuente es analizado y ejecutado directamente, sin generar código objeto intermedio. Suelen ser más lentos.
  • Compilados: El código fuente se traduce a código máquina o ensamblador antes de la ejecución.
  • Ensamblados: Traducidos a lenguaje ensamblador específico de cada máquina.
  • Preprocesados: Pasan por una etapa de traducción a un nivel intermedio antes de llegar al código de bajo nivel.
  • Metalenguajes: Permiten definir la sintaxis de otros lenguajes, como las marcas en XML o HTML.

Elementos Clave de la Programación Orientada a Objetos (POO)

  • Abstracción: Se enfoca en los datos relevantes, utilizando la información a partir de la definición de una clase.
  • Encapsulación: Agrupa datos y métodos dentro de un objeto, protegiendo los datos mediante el acceso controlado (atributos privados).
  • Herencia: Permite que una clase (derivada) herede atributos y métodos de otra clase (base), además de sus propios miembros.
  • Polimorfismo: Facilita que funciones con el mismo nombre se diferencien por el número o tipo de sus parámetros.
  • Sobrecarga de Operadores: Permite redefinir el comportamiento de los operadores para que funcionen con objetos.

Conceptos Adicionales en POO

  • Método: Una función definida dentro de una clase. Suelen definirse en un archivo `.cpp` con el mismo nombre que la clase, mientras que las definiciones y prototipos se encuentran en un archivo `.h`.
  • Objeto: Una instancia de una clase. Al crearlo, se invoca automáticamente al constructor.
  • Operador de Ámbito (::): Se utiliza para especificar el ámbito de un miembro de una clase.
  • Constructor: Método especial para inicializar los atributos de un objeto y reservar memoria dinámica.
  • Destructor: Método especial para liberar la memoria dinámica asignada por el objeto.
  • Puntero this: Un puntero implícito que referencia al objeto actual desde el cual se invoca un método.
  • Sobrecarga de Operador ++: Para sobrecargar el operador de incremento (++v o v++), se crean dos funciones: `v.operator()` y `v.operator(int)`. El parámetro `int` en la segunda función se denomina "parámetro fantasma" ya que no se utiliza.
  • Función Amiga (Friend Function): Una función externa a la clase que tiene acceso a sus miembros privados, estableciendo una conexión especial.
  • Función en Línea (Inline Function): El código de la función se inserta directamente en el punto de llamada, evitando la sobrecarga de una llamada a función. Suelen definirse en la cabecera.

Ventajas y Desventajas de las Funciones en Línea

  • Ventajas: Pueden ser métodos, funciones amigas, sobrecargarse y sus argumentos siguen las reglas de paso de parámetros.
  • Inconveniente: Pueden aumentar el tamaño del programa al sustituir el código en cada llamada.

Tipos de Métodos en Clases

  • Método Constante: Proporciona protección adicional contra modificaciones en los atributos del objeto. Ejemplo: int get_day() const;
  • Administradores: Métodos que inicializan atributos, similar a los constructores.
  • Modificadores: Métodos que alteran el estado o los datos de un objeto.
  • Inspectores: Métodos que devuelven información sobre el estado del objeto sin modificarlo.

Relaciones entre Clases

  • Composición: Una clase contiene objetos de otra clase como miembros.
  • Herencia: Una clase (derivada) hereda miembros de otra clase (base).

Criterios de Visibilidad en Herencia

  • Si un miembro es privado en la clase base, es inaccesible para la clase derivada.
  • En los demás casos, la visibilidad se rige por el modificador más restrictivo entre la clase base y la clase derivada.

Ejemplos de Lenguajes de Programación

  • C: Imperativo, compilado, de propósito general (UNIX).
  • Pascal: Imperativo, compilado, de propósito general (didáctico).
  • Fortran: Imperativo, compilado, de propósito general (científico y técnico).
  • C++: Orientado a Objetos, compilado, de propósito general.
  • Cobol: Imperativo, interpretado, enfocado en gestión.
  • Python: Orientado a Objetos, interpretado, de propósito general.
  • Perl: Orientado a Objetos, interpretado, para administración web y de sistemas.
  • PHP: Orientado a Objetos, interpretado, para desarrollo web.
  • Java: Orientado a Objetos, mayormente compilado a bytecode (80%) y parcialmente interpretado (20%), utilizado para aplicaciones de internet. Inspirado en Smalltalk y C++.
  • Delphi: Herramienta de programación visual que utiliza Pascal con características de POO.

Entradas relacionadas: