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
ov++
), 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.