Fundamentos de programación en Java: estructura, excepciones, E/S y herencia
Resumen
El documento repasa los fundamentos de Java: el proceso de compilación a bytecode, el uso de referencias, el manejo de excepciones, la entrada y salida de datos, la herencia y las clases abstractas. También presenta interfaces, enumeraciones, expresiones regulares, colecciones y las bases de las interfaces gráficas con AWT y Swing.
Puntos clave
- Java compila el código fuente a bytecode portable, que después se interpreta para producir el código objeto final.
- En Java, los tipos primitivos se pasan por valor y los objetos por referencia.
- El manejo de excepciones usa los bloques try, catch, finally y la cláusula throws.
- JRE contiene la máquina virtual y las clases necesarias para ejecutar aplicaciones; SDK incluye las herramientas de compilación y también el JRE.
- Java no admite herencia múltiple de clases, pero una clase puede implementar varias interfaces.
- Las clases abstractas no se pueden instanciar y son obligatorias si contienen al menos un método abstracto.
Fundamentos de Programación Java
Java: El proceso de desarrollo en Java implica la transformación del código fuente a un estado compilado (aproximadamente 80% del proceso), generando bytecode, que es portable. Posteriormente, este bytecode es interpretado (aproximadamente 20% del proceso) para producir el código objeto final.
Conceptos Clave de Java
- Referencias: En C++, se habla de construcción; en Java, se trabaja con referencias. Por ejemplo,
Video v2 = v1;crea una referencia y copia la referencia de v1 a v2. - Bucles `foreach`: La sintaxis
for(int i:nums)asigna secuencialmente cada valor de `nums` a la variable `i`. - JRE (Java Runtime Environment): Incluye la máquina virtual y las clases necesarias para ejecutar aplicaciones Java.
- SDK (Software Development Kit): Contiene las herramientas para compilar código Java y también incluye el JRE.
- Modificadores:
- `final`: Indica inalterabilidad. En atributos, se comporta como una constante; en parámetros, limita a solo lectura; en métodos, previene la redefinición.
- `static`: Define un miembro como global a la clase, compartido por todos los objetos de esa clase.
- Paquetes: Sirven para organizar clases y almacenar los archivos `.class` que contienen el bytecode. Permiten la creación de subpaquetes, y se utiliza `import nombre_paquete.*` para importar todas las clases de un paquete o `import nombre_paquete.NombreClase` para una clase específica.
- Arrays:
- Siempre son dinámicos y se manejan mediante referencias. Son considerados objetos.
- La declaración
int array[];define una referencia. La asignaciónarray = new int[5];reserva memoria. - Para arrays de objetos:
Clase obj[];crea referencias.obj = new Clase[tam];crea referencias a objetos en el array.obj[i] = new Clase();instancia cada objeto.
- Métodos: A diferencia de C, donde se decidía explícitamente el paso por valor o referencia, en Java los tipos primitivos se pasan por valor y los objetos por referencia.
Manejo de Excepciones
El manejo de excepciones se realiza mediante bloques:
- `try`: Contiene el código que podría generar una excepción.
- `catch`: Captura y maneja la excepción. Puede haber múltiples bloques `catch` para diferentes tipos de excepciones.
- `finally`: (Opcional) Código que se ejecuta siempre, independientemente de si ocurrió una excepción o no.
- `throws`: Se utiliza para indicar que un método puede lanzar una excepción sin controlarla internamente (ej.
throws IOException).
Entrada y Salida de Datos
- Datos Binarios: Se manejan con
InputStreamyOutputStream. - Datos de Texto: Se utilizan
ReaderyWriter. - Salida de Datos:
PrintStreames comúnmente usado. - Entrada/Salida de Ficheros:
- Binarios:
FileInputStream,FileOutputStream. - Texto:
FileReader,FileWriter.
- Binarios:
- Generación de Números Aleatorios: Se usa
(int) Math.random()*101para obtener un entero entre 0 y 100. - Modos de Acceso:
public,package(default),protected,private. - Entrada de Usuario: Se utiliza
Scanner variable = new Scanner(System.in);.
Herencia y Clases Abstractas
- Herencia: Similar a C++, pero Java no soporta herencia múltiple de clases.
- Clase Abstracta: No se pueden instanciar directamente. Son obligatorias si contienen al menos un método abstracto (declarado pero sin implementación, que debe ser provista por las clases derivadas).
Interfaces y Enumeraciones
- Interfaz: Define un contrato con métodos abstractos públicos por defecto (no `package`). Puede contener constantes `static final`. Una clase implementa una interfaz usando la palabra clave `implements`. No se pueden crear objetos de una interfaz, solo referencias. Permite la implementación múltiple de interfaces y puede heredar de otras interfaces.
- Enumeración (`enum`): Los objetos se crean al referenciar sus valores. Ejemplo:
enum Asignaturas{ADA,PLE,SIMR};. Se puede iterar sobre ellos:for(Asig a:Asig.values()).
Patrones y Colecciones
- Patrones de Expresiones Regulares: Se usan las clases `Pattern` y `Matcher`. Ejemplo:
Pattern p = Pattern.compile("[Hh][Oo][Ll][Aa]"); Matcher m = p.matcher(palabra); if(m.matches()){ return true; } else { return false; }. - Colecciones:
- `ArrayList`: Similar a un array de objetos pero dinámico, con índices asociados a los objetos. Ejemplo:
ArrayList primos = new ArrayList(); primos.add(j); System.out.println(primos.toString());. - `Hashtable`: Asocia objetos a palabras clave (claves). Ejemplo:
Hashtable tabla = new Hashtable(); tabla.put(clave, descrip);.
- `ArrayList`: Similar a un array de objetos pero dinámico, con índices asociados a los objetos. Ejemplo:
Interfaces Gráficas y Herramientas
- AWT y Swing: Conjuntos de librerías con componentes gráficos para la interacción con el usuario. AWT utiliza herramientas nativas, lo que puede generar inconsistencias visuales entre plataformas. Swing es una extensión de AWT, ofreciendo mejor presentación y adaptabilidad a diferentes sistemas operativos.
- Ant: Herramienta para automatizar tareas repetitivas como compilar, ensamblar y ejecutar código. Es utilizado por la mayoría de los Entornos de Desarrollo Integrado (IDE).
- Eventos: Un método de objeto que se dispara ante una acción específica. El objeto"escuch" el evento en tiempo de ejecución.
- `initComponents()`: Método generado por el IDE al añadir o modificar componentes gráficos (como en `JFrame`). No se recomienda modificar su código directamente.
- `LayoutManager`: Gestiona la disposición de los componentes gráficos según sus propiedades y formato (ej. `GroupLayout`).
- Ventajas: Simplifica la creación de interfaces, facilita la adición/eliminación de componentes y mejora la portabilidad al ajustar automáticamente la interfaz.
- Desventajas: Requiere práctica y puede resultar en código de interfaz voluminoso.
- `Runnable()`: Interfaz que debe contener un método `run()` para la ejecución de programas o hilos.
Descargar
PDF Word HTMLPreguntas frecuentes
¿Qué diferencia hay entre JRE y SDK en Java?
El JRE (Java Runtime Environment) incluye la máquina virtual y las clases necesarias para ejecutar aplicaciones Java. El SDK (Software Development Kit) contiene las herramientas para compilar código Java y también incluye el JRE.
¿Cómo se pasan los parámetros en los métodos de Java?
Los tipos primitivos se pasan por valor y los objetos por referencia. A diferencia de C, Java no requiere decidir explícitamente el paso por valor o por referencia.
¿Para qué sirve la cláusula throws?
Sirve para indicar que un método puede lanzar una excepción sin controlarla internamente, por ejemplo throws IOException.
Ponte a prueba
Tarjetas de repaso
Pulsa una tarjeta para ver la respuesta.
Test
Preguntas generadas con IA a partir del documento: comprueba las respuestas con el texto.