Fundamentos de POO en C++ y Java: Conceptos, Diferencias y Ejecución
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 6,24 KB
Conceptos Fundamentales de Programación Orientada a Objetos (POO)
C++: Principios y Características
Declaraciones Clave (Verdadero/Falso)
- V: La clase representa la abstracción de la realidad que se desea representar.
- V: Un objeto en POO es equivalente a una variable en programación procedural.
- F: En POO, la expresión
obj.valorno representa la base del encapsulamiento (el acceso directo viola el principio). - F: En POO, los métodos de una clase deben ser privados (su accesibilidad depende del diseño).
- V: Una clase es una plantilla para crear datos (objetos).
Conceptos Esenciales de POO en C++
Herencia
Propiedad que permite la reutilización de código. Una clase puede heredar de otra clase todos o parte de sus atributos y métodos. Implica definir una clase derivada utilizando elementos de otras clases preexistentes.
Una clase abstracta es aquella clase que no cuenta con un objeto definido (no puede ser instanciada).
Polimorfismo
Es cuando, ante un mismo mensaje (llamada a método), dos clases se comportan de forma distinta.
Constructor
Es un método especial de la clase cuyo objetivo es:
- Pedir recursos al sistema para construir el objeto.
- Generar y dar valores iniciales a los atributos de un objeto al instanciar la clase.
Características del constructor:
- Tiene el mismo nombre de la clase.
- No posee valor de retorno.
- Se invoca al crear el objeto.
- Puede sobrecargarse.
- Si no se define en la clase, el compilador proporciona un constructor por defecto.
Sobrecarga (Overloading)
Consiste en realizar varias operaciones sobre un mismo método. Son métodos que tienen el mismo nombre pero que se diferencian por el número y/o tipo de los argumentos.
Control de Accesibilidad
Define cómo se puede acceder a los miembros de una clase:
- Private: Los elementos solo pueden ser accedidos por funciones miembros de la clase.
- Public: Los elementos pueden ser accedidos por funciones usuarias de la clase.
Tipos de Constructores (Ejemplos)
- Constructor por defecto:
ejemplo() { ejemplo = 1; } - Constructor por paso de parámetros:
ejemplo(int a) { ejemplo = a } - Constructor por copia:
ejemplo(const & x) { ejemplo = x.ejemplo }
Java: Características y Gestión de Memoria
Declaraciones Clave (Verdadero/Falso)
- V: Java es un lenguaje de POO multiplataforma.
- F: En el lenguaje Java existe la herencia múltiple de clases (en C++ sí).
- F: Las estructuras básicas de C++ y Java son absolutamente diferentes (comparten una sintaxis base).
- F: Las modificaciones en un
Stringquedan en el mismoString(se crea un nuevo String debido a la inmutabilidad). - F: Toda clase cuenta con el método
main(solo las clases que actúan como aplicaciones).
Gestión de Objetos y Memoria
Destructor y Recolección de Basura
Java no posee destructores explícitos como en C++, porque tiene recolección de basuras (Garbage Collector). Java gestiona automáticamente la liberación de memoria.
El sistema se ocupa automáticamente de liberar memoria de los objetos que ya han perdido la referencia (objetos que ya no tienen ningún nombre que permita acceder a ellos, por ejemplo, por haber llegado al final del bloque, por asignación de null o por reasignación de la referencia).
Clase Abstracta (Abstract)
Una clase abstracta (declarada con la palabra clave abstract) es una clase de la que no se pueden crear objetos.
Su utilidad es permitir que otras clases deriven de ella, proporcionándoles un marco o modelo que deben seguir y algunos métodos de utilidad general.
public abstract class Geometria { ... }Static
Permite declarar miembros de una clase que pertenecen a la clase misma, y no a una instancia específica.
- El comportamiento de un método
staticno depende de su instancia. - Un atributo
staticno depende de ninguna instancia.
Comparativa C++ vs. Java
Diferencias Clave
- Ejecución: Java es interpretado y C++ es compilado.
- Portabilidad: Java es portable e independiente de la máquina. C++ depende de la máquina.
- Compilación: En Java, el compilador genera un bytecode para ser interpretado por la Máquina Virtual (JVM). En C++, se genera un código de máquina para una plataforma específica.
Ejemplo de Herencia
La herencia consiste en definir una nueva clase describiendo únicamente las características que la diferencian de alguna clase previamente definida.
Ejemplo de jerarquía: Persona → Empleado → Socio → Estudiante.
Proceso de Diseño y Ejecución del Código Java
- PROGRAMA: Se crea en un editor para luego almacenarlo en el DD.
- COMPILADOR: Genera el código byte (bytecode).
- CARGADOR DE CLASES (Class Loader): Toma el código byte y lo ubica en la memoria.
- VERIFICADOR (Bytecode Verifier): Revisa si el código está bien escrito y si no viola las reglas de seguridad de Java.
- INTÉRPRETE (JVM): Lee el código byte y lo traduce a un código conocido por la máquina.