├── LICENSE ├── Librerias ├── Readme.md └── SWING │ ├── 00gui.java │ └── Readme.md ├── README.md ├── Unidad1 ├── Ejemplos │ ├── README.md │ └── SysProperties.java ├── EjerciciosResueltos │ ├── Aleatorio.java │ ├── Argumentos.java │ ├── Ejercicio23.java │ ├── FormulaMatematica.java │ ├── Scanner1.java │ └── Unicode.java ├── README.md ├── Repaso1.md ├── p1.md └── practicas │ └── p1.md ├── Unidad2 ├── README.md ├── ejemplos │ ├── Readme.md │ └── colecciones │ │ └── Readme.md └── examen │ ├── Autocajero.java │ ├── Automarcador.java │ ├── Examen_T2_T3.pdf │ ├── ObjetosSencillos.jar │ ├── correccion.md │ ├── javadoc │ ├── allclasses-frame.html │ ├── allclasses-noframe.html │ ├── bpc │ │ └── daw │ │ │ └── objetos │ │ │ ├── Caja.html │ │ │ ├── DepositoAgua.html │ │ │ ├── MarcadorBaloncesto.html │ │ │ ├── MarcadorMejorado.html │ │ │ ├── TarjetaCredito.html │ │ │ ├── class-use │ │ │ ├── Caja.html │ │ │ ├── DepositoAgua.html │ │ │ ├── MarcadorBaloncesto.html │ │ │ ├── MarcadorMejorado.html │ │ │ └── TarjetaCredito.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ ├── package-tree.html │ │ │ └── package-use.html │ ├── constant-values.html │ ├── deprecated-list.html │ ├── help-doc.html │ ├── index-files │ │ ├── index-1.html │ │ ├── index-10.html │ │ ├── index-11.html │ │ ├── index-12.html │ │ ├── index-2.html │ │ ├── index-3.html │ │ ├── index-4.html │ │ ├── index-5.html │ │ ├── index-6.html │ │ ├── index-7.html │ │ ├── index-8.html │ │ └── index-9.html │ ├── index.html │ ├── overview-tree.html │ ├── package-list │ ├── script.js │ └── stylesheet.css │ └── recuperacion │ ├── Ejercicio01.java │ ├── Ejercicio02.java │ ├── Ejercicio03.md │ ├── Ejercicio04.java │ ├── RecuperaT2.md │ └── estilos.css ├── Unidad3 ├── Ejemplos │ ├── Ej01While.java │ ├── Ej02TriBucle.java │ ├── Ej03Bucle.java │ ├── Ej04Arrays.java │ ├── Ej05BucleDoble.java │ └── Ej06Matriz.java ├── Ejercicios │ ├── README.md │ ├── ejercicio01.java │ └── repaso.md └── README.md ├── Unidad4 ├── Ejemplos │ ├── AnimalAcuatico.java │ ├── Calculadora.java │ ├── Circulo.java │ ├── CuentaBancaria.java │ ├── Estudiante.java │ ├── Figura.java │ ├── MedidorAmbiental.java │ ├── Nomina.java │ ├── Persona.java │ ├── README.md │ └── Satelite.java ├── Ejercicios │ ├── DNI.java │ ├── Oficina.java │ ├── Persona.java │ ├── README.md │ └── ejercicios.md ├── Practicas │ ├── README.md │ └── p1 │ │ ├── FichaDomino.java │ │ ├── Incidencia.java │ │ └── T4p01.java ├── Prueba │ ├── Satelite.java │ └── Test.java └── README.md ├── Unidad5 ├── Actividades │ ├── Readme.md │ └── enunciados.md ├── Ejemplos │ ├── Readme.md │ ├── ejemplo01 │ │ ├── Animal.java │ │ ├── Perro.java │ │ └── Readme.md │ ├── ejemplo02 │ │ ├── Celula.java │ │ └── Readme.md │ ├── ejemplo03 │ │ ├── AceitunaException.java │ │ ├── Readme.md │ │ └── RecogidaAceituna.java │ ├── ejemplo04 │ │ ├── AvionBombardero.java │ │ ├── AvionCaza.java │ │ ├── AvionDeCombate.java │ │ ├── Readme.md │ │ └── SimuladorAviones.java │ ├── ejemplo05 │ │ ├── EjemploInsecto.java │ │ ├── Insecto.java │ │ └── Readme.md │ ├── ejemplo06 │ │ ├── ListaObjetos.java │ │ └── readme.md │ ├── ejemplo07 │ │ ├── Submarino.java │ │ └── readme.md │ └── ejemplo08 │ │ ├── Abeja.java │ │ ├── ComparandoAbejas.java │ │ └── Readme.md ├── Practicas │ ├── Readme.md │ ├── practica01 │ │ ├── Coche.java │ │ ├── Principal.java │ │ ├── Procesador.java │ │ ├── ProcesadorException.java │ │ └── readme.md │ └── practica02 │ │ ├── Diagrama.png │ │ ├── EmpresaPaqueteria.java │ │ ├── Paquete.java │ │ ├── Principal.java │ │ ├── Transportista.java │ │ ├── TrasportistaOrdenado.java │ │ └── readme.md └── README.md ├── cositas.md └── queridos-alumnos.md /LICENSE: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | -------------------------------------------------------------------------------- /Librerias/Readme.md: -------------------------------------------------------------------------------- 1 | ### Librerias 2 | -------------------------------------------------------------------------------- /Librerias/SWING/00gui.java: -------------------------------------------------------------------------------- 1 | 2 | import javax.swing.*; 3 | import java.awt.*; 4 | /** 5 | * 6 | * @author Fran 7 | */ 8 | public class 00gui { 9 | 10 | public static void main(String args[]) { 11 | 12 | JFrame frame = new JFrame("Mi primera GUI"); 13 | frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 14 | frame.setSize(300, 300); 15 | 16 | frame.setLayout(new FlowLayout()); 17 | JLabel etiqueta = new JLabel("Nombre: "); 18 | JTextField texto = new JTextField(20); 19 | JButton boton = new JButton("Saludar"); 20 | frame.add(etiqueta); 21 | frame.add(texto); 22 | frame.add(boton); 23 | 24 | frame.setVisible(true); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Librerias/SWING/Readme.md: -------------------------------------------------------------------------------- 1 | # Librería SWING 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # :computer: Programación 2 | Materiales para el módulo Programación correspondiente al ciclo formativo de grado superior Desarrollo de Aplicaciones Multiplatarorma 3 | 4 | ### :blue_book: Unidades 5 | 6 | * [Unidad1](Unidad1) 7 | * [Unidad2](Unidad2) 8 | * [Unidad3](Unidad3) 9 | * [Unidad4](Unidad4) 10 | 11 | ### :space_invader: Alumn@s 12 | 13 | Listado de [alumn@s](queridos-alumnos.md) con sus respectivos perfiles en Github para el curso 22/23. 14 | 15 | ### :link: Recursos 16 | 17 | * [Cositas interesantes](cositas.md) 18 | 19 | ### Licencia 20 | 21 | Free Software, Hell Yeah! 22 | -------------------------------------------------------------------------------- /Unidad1/Ejemplos/README.md: -------------------------------------------------------------------------------- 1 | ### Ejemplos para el tema 1 2 | 3 | 4 | * **SysProperties** - Uso del objeto System para mostrar propiedades del sistema. 5 | -------------------------------------------------------------------------------- /Unidad1/Ejemplos/SysProperties.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @author Fran 4 | */ 5 | public class SysProperties { 6 | 7 | public static void main(String[] args) { 8 | 9 | String nombreSO = "os.name"; 10 | String versionSO = "os.version"; 11 | String arquitecturaSO = "os.arch"; 12 | System.out.println("\nInformación sobre el SO: "); 13 | System.out.println("\nNombre del SO: " 14 | + System.getProperty(nombreSO)); 15 | System.out.println("Version del SO: " 16 | + System.getProperty(versionSO)); 17 | System.out.println("Arquitectura del SO: " 18 | + System.getProperty(arquitecturaSO)); 19 | 20 | } // main 21 | } // clase 22 | -------------------------------------------------------------------------------- /Unidad1/EjerciciosResueltos/Aleatorio.java: -------------------------------------------------------------------------------- 1 | package hl.t2.aleatorio; 2 | 3 | /** 4 | * 5 | * @author Fran 6 | */ 7 | public class Aleatorio { 8 | 9 | public static void main(String[] args) { 10 | 11 | int num, nMenor, nMayor; 12 | 13 | nMenor = -100; 14 | nMayor = 100; 15 | 16 | num = (int) (Math.random() * ( nMayor + 1 - nMenor)) + nMenor; 17 | 18 | System.out.println( 19 | "Número entre " + nMenor + " y " + nMayor + " : " + num 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Unidad1/EjerciciosResueltos/Argumentos.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @author Fran 4 | */ 5 | public class Argumentos { 6 | 7 | public static void main(String[] args) { 8 | 9 | // OjO IndexOutOfBoundException 10 | 11 | if (args.length == 2){ 12 | 13 | System.out.println("Argumento 1: " + args[0]); 14 | System.out.println("Argumento 2: " + args[1]); 15 | 16 | int n1 = Integer.parseInt(args[0]); 17 | int n2 = Integer.parseInt(args[1]); 18 | 19 | int suma = n1 + n2; 20 | 21 | System.out.println("La suma del valor de los argumentos es: " + suma); 22 | 23 | } else { 24 | 25 | System.out.println("El número de argumentos tiene que ser igual a 2"); 26 | 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Unidad1/EjerciciosResueltos/Ejercicio23.java: -------------------------------------------------------------------------------- 1 | package ejercicio23; 2 | 3 | import java.util.Scanner; 4 | 5 | 6 | public class Ejercicio23 { 7 | 8 | public static void main(String[] args) { 9 | 10 | final double APROBADO = 5.0; 11 | final String BACKGROUND_GREEN = "\u001B[32m"; 12 | final String ANSI_RESET = "\u001B[0m"; 13 | 14 | double n1, n2, n3; 15 | double media; 16 | boolean esta_aprobado; 17 | 18 | System.out.println(BACKGROUND_GREEN + "============================" + ANSI_RESET); 19 | System.out.println(BACKGROUND_GREEN + "= Ejercicio 23 =" + ANSI_RESET); 20 | System.out.println(BACKGROUND_GREEN + "============================" + ANSI_RESET); 21 | 22 | System.out.println("Introduce la nota del primer ejercicio"); 23 | n1 = new Scanner(System.in).nextDouble(); 24 | System.out.println("Introduce la nota del segundo ejercicio"); 25 | n2 = new Scanner(System.in).nextDouble(); 26 | System.out.println("Introduce la nota del tercer ejercicio"); 27 | n3 = new Scanner(System.in).nextDouble(); 28 | 29 | media = (n1 + n2 + n3) / 3; 30 | esta_aprobado = media >= APROBADO; 31 | 32 | /* 33 | El uso de la estructura condicional es opcional 34 | Lo veremos al final del tema en profundidad 35 | */ 36 | if (media >= APROBADO) { 37 | System.out.println("El alumno esta aprobado"); 38 | } 39 | else { 40 | 41 | System.out.println("El alumno esta kateado"); 42 | } 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /Unidad1/EjerciciosResueltos/FormulaMatematica.java: -------------------------------------------------------------------------------- 1 | 2 | package hl.tema1.formulamatematica; 3 | 4 | 5 | public class FormulaMatematica { 6 | 7 | public static void main(String[] args) { 8 | 9 | double numerador, denominador, resultado, base = 0; 10 | int x; 11 | 12 | x=0; 13 | numerador = 3 * Math.pow(x/2,3); 14 | denominador = Math.pow(x, 2) - x + 3; 15 | resultado = numerador / denominador; 16 | 17 | System.out.println("f(0) = "+ resultado); 18 | 19 | x=1; 20 | numerador = 3 * Math.pow(x/2,3); 21 | denominador = Math.pow(x, 2) - x + 3; 22 | resultado = numerador / denominador; 23 | 24 | System.out.println("f(1) = "+ resultado); 25 | 26 | x=-2; 27 | numerador = 3 * Math.pow(x/2,3); 28 | denominador = Math.pow(x, 2) - x + 3; 29 | resultado = numerador / denominador; 30 | 31 | System.out.println("f(-2) = "+ resultado); 32 | 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Unidad1/EjerciciosResueltos/Scanner1.java: -------------------------------------------------------------------------------- 1 | 2 | package hl.t1.scanner1; 3 | 4 | import java.util.Scanner; 5 | 6 | public class Scanner1 { 7 | 8 | public static void main(String[] args) { 9 | 10 | Scanner s = new Scanner(System.in); 11 | 12 | System.out.print("Introduce tu nombre: "); 13 | String nombre = s.nextLine(); 14 | 15 | System.out.print("Introduce tu edad: "); 16 | int edad = Integer.parseInt(s.nextLine()); 17 | 18 | System.out.println("Tu nombre es " + nombre + " y tu edad es " + edad); 19 | } 20 | } -------------------------------------------------------------------------------- /Unidad1/EjerciciosResueltos/Unicode.java: -------------------------------------------------------------------------------- 1 | package hl.t1.unicode; 2 | 3 | public class Unicode { 4 | 5 | public static void main(String[] args) { 6 | 7 | 8 | // Ajedrez 9 | 10 | System.out.println( "\u2654"); 11 | System.out.println( "\u2655"); 12 | System.out.println( "\u2656"); 13 | System.out.println( "\u2657"); 14 | System.out.println( "\u2658"); 15 | System.out.println( "\u2659"); 16 | System.out.println( "\u265A"); 17 | System.out.println( "\u265B"); 18 | System.out.println( "\u265C"); 19 | System.out.println( "\u265D"); 20 | System.out.println( "\u265E"); 21 | System.out.println( "\u265F"); 22 | 23 | 24 | 25 | 26 | 27 | 28 | } 29 | } 30 | 31 | -------------------------------------------------------------------------------- /Unidad1/README.md: -------------------------------------------------------------------------------- 1 | Unidad 01 2 | ====== 3 | 4 | * [Ejercicios Resueltos](EjerciciosResueltos) 5 | * [Práctica 1](p1.md) 6 | * [Ejercicio de repaso 1](Repaso1.md) 7 | 8 | 9 | ### Control de versiones - Git 10 | 11 | - [Introducción al uso de Github](https://docs.github.com/es/get-started) 12 | - [Conociendo Git](https://conociendogithub.readthedocs.io/en/latest/) 13 | - [Chuleta de comandos](https://github.com/franlu/Programacion-Moviles/blob/main/Tema1/git-cheat-sheet_es.pdf) :es: 14 | - [Chuleta de comandos](https://github.com/franlu/Programacion-Moviles/blob/main/Tema1/git-cheat-sheet_en.pdf) :gb: 15 | -------------------------------------------------------------------------------- /Unidad1/Repaso1.md: -------------------------------------------------------------------------------- 1 | 🎮 Juego 2 | ==================== 3 | 4 | Escribe un programa que simule el juego del Trivial a modo de cuestionario. **Requisitos**: 5 | 6 | ### Portada 7 | 8 | * Al inicio del programa se debe mostrar un texto a modo de portada y usando caracteres ASCII. Incluir texto con el tema de las preguntas. 9 | * Debes usar algún caracter unicode especial, o bien en la portada, o bien al hacer las preguntas. 10 | * Se incluye una breve descripción del juego dentro de un rectángulo formado por caracteres '-' y '|'. 11 | * Usar colores en el texto. *(opcional)* 12 | 13 | ### Jugador 14 | 15 | * En primer lugar el programa le pedira por teclado el nombre al jugador y lo almacenará en una variable. 16 | 17 | ### Preguntas 18 | 19 | * El juego debe tener entre 11 y 15 preguntas disponibles. 20 | * Todas las preguntas se almacenan en una lista. 21 | * Las respuestas correctas también se almacenan en una lista. 22 | * El juego debe elegir 8 preguntas al azar (de forma aleatoria) de entre las que estan en la lista. 23 | * **No** se pueden repetir las preguntas. 24 | 25 | ### Puntuación 26 | 27 | * Se debe llevar un control de la puntuación. En cada acierto se sumarán puntos y se restaran por cada error. 28 | * Debe haber preguntas de varios niveles de dificultad. En función del nivel de dificulta se sumarán o restarán mas o menos puntos. 29 | * Al finalizar el juego se muestra por pantalla el nombre del jugador y la puntuación obtenida. 30 | * En el caso de que obtenga la puntuación máxima o mínima se mostrarán mensajes especiales. Usa carácteres, unicode y colores para mostrar el mensaje. Se creativ@ 😄 31 | -------------------------------------------------------------------------------- /Unidad1/p1.md: -------------------------------------------------------------------------------- 1 | 2 | Práctica 01 3 | ====== 4 | 5 | * Escribe un programa que muestre por pantalla tres mensajes: "Bienvenido a Java", "Bienvenido a las Ciencias de la computación" y "La programación es divertida". Cada mensaje se debe mostrar en un color diferente. 6 | 7 | * Escribe un programa que muestre el área y perímetro de un circulo cuyo radio es 5,5 cm. Usa las siguientes formulas: perimetro=2 * radio * PI, area=radio * radio * PI. Utiliza a función Pow. PI debe ser declarada como una constante. 8 | 9 | * Un corredor recorre 14 kms en 45 minutos y 30 segundos. Escribe un programa que muestre la velocidad media en millas por hora (1 milla equivale a 1,6 kms). 10 | 11 | * Lee del teclado un valor decimal (grados celsius) y conviértelo a grados Fahrenheit. 12 | 13 | * Escribe un programa que lea del teclado un número de pies, lo convierta en metros y muestre el resultado (1 pie equivale a 0,305 metros). 14 | 15 | * Escribe el programa que calcule en índice de mas corporal de una persona. Se introducen por teclado los valores de la persona, se realiza el calculo y se muestra el resultado por pantalla. 16 | 17 | * Realiza un programa en Java que lea un número por teclado y muestre a qué día de la semana corresponde. Si el número leído es 1 visualizará Lunes, si es 2 visualizará Martes, si es 3 visualizará Miércoles, y así sucesivamente. Para cualquier otro valor visualizará No válido. 18 | 19 | * Pide por teclado el nombre, edad y salario y muestra el salario. Si es menor de 16 no tiene edad para trabajar. Entre 19 y 50 años el salario es un 5 por ciento más. Entre 51 y 60 años el salario es un 10 por ciento más. Si es mayor de 60 el salario es un 15 por ciento más. 20 | 21 | * Realiza un programa que implemente el juego Piedra, Papel y Tijera. 22 | -------------------------------------------------------------------------------- /Unidad1/practicas/p1.md: -------------------------------------------------------------------------------- 1 | 2 | Práctica 01 3 | ====== 4 | 5 | * Escribe un programa que muestre por pantalla tres mensajes: "Bienvenido a Java", "Bienvenido a las Ciencias de la computación" y "La programación es divertida". Cada mensaje se debe mostrar en un color diferente. 6 | 7 | * Escribe un programa que muestre el área y perímetro de un circulo cuyo radio es 5,5 cm. Usa las siguientes formulas: perimetro=2*radio*PI, area=radio*radio*PI. Utiliza a función Pow. 8 | 9 | * Un corredor recorre 14 kms en 45 minutos y 30 segundos. Escribe un programa que muestre la velocidad media en millas por hora (1 milla equivale a 1,6 kms). 10 | 11 | * Lee del teclado un valor decimal (grados celsius) y conviértelo a grados Fahrenheit. 12 | 13 | * Escribe un programa que lea del teclado un número de pies, lo convierta en metros y muestre el resultado (1 pie equivale a 0,305 metros). 14 | 15 | * Escribe el programa que calcule en índice de mas corporal de una persona. Se introducen por teclado los valores de la persona, se realiza el calculo y se muestra el resultado por pantalla. 16 | -------------------------------------------------------------------------------- /Unidad2/README.md: -------------------------------------------------------------------------------- 1 | Unidad 02 2 | ====== 3 | -------------------------------------------------------------------------------- /Unidad2/ejemplos/Readme.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/franlu/Programacion/f50f95e536cfd19ca4bf2f0f28d6bec4b21141d0/Unidad2/ejemplos/Readme.md -------------------------------------------------------------------------------- /Unidad2/ejemplos/colecciones/Readme.md: -------------------------------------------------------------------------------- 1 | ### Colecciones 2 | 3 | * ArrayList 4 | -------------------------------------------------------------------------------- /Unidad2/examen/Autocajero.java: -------------------------------------------------------------------------------- 1 | 2 | import java.util.Scanner; 3 | import bpc.daw.objetos.TarjetaCredito; 4 | /** 5 | * 6 | * @author fran lucena 7 | */ 8 | public class Autocajero { 9 | 10 | public static void main(String[] args) { 11 | 12 | final int INTENTOS = 3; 13 | 14 | TarjetaCredito tCredito = new TarjetaCredito(11111, 100); 15 | Scanner leerTeclado = new Scanner(System.in); 16 | String clave; 17 | int aux; 18 | int intentos = 2; 19 | 20 | while (intentos > 0 && intentos <= INTENTOS) { 21 | 22 | System.out.println("Introduce la contraseña:"); 23 | clave = leerTeclado.next(); 24 | System.out.println("Has marcado la contraseña: " + clave); 25 | 26 | try { 27 | 28 | aux = tCredito.getSaldo(Integer.parseInt(clave)); 29 | System.out.println( 30 | "Contraseña aceptada con saldo inicial: " 31 | + aux); 32 | 33 | } catch (Exception ex) { 34 | 35 | System.out.println("ERROR: " + ex.getMessage()); 36 | System.out.println("Te quedan " + intentos + " intentos."); 37 | 38 | } finally { 39 | 40 | intentos--; 41 | } 42 | } 43 | 44 | if (intentos > 0){ 45 | 46 | char opcion = ' '; 47 | 48 | while (opcion!= 'T'){ 49 | 50 | System.out.println("Indique la operación a realizar:"); 51 | System.out.println("(I) Ingresar."); 52 | System.out.println("(R) Retirar."); 53 | System.out.println("(S) Saldo actual."); 54 | System.out.println("(T) Terminar."); 55 | 56 | opcion = leerTeclado.next().charAt(0); 57 | 58 | if (opcion == 'I') { 59 | 60 | int cantidad = leerTeclado.nextInt(); 61 | if (cantidad > 0){ 62 | 63 | tCredito.ingresarDinero(cantidad); 64 | } 65 | else{ 66 | 67 | System.out.println("No se pueder realizar la operación."); 68 | System.out.println("La cantidad a ingresar es menor a 1 €."); 69 | } 70 | 71 | } else if (opcion == 'R') { 72 | 73 | int cantidad = 0; 74 | int saldoActual = 0; 75 | 76 | System.out.println("Introduzca la cantidad a retirar:"); 77 | cantidad = leerTeclado.nextInt(); 78 | 79 | // La contraseña se ha filtrado anteriormente. 80 | // Se da por hecho que es correcta y no salta la excepcion 81 | try { 82 | 83 | saldoActual = tCredito.getSaldo(11111); 84 | 85 | } catch (Exception ex) { 86 | 87 | System.out.println("ERROR: " + ex.getMessage()); 88 | } 89 | 90 | if (cantidad <= saldoActual){ 91 | 92 | // La contraseña se ha filtrado anteriormente. 93 | // Se da por hecho que es correcta y no salta la excepcion 94 | try { 95 | 96 | tCredito.sacarDinero(leerTeclado.nextInt(), cantidad); 97 | 98 | } catch (Exception ex) { 99 | 100 | System.out.println("ERROR: " + ex.getMessage()); 101 | 102 | } 103 | } 104 | else{ 105 | 106 | System.out.println("No se pueder realizar la operación."); 107 | System.out.println("La cantidad a ingresar es menor a 1 €."); 108 | } 109 | 110 | } else if (opcion == 'S') { 111 | 112 | System.out.println("En estos momentos el saldo de la tarjeta es: "); 113 | 114 | // La contraseña se ha filtrado anteriormente. 115 | // Se da por hecho que es correcta y no salta la excepcion 116 | try { 117 | 118 | System.out.println("Saldo actual: " + tCredito.getSaldo(11111)); 119 | 120 | } catch (Exception ex) { 121 | 122 | System.out.println("ERROR: " + ex.getMessage()); 123 | } 124 | 125 | } else if (opcion == 'T') { 126 | 127 | System.out.println("Ha pulsado terminar de operar en Cajero."); 128 | System.out.println("Gracias por usar el cajero. Recoja su tarjeta."); 129 | 130 | } else { 131 | 132 | System.out.println("\nERROR: Opción incorrecta."); 133 | System.out.println("Pulse una tecla válida: I, R, S o T\n"); 134 | } 135 | 136 | 137 | } 138 | } 139 | else{ 140 | System.out.println("CAJERO CERRADO"); 141 | System.out.println("Ha agotado los 3 intentos para acceder."); 142 | System.out.println("Tarjeta Bloqueada."); 143 | } 144 | } 145 | 146 | } 147 | -------------------------------------------------------------------------------- /Unidad2/examen/Automarcador.java: -------------------------------------------------------------------------------- 1 | package automarcador; 2 | 3 | import java.util.Scanner; 4 | import bpc.daw.objetos.MarcadorBaloncesto; 5 | /** 6 | * 7 | * @author Fran 8 | */ 9 | public class Automarcador { 10 | 11 | public static void main(String[] args) { 12 | 13 | String nLocal = "Estudiantes"; 14 | String nVisitante = "CB Granada"; 15 | String aux; 16 | char opcion; 17 | boolean partidoEnJuego = true; 18 | int puntos; 19 | Scanner leerTeclado = new Scanner(System.in); 20 | 21 | // Declarar e inicializar el objeto MarcadorBaloncesto 22 | MarcadorBaloncesto marcador = new MarcadorBaloncesto(nLocal, nVisitante); 23 | 24 | // Menu Inicial 25 | System.out.println( 26 | "Marcador automático entre equipos. Local: " + marcador.getNombreLocal() 27 | + "; Visitante: " + marcador.getNombreVisitante()); 28 | System.out.println( 29 | "Pulsa la letra 'P' para visualizar el marcador actual"); 30 | System.out.println( 31 | "Pulsa la letra 'S' para visualizar el marcador final y terminar el partido."); 32 | System.out.println("1) indique el equipo anotador: 'L' (local) o 'V' (visitante)"); 33 | System.out.println("2) Marque la puntuación anotada: (1,2,3) + INTRO"); 34 | 35 | 36 | while (partidoEnJuego) { // opcion == 'S' 37 | 38 | System.out.println( 39 | "a) indique equipo anotador (L|V), S (salir), P (puntos actuales):"); 40 | 41 | // almacenar el primer caracter que pulsa el usuario 42 | opcion = leerTeclado.next().charAt(0); 43 | 44 | 45 | if (opcion == 'L' || opcion == 'V') { 46 | 47 | System.out.println("b) indique la puntuación de la canasta"); 48 | aux = leerTeclado.next(); 49 | puntos = Integer.parseInt(aux); 50 | 51 | while (puntos < 1 || puntos > 3) { 52 | 53 | System.out.println("ERROR: Puntuación no válida"); 54 | System.out.println("Pulse una tecla válida: 1, 2 o 3."); 55 | aux = leerTeclado.next(); 56 | puntos = Integer.parseInt(aux); 57 | 58 | } 59 | 60 | marcador.anotarCanasta(opcion, puntos); 61 | 62 | if (opcion == 'L') { 63 | 64 | System.out.println( 65 | "Marca LOCAL con una canasta de " 66 | + puntos + " puntos."); 67 | } else { 68 | 69 | System.out.println( 70 | "Marca VISITANTE con una canasta de " 71 | + puntos + " puntos."); 72 | } 73 | 74 | } else if (opcion == 'P') { 75 | 76 | System.out.println("En estos momentos:"); 77 | System.out.println(marcador.toString()); 78 | 79 | if (marcador.getPuntosLocal() > marcador.getPuntosVisitante()){ 80 | 81 | System.out.println("" 82 | + "Va ganando el equipo LOCAL: " 83 | + marcador.getNombreEquipoGanador()); 84 | 85 | } else if (marcador.getPuntosLocal() < marcador.getPuntosVisitante()) { 86 | 87 | System.out.println("" 88 | + "Va ganando el equipo VISITANTE: " 89 | + marcador.getNombreEquipoGanador()); 90 | } else { 91 | // Si el partido esta en EMPATE getNombreEquipoGanado devuelve null 92 | System.out.println("El partido se encuentra en EMPATE"); 93 | 94 | } 95 | 96 | } else if (opcion == 'S') { 97 | 98 | System.out.println("Ha pulsado salir del marcador."); 99 | System.out.println("Fin del partido. Marcador final:"); 100 | System.out.println(marcador.toString()); 101 | partidoEnJuego = false; 102 | 103 | } else { 104 | 105 | System.out.println("ERROR: Opción Incorrecta"); 106 | System.out.println("Pulse una tecla válida (L, V, P o S)"); 107 | 108 | } 109 | } 110 | } 111 | } 112 | -------------------------------------------------------------------------------- /Unidad2/examen/Examen_T2_T3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/franlu/Programacion/f50f95e536cfd19ca4bf2f0f28d6bec4b21141d0/Unidad2/examen/Examen_T2_T3.pdf -------------------------------------------------------------------------------- /Unidad2/examen/ObjetosSencillos.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/franlu/Programacion/f50f95e536cfd19ca4bf2f0f28d6bec4b21141d0/Unidad2/examen/ObjetosSencillos.jar -------------------------------------------------------------------------------- /Unidad2/examen/correccion.md: -------------------------------------------------------------------------------- 1 | ### Ejercicio 1 (5 puntos) 2 | 3 | - configura y utiliza de forma correcta la libreria ObjetosSencillos. 4 | - muestra un menu de forma repetida. 5 | - usa de forma correcta la funcion charAt o alguna forma alternativa. 6 | - registra de forma adecuada los puntos de un determinado equipo. 7 | - anota los puntos de cada canasta. 8 | - muestra los puntos actuales usando los metodo del objeto Marcador. 9 | - finaliza el partido y muestra el marcador final con nombre de equipos. 10 | - filtra las letras/opciones del menu 11 | - filtra el valor introducido para la canasta. 12 | - legibilidad, claridad, estructura y comentarios sobre el código fuente. 13 | 14 | ### Ejercicio 2 (5 puntos) 15 | 16 | - Crear e inicializar el objeto TarjetaCredito. 17 | - ingresar dinero 18 | - retirar dinero 19 | - obtener saldo. 20 | - terminar el programa. 21 | - controla el numero de intentos para introducir contraseña 22 | - controla la opcion del menu y vuelve a pintarlo. 23 | - gestiona el dinero insuficiente. 24 | - controla la cantidad negativa al ingresar. 25 | - uso del bloque try-catch para los metodos que lo requieren. 26 | 27 | Cada ejercicio se valora con 10 items. Cada item vale 0,5 puntos. Sólo se indican los item que no se cumplen. 28 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/allclasses-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | All Classes 8 | 9 | 10 | 11 | 12 | 13 |

All Classes

14 |
15 | 22 |
23 | 24 | 25 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/allclasses-noframe.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | All Classes 8 | 9 | 10 | 11 | 12 | 13 |

All Classes

14 |
15 | 22 |
23 | 24 | 25 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/bpc/daw/objetos/class-use/Caja.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Class bpc.daw.objetos.Caja 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 43 |
44 | 71 | 72 |
73 |

Uses of Class
bpc.daw.objetos.Caja

74 |
75 |
No usage of bpc.daw.objetos.Caja
76 | 77 |
78 | 79 | 80 | 81 | 82 | 83 | 84 | 93 |
94 | 121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/bpc/daw/objetos/class-use/DepositoAgua.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Class bpc.daw.objetos.DepositoAgua 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 43 |
44 | 71 | 72 |
73 |

Uses of Class
bpc.daw.objetos.DepositoAgua

74 |
75 |
No usage of bpc.daw.objetos.DepositoAgua
76 | 77 |
78 | 79 | 80 | 81 | 82 | 83 | 84 | 93 |
94 | 121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/bpc/daw/objetos/class-use/MarcadorBaloncesto.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Class bpc.daw.objetos.MarcadorBaloncesto 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 43 |
44 | 71 | 72 |
73 |

Uses of Class
bpc.daw.objetos.MarcadorBaloncesto

74 |
75 |
No usage of bpc.daw.objetos.MarcadorBaloncesto
76 | 77 |
78 | 79 | 80 | 81 | 82 | 83 | 84 | 93 |
94 | 121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/bpc/daw/objetos/class-use/MarcadorMejorado.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Class bpc.daw.objetos.MarcadorMejorado 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 43 |
44 | 71 | 72 |
73 |

Uses of Class
bpc.daw.objetos.MarcadorMejorado

74 |
75 |
76 | 103 |
104 | 105 |
106 | 107 | 108 | 109 | 110 | 111 | 112 | 121 |
122 | 149 | 150 | 151 | 152 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/bpc/daw/objetos/class-use/TarjetaCredito.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Class bpc.daw.objetos.TarjetaCredito 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 43 |
44 | 71 | 72 |
73 |

Uses of Class
bpc.daw.objetos.TarjetaCredito

74 |
75 |
No usage of bpc.daw.objetos.TarjetaCredito
76 | 77 |
78 | 79 | 80 | 81 | 82 | 83 | 84 | 93 |
94 | 121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/bpc/daw/objetos/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | bpc.daw.objetos 8 | 9 | 10 | 11 | 12 | 13 |

bpc.daw.objetos

14 |
15 |

Classes

16 | 23 |
24 | 25 | 26 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/bpc/daw/objetos/package-tree.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | bpc.daw.objetos Class Hierarchy 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 43 |
44 | 71 | 72 |
73 |

Hierarchy For Package bpc.daw.objetos

74 |
75 |
76 |

Class Hierarchy

77 | 88 |
89 | 90 |
91 | 92 | 93 | 94 | 95 | 96 | 97 | 106 |
107 | 134 | 135 | 136 | 137 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/bpc/daw/objetos/package-use.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Package bpc.daw.objetos 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 43 |
44 | 71 | 72 |
73 |

Uses of Package
bpc.daw.objetos

74 |
75 |
76 |
    77 |
  • 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 90 | 91 | 92 |
    Classes in bpc.daw.objetos used by bpc.daw.objetos 
    Class and Description
    MarcadorMejorado 88 |
    Esta clase es un marcador de baloncesto que funciona de forma parecida al MarcadorBaloncesto, pero usando constantes.
    89 |
    93 |
  • 94 |
95 |
96 | 97 |
98 | 99 | 100 | 101 | 102 | 103 | 104 | 113 |
114 | 141 | 142 | 143 | 144 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/deprecated-list.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Deprecated List 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 43 |
44 | 71 | 72 |
73 |

Deprecated API

74 |

Contents

75 |
76 | 77 |
78 | 79 | 80 | 81 | 82 | 83 | 84 | 93 |
94 | 121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/index-files/index-10.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | R-Index 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 43 |
44 | 71 | 72 |
A B C D E G I M N R S T  73 | 74 | 75 |

R

76 |
77 |
retirarLitro() - Method in class bpc.daw.objetos.DepositoAgua
78 |
79 |
Retira un litro de agua del depósito
80 |
81 |
82 | A B C D E G I M N R S T 
83 | 84 |
85 | 86 | 87 | 88 | 89 | 90 | 91 | 100 |
101 | 128 | 129 | 130 | 131 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/index-files/index-11.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | S-Index 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 43 |
44 | 71 | 72 |
A B C D E G I M N R S T  73 | 74 | 75 |

S

76 |
77 |
sacarDinero(int, int) - Method in class bpc.daw.objetos.TarjetaCredito
78 |
79 |
Permite sacar dinero de la cuenta corriente.
80 |
81 |
82 | A B C D E G I M N R S T 
83 | 84 |
85 | 86 | 87 | 88 | 89 | 90 | 91 | 100 |
101 | 128 | 129 | 130 | 131 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/index-files/index-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | B-Index 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 43 |
44 | 71 | 72 |
A B C D E G I M N R S T  73 | 74 | 75 |

B

76 |
77 |
bpc.daw.objetos - package bpc.daw.objetos
78 |
 
79 |
80 | A B C D E G I M N R S T 
81 | 82 |
83 | 84 | 85 | 86 | 87 | 88 | 89 | 98 |
99 | 126 | 127 | 128 | 129 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/index-files/index-4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | D-Index 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 43 |
44 | 71 | 72 |
A B C D E G I M N R S T  73 | 74 | 75 |

D

76 |
77 |
DepositoAgua - Class in bpc.daw.objetos
78 |
79 |
Esta clase representa un depósito de agua al que se le puede añadir agua de litro en litro
80 |
81 |
DepositoAgua(int, int) - Constructor for class bpc.daw.objetos.DepositoAgua
82 |
83 |
Crea un depósito de agua con una capacidad máxima y una cantidad inicial de agua
84 |
85 |
dibujar() - Method in class bpc.daw.objetos.DepositoAgua
86 |
87 |
Representa en pantalla el estado del depósito
88 |
89 |
90 | A B C D E G I M N R S T 
91 | 92 |
93 | 94 | 95 | 96 | 97 | 98 | 99 | 108 |
109 | 136 | 137 | 138 | 139 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/index-files/index-5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | E-Index 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 43 |
44 | 71 | 72 |
A B C D E G I M N R S T  73 | 74 | 75 |

E

76 |
77 |
estaAbierta() - Method in class bpc.daw.objetos.Caja
78 |
79 |
Método que sirve para comprobar si la caja está abierta
80 |
81 |
82 | A B C D E G I M N R S T 
83 | 84 |
85 | 86 | 87 | 88 | 89 | 90 | 91 | 100 |
101 | 128 | 129 | 130 | 131 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/index-files/index-7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | I-Index 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 43 |
44 | 71 | 72 |
A B C D E G I M N R S T  73 | 74 | 75 |

I

76 |
77 |
ingresarDinero(int) - Method in class bpc.daw.objetos.TarjetaCredito
78 |
79 |
Ingresa dinero en la cuenta.
80 |
81 |
82 | A B C D E G I M N R S T 
83 | 84 |
85 | 86 | 87 | 88 | 89 | 90 | 91 | 100 |
101 | 128 | 129 | 130 | 131 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/index-files/index-9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | N-Index 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 43 |
44 | 71 | 72 |
A B C D E G I M N R S T  73 | 74 | 75 |

N

76 |
77 |
NORMAL - Static variable in class bpc.daw.objetos.MarcadorMejorado
78 |
79 |
Constante para indicar al marcador que se ha anotado una canasta normal (2 puntos)
80 |
81 |
82 | A B C D E G I M N R S T 
83 | 84 |
85 | 86 | 87 | 88 | 89 | 90 | 91 | 100 |
101 | 128 | 129 | 130 | 131 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Generated Documentation (Untitled) 8 | 61 | 62 | 63 | 64 | 65 | 66 | <noscript> 67 | <div>JavaScript is disabled on your browser.</div> 68 | </noscript> 69 | <h2>Frame Alert</h2> 70 | <p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="bpc/daw/objetos/package-summary.html">Non-frame version</a>.</p> 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/overview-tree.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Class Hierarchy 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 43 |
44 | 71 | 72 |
73 |

Hierarchy For All Packages

74 | Package Hierarchies: 75 | 78 |
79 |
80 |

Class Hierarchy

81 | 92 |
93 | 94 |
95 | 96 | 97 | 98 | 99 | 100 | 101 | 110 |
111 | 138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/package-list: -------------------------------------------------------------------------------- 1 | bpc.daw.objetos 2 | -------------------------------------------------------------------------------- /Unidad2/examen/javadoc/script.js: -------------------------------------------------------------------------------- 1 | function show(type) 2 | { 3 | count = 0; 4 | for (var key in methods) { 5 | var row = document.getElementById(key); 6 | if ((methods[key] & type) != 0) { 7 | row.style.display = ''; 8 | row.className = (count++ % 2) ? rowColor : altColor; 9 | } 10 | else 11 | row.style.display = 'none'; 12 | } 13 | updateTabs(type); 14 | } 15 | 16 | function updateTabs(type) 17 | { 18 | for (var value in tabs) { 19 | var sNode = document.getElementById(tabs[value][0]); 20 | var spanNode = sNode.firstChild; 21 | if (value == type) { 22 | sNode.className = activeTableTab; 23 | spanNode.innerHTML = tabs[value][1]; 24 | } 25 | else { 26 | sNode.className = tableTab; 27 | spanNode.innerHTML = "" + tabs[value][1] + ""; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Unidad2/examen/recuperacion/Ejercicio01.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | import java.time.*; 3 | import java.util.Scanner; 4 | /** 5 | * 6 | * @author Fran 7 | */ 8 | public class Ejercicio01 { 9 | 10 | public static void main(String[] args) { 11 | 12 | Scanner leerTeclado = new Scanner(System.in); 13 | char opcion = ' '; 14 | boolean salir = false; 15 | 16 | // estilos.css debe estar en el mismo directorio que el fichero .java 17 | File archivo = new File("estilos.css"); 18 | 19 | while (!salir) { 20 | 21 | // pintar menu 22 | System.out.println("\n---------------------------------"); 23 | System.out.println("| MENÚ |"); 24 | System.out.println("|-------------------------------|"); 25 | System.out.println("| a - Mostra nombre y ruta |"); 26 | System.out.println("| b - Mostrar nombre y tamaño |"); 27 | System.out.println("| c - Ver contenido CSS |"); 28 | System.out.println("| d - Cambiar nombre |"); 29 | System.out.println("| e - Crear fichero minifier |"); 30 | System.out.println("| f - Ver contenido de minifier |"); 31 | System.out.println("| g - Calcular diferencia |"); 32 | System.out.println("| h - Mostrar tiempo empleado |"); 33 | System.out.println("| s - Salir |"); 34 | System.out.println("---------------------------------"); 35 | 36 | opcion = leerTeclado.next().charAt(0); 37 | 38 | switch (opcion) { 39 | case 'a': // nombre y ruta 40 | 41 | System.out.println("\nNombre: " + archivo.getName()); 42 | System.out.println("Ruta: " + archivo.getAbsolutePath()); 43 | break; 44 | 45 | case 'b': // nombre y tamaño 46 | 47 | long tam = archivo.length(); 48 | System.out.println("\nTamaño: " + tam + " B"); 49 | System.out.println("Tamaño: " + tam / Math.pow(1024, 2) + " MB"); 50 | System.out.println("Tamaño: " + tam / Math.pow(1024, 3) + " GB"); 51 | break; 52 | 53 | case 'c': // Contenido 54 | 55 | break; 56 | 57 | case 'd': // Cambiar nombre 58 | 59 | break; 60 | 61 | case 'e': // Eliminar separadores 62 | 63 | break; 64 | 65 | case 'f': // Ver minifier 66 | 67 | break; 68 | 69 | case 'g': // Diferecia después de eliminar separadores 70 | 71 | break; 72 | 73 | case 'h': // tiempo empleado en eliminar separadores 74 | 75 | break; 76 | 77 | case 's': // Salir 78 | System.out.println("\nFIN del programa."); 79 | System.out.println("¡Qué la suerte te acompañe!"); 80 | salir = true; 81 | break; 82 | 83 | default: 84 | System.out.println("Opción NO válida."); 85 | System.out.println("Teclee: a, b, c , d , e, f, g, h o s"); 86 | 87 | } 88 | } 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /Unidad2/examen/recuperacion/Ejercicio02.java: -------------------------------------------------------------------------------- 1 | 2 | import java.util.Scanner; 3 | /** 4 | * 5 | * @author Fran 6 | */ 7 | public class Ejercicio02 { 8 | 9 | public static void main(String[] args) { 10 | 11 | Scanner scanner = new Scanner(System.in); 12 | int[] lista = new int[5]; 13 | int posicion; 14 | 15 | System.out.println("=========================="); 16 | System.out.println("===== EJERCICIO 02 ====="); 17 | System.out.println("==========================\n"); 18 | 19 | // ArrayIndexOutOfBoundsException 20 | 21 | System.out.println("Indica la posición de la lista que quieres consultar: " 22 | + " (de 0 a 4):"); 23 | posicion = scanner.nextInt(); 24 | 25 | try { 26 | 27 | System.out.println("El valor de la lista en la posición " + posicion + 28 | " es: " + lista[posicion]); 29 | 30 | } catch (ArrayIndexOutOfBoundsException ex) { 31 | 32 | System.out.println("\n ERROR \n"); 33 | System.out.println("**********************************************"); 34 | System.out.println("*** La posicion NO esta dentro de la lista ***"); 35 | System.out.println("**********************************************\n"); 36 | 37 | // System.out.println(ex.getMessage()); 38 | } 39 | 40 | // NumberFormatException 41 | 42 | System.out.println("Teclea un número entero:"); 43 | String cadena = scanner.next(); 44 | int entero; 45 | 46 | try { 47 | 48 | entero = Integer.parseInt(cadena); 49 | System.out.println("El número tecleado es: " + entero); 50 | 51 | } catch (NumberFormatException ex) { 52 | 53 | System.out.println("\n ERROR \n"); 54 | System.out.println("**********************************************"); 55 | System.out.println("** El valor tecleado NO es un número entero **"); 56 | System.out.println("**********************************************\n"); 57 | 58 | // System.out.println(ex.getMessage()); 59 | 60 | } 61 | 62 | // ArithmeticException 63 | 64 | int dividendo, divisor, resultado; 65 | 66 | System.out.println("Ingresa el valor del dividendo:"); 67 | dividendo = scanner.nextInt(); 68 | System.out.println("Ingresa el valor del divisor:"); 69 | divisor = scanner.nextInt(); 70 | 71 | try { 72 | 73 | resultado = dividendo / divisor; 74 | System.out.println("El resultado de la division es: " + resultado); 75 | 76 | } catch (ArithmeticException ex) { 77 | 78 | System.out.println("\n ERROR \n"); 79 | System.out.println("**********************************************"); 80 | System.out.println("*** El valor del divisor NO puede ser cero ***"); 81 | System.out.println("**********************************************\n"); 82 | 83 | // System.out.println(ex.getMessage()); 84 | } 85 | -------------------------------------------------------------------------------- /Unidad2/examen/recuperacion/Ejercicio03.md: -------------------------------------------------------------------------------- 1 | # Ejercicio 03 2 | 3 | #### _A_ 4 | _¿Cuáles serían los atributos de la clase PilotoDeFormula1? ¿Se te ocurren algunas instancias de esta clase?_ 5 | 6 | - Atributos: Nombre, Apellido, Edad, Nombre del Equipo, Número de Victorias... 7 | - Instancias: Fernando Alonso, Carlos Sainz, Pedro de la Rosa... 8 | 9 | #### _B_ 10 | _¿Cuáles serían los atributos de la clase Ventana (de ordenador)?_ _¿cuáles serían los métodos?_ _Piensa en las propiedades y en el comportamiento de una ventana de cualquier programa._ 11 | 12 | - Atributos: Ancho, Alto, Borde, Color ... 13 | - Métodos: Abrir, Cerrar, Minimizar, Maximizar... 14 | 15 | #### _C_ 16 | 17 | _¿Cuáles serían los atributos de la clase Vivienda? ¿Qué subclases se te ocurren?_ 18 | 19 | - Atributos: Superficie, Numero de Habitaciones, Orientación, Ubicación ... 20 | - Subclases: Piso, Unifamiliar, Chalet ... 21 | -------------------------------------------------------------------------------- /Unidad2/examen/recuperacion/Ejercicio04.java: -------------------------------------------------------------------------------- 1 | import java.util.Scanner; 2 | /** 3 | * 4 | * @author Fran 5 | */ 6 | public class Ejercicio04 { 7 | 8 | public static void main(String[] args) { 9 | 10 | Scanner scanner = new Scanner(System.in); 11 | int suma = 0; 12 | int n = 0; 13 | int aux; 14 | double media; 15 | 16 | 17 | System.out.println("=========================="); 18 | System.out.println("===== EJERCICIO 04 ====="); 19 | System.out.println("==========================\n"); 20 | 21 | while (suma <= 10000) { 22 | 23 | System.out.print("Ingrese un valor (positivo) para acumularlo: "); 24 | aux = scanner.nextInt(); 25 | 26 | if (aux <= 0){ 27 | System.out.println("\n ERROR \n"); 28 | System.out.println("**********************************************"); 29 | System.out.println("* El último valor introducido NO es positivo *"); 30 | System.out.println("**********************************************\n"); 31 | } 32 | 33 | suma += aux; 34 | n++; 35 | } 36 | 37 | media = (double) suma / n; 38 | System.out.println("\nTotal de valores acumulados: " + suma); 39 | System.out.println("Total de valores introducidos: " + n); 40 | System.out.println("Media de valores: " + media + "\n"); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Unidad2/examen/recuperacion/RecuperaT2.md: -------------------------------------------------------------------------------- 1 | # Tarea de Recuperación 2 | 3 | #### _Ejercicio 1_ 4 | 5 | Utiliza la documentación “JAVA IO” para usar los objetos que consideres necesarios para resolver el siguiente problema: Tienes un fichero estilos.css que contiene código fuente escrito en el lenguaje CSS y necesitamos conocer sus metadatos y realizar alguna operación sobre él. 6 | El programa mostrará repetidamente el siguiente menú: 7 | - Mostrar el nombre y la ruta al fichero. 8 | - Mostrar el nombre, tamaño en Bytes, MB y GB. 9 | - Mostrar el contenido del fichero por pantalla. 10 | - Cambiar el nombre del fichero. (El usuario debe introducir el nuevo nombre). 11 | - Crear un nuevo fichero de nombre minifier.css. (El nuevo fichero contiene el mismo código que el fichero estilos.css pero eliminando los separadores (espacio, tabulador, retorno de carro (salto de línea)) 12 | - Mostrar por pantalla el contenido del fichero minifier.css. 13 | - Calcular la diferencia de tamaño en Bytes entre los ficheros: estilos.css y minifier.css. 14 | - Calcular el tiempo que se tarda en eliminar los separadores del fichero minifier.css. Utiliza los objetos Instant y Duration. 15 | - Pulsa ‘S’ para salir del programa. 16 | 17 | **NOTA**: Realiza el control de excepciones dentro del programa. Filtra la opción del menú que pulsa el usuario. OJO, al abrir, modificar y crear ficheros. Además, ten en cuenta los permisos de los archivos. 18 | **_(7 puntos)_** 19 | 20 | 21 | #### _Ejercicio 2_ 22 | 23 | Escribe un programa en JAVA en el que se generen y se controlen los siguientes tipos de excepciones: ArrayIndexOutOfBoundsException, NumberFormatException y ArithmeticException. 24 | **_(1 punto)_** 25 | 26 | 27 | #### _Ejercicio 3_ 28 | 29 | Responde a las siguiente preguntas: 30 | - ¿Cuáles serían los atributos de la clase PilotoDeFormula1? ¿Se te ocurren algunas instancias de esta clase? 31 | 32 | - ¿Cuáles serían los atributos de la clase Ventana (de ordenador)? ¿cuáles serían 33 | los métodos? Piensa en las propiedades y en el comportamiento de una ventana 34 | de cualquier programa. 35 | 36 | - ¿Cuáles serían los atributos de la clase Vivienda? ¿Qué subclases se te ocurren? 37 | **_(1 punto)_** 38 | 39 | 40 | #### _Ejercicio 4_ 41 | 42 | Escribe un programa que permita ir introduciendo una serie indeterminada de números mientras su suma no supere el valor 10000. Cuando esto último ocurra, se debe mostrar el total acumulado, el contador de los números introducidos y la media. 43 | **_(1 punto)_** 44 | -------------------------------------------------------------------------------- /Unidad3/Ejemplos/Ej01While.java: -------------------------------------------------------------------------------- 1 | import java.util.Scanner; 2 | 3 | /** 4 | * 5 | * @author Fran 6 | */ 7 | public class Ejercicio01 { 8 | 9 | public static void main(String[] args) { 10 | 11 | // creamos la variable que controla las repeticiones (forma "lenta pero segura") 12 | boolean repetir = true; 13 | 14 | System.out.println("Introduce un número..."); 15 | while (repetir) { 16 | 17 | // pedimos un número al usuario 18 | int n = new Scanner(System.in).nextInt(); 19 | 20 | // si el número es 0, paramos las repeticiones 21 | // y en caso contrario, lo mostramos en pantalla 22 | if (n == 0) { 23 | repetir = false; 24 | } else { 25 | System.out.println("Has escrito el número " + n); 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Unidad3/Ejemplos/Ej02TriBucle.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @author Fran 4 | */ 5 | public class Ej02TriBucle { 6 | 7 | 8 | public static void main(String[] args) { 9 | 10 | 11 | for(int x=0; x<=100; x++){ 12 | 13 | if (x % 5 == 0) { 14 | System.out.println(x); 15 | } 16 | } 17 | 18 | 19 | int y = 0; 20 | while (y<=100){ 21 | 22 | if (y % 5 == 0) { 23 | System.out.println(y); 24 | } 25 | 26 | y++; 27 | } 28 | 29 | 30 | int z=0; 31 | do { 32 | 33 | if (z % 5 == 0) { 34 | System.out.println(z); 35 | } 36 | 37 | z++; 38 | 39 | }while(z<=100); 40 | 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Unidad3/Ejemplos/Ej03Bucle.java: -------------------------------------------------------------------------------- 1 | 2 | import java.lang.Math.pow; 3 | import java.util.Scanner; 4 | import java.util.InputMismatchException; 5 | /** 6 | * 7 | * @author Fran 8 | */ 9 | public class Ej03Bucle { 10 | 11 | 12 | public static void main(String[] args) { 13 | 14 | 15 | int num = 0, cuadrado = 0, cubo = 0; 16 | 17 | System.out.println("Introduzca un numero entero"); 18 | 19 | try { 20 | 21 | num = new Scanner(System.in).nextInt(); 22 | System.out.println("ENTERO ---- CUADRADO ---- CUBO"); 23 | 24 | for(int x=num; x canciones = new ArrayList<>(); 8 | 9 | canciones.add("El porompompero - Manolo Escobar"); 10 | canciones.add("Salta - King África"); 11 | canciones.add("La mané - Cantajuegos"); 12 | 13 | System.out.println("Recorriendo 1ª forma"); 14 | 15 | for (String cancion : canciones) { 16 | System.out.println(cancion); 17 | } 18 | 19 | System.out.println("Recorriendo 2ª forma"); 20 | 21 | for (int x = 0; x < canciones.size(); x++) { 22 | System.out.println(canciones.get(x)); 23 | } 24 | 25 | System.out.println("Recorriendo 3ª forma"); 26 | 27 | canciones.forEach((cancion) -> { 28 | System.out.println(cancion); 29 | }); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Unidad3/Ejemplos/Ej05BucleDoble.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Muestra por pantalla la siguiente figura 3 | * 4 | * ********* 5 | * ******** 6 | * ******* 7 | * ****** 8 | * ***** 9 | * **** 10 | * *** 11 | * ** 12 | * * 13 | * 14 | * @author Fran 15 | */ 16 | public class Ej05BucleDoble { 17 | 18 | public static void main(String[] args) { 19 | 20 | for(int x=0; x<=8; x++){ 21 | for(int y=x; y<=8; y++){ 22 | System.out.print("*"); 23 | } 24 | System.out.println(); 25 | } 26 | } // main 27 | } // clase 28 | -------------------------------------------------------------------------------- /Unidad3/Ejemplos/Ej06Matriz.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Tablero de 10x10 3 | * 4 | * * A B C D E F G H I J 5 | * A ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 6 | * B ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 7 | * C ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 8 | * D ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 9 | * E ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 10 | * F ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 11 | * G ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 12 | * H ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 13 | * I ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 14 | * J ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 15 | * 16 | * 1 barco de 5 17 | * 1 barco de 4 18 | * 2 barcos de 3 19 | * 3 barcos de 2 20 | * 21 | * 22 | * @author Fran 23 | */ 24 | public class Ej06Matriz { 25 | 26 | public static void main(String[] args) { 27 | 28 | tablero[0][0] = "*"; 29 | 30 | int aux = 1; 31 | for(char a ='A'; a<'K';a++){ 32 | tablero[0][aux]=Character.toString(a); 33 | aux++; 34 | } 35 | aux = 1; 36 | for(char a ='A'; a<'K';a++){ 37 | tablero[aux][0]=Character.toString(a); 38 | aux++; 39 | } 40 | 41 | for(int x=1;x 7 | */ 8 | public class Ejercicio01 { 9 | 10 | public static void main(String[] args) { 11 | 12 | String[] canciones = { 13 | "paquito-chocolatero.mp3", 14 | "highway-to-hell.mp3", 15 | "eso-que-tu-me-das.mp3", 16 | "despecha.mp3", 17 | "la-bilirrubina.mp3" 18 | }; 19 | 20 | System.out.println("==============================================="); 21 | System.out.println("= Elige el número de canción para reproducir ="); 22 | System.out.println("==============================================="); 23 | System.out.println("= 1 - Paquito el chocolatero. ="); 24 | System.out.println("= 2 - Highway to Hell. ="); 25 | System.out.println("= 3 - Eso que tú me das. ="); 26 | System.out.println("= 4 - Despechá. ="); 27 | System.out.println("= 5 - La Bilirrubina. ="); 28 | System.out.println("==============================================="); 29 | 30 | Scanner cadena = new Scanner(System.in); 31 | int num = Integer.parseInt(cadena.nextLine()); 32 | 33 | switch(num){ 34 | case 1: 35 | System.out.println("Reproduciendo: "+ canciones[0]); 36 | break; 37 | case 2: 38 | System.out.println("Reproduciendo: "+ canciones[1]); 39 | break; 40 | case 3: 41 | System.out.println("Reproduciendo: "+ canciones[2]); 42 | break; 43 | case 4: 44 | System.out.println("Reproduciendo: "+ canciones[3]); 45 | break; 46 | case 5: 47 | System.out.println("Reproduciendo: "+ canciones[4]); 48 | break; 49 | default: 50 | System.out.println("El número elegido NO aparece en la lista."); 51 | } 52 | 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Unidad3/Ejercicios/repaso.md: -------------------------------------------------------------------------------- 1 | ### Bulces y Arrays: Ejercicios de repaso 2 | 3 | 1. Calcular la suma de los primeros 10 números múltiplos de 5. 4 | 5 | 2. Dibuja un cuadrado, con ocho '*' de lado: 6 | 7 | 3. Realiza un programa que gestione la compra de los productos de un 8 | supermercado. Se pide el nombre del producto y su precio en bucle, después 9 | de cada producto y su correspondiente precio se preguntará si deseamos 10 | continuar introduciendo más productos, si la respuesta es “SI” lo haremos. Al 11 | terminar de introducir el producto mostraremos el importe total de la compra 12 | y cuántos productos hemos comprado en total. 13 | 14 | 4. Realiza un programa que realice el cálculo de las medias de los alumnos 15 | de clase. Lo primero que se necesita es saber cuántos alumnos hay en el 16 | aula, es un dato que se pedirá por pantalla. Después se pedirán las notas 17 | de las 4 actividades que se realizan por trimestre (se debe utilizar un bucle 18 | para esto), la nota del examen y la nota de la actitud. Después de 19 | introducir estos datos se debe mostrar la nota media del alumno teniendo 20 | en cuenta que las actividades son un 30%, el examen un 60% y la nota de clase 21 | un 10% 22 | 23 | 5. La serie fibonacci es una serie infinita de números, donde empezando en 0 y 1, el siguiente elemento se obtiene de la suma de los dos anteriores. 24 | Por ejemplo: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55…. Haz un programa que muestre los 50 primeros numeros de la serie. 25 | 26 | 6. Escribe un programa que muestre por consola (con un print) los números de 1 a 100 (ambos incluidos y con un salto de línea entre cada impresión), sustituyendo los siguientes: - Múltiplos de 3 por la cadena "tres". - Múltiplos de 5 por la palabra "cinco". - Múltiplos de 3 y de 5 a la vez por la cadena "tres-cinco". 27 | 28 | 7. Escribe un programa que pida 10 números por teclado, los almacene en un array y que luego muestre el máximo valor, el mínimo y las posiciones que ocupan en el array. 29 | 30 | 8. Escribe un programa que genere 20 números enteros aleatorios entre 0 y 99 y los almacene en un array. Después, debe mostrar la posición y el valor de cada elemento por pantalla. 31 | 32 | 9. Crea un array de números de un tamaño pasado por teclado, el array contendrá números aleatorios entre 1 y 300 y mostrar aquellos números que acaben en un dígito que nosotros le indiquemos por teclado (debes controlar que se introduce un numero correcto. Entre 0 y 9), estos deben guardarse en un nuevo array. Por último, muestra la posición y valor de cada elemento del array. 33 | 34 | 10. Escribe un programa que reciba un texto y transforme lenguaje natural a "lenguaje hacker" (conocido realmente como "leet" o "1337"). Este lenguaje 35 | se caracteriza por sustituir caracteres alfanuméricos. Utiliza esta tabla (https://www.gamehouse.com/blog/leet-speak-cheat-sheet/) con el alfabeto y los números en "leet". (Usa la primera opción de cada transformación. Por ejemplo "4" para la "a"). Usa array para cada lenguaje (natural y leet). 36 | 37 | 11. Escribe un programa que sea capaz de generar contraseñas de forma aleatoria. Podrás configurar generar contraseñas con los siguientes parámetros: 38 | Longitud: Entre 8 y 16. Con o sin letras mayúsculas. Con o sin números. Con o sin símbolos. Los parámetros se deben pedir al usuario. Además, se debe pedir el número de contraseñas que se van a generar, para mostrarlas al usuario y que pueda elegir entre una de ellas. 39 | 40 | -------------------------------------------------------------------------------- /Unidad3/README.md: -------------------------------------------------------------------------------- 1 | Unidad 03 2 | ====== 3 | -------------------------------------------------------------------------------- /Unidad4/Ejemplos/AnimalAcuatico.java: -------------------------------------------------------------------------------- 1 | public interface Animal { 2 | void mover(); 3 | } 4 | 5 | public interface AnimalAcuatico extends Animal { 6 | void nadar(); 7 | } 8 | 9 | public class Fish implements AquaticAnimal { 10 | public void mover() { 11 | System.out.println("El pez se esta moviendo."); 12 | } 13 | public void nadar() { 14 | System.out.println("El pez esta nadando hacia fondo del mar."); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Unidad4/Ejemplos/Calculadora.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Interfaz Calculadora 3 | * 4 | * Contiene un método estatico que convierte los kilogramos en libras. 5 | * 6 | * 7 | */ 8 | 9 | public interface Calculadora { 10 | double sumar(double a, double b); 11 | double restar(double a, double b); 12 | double multiplicar(double a, double b); 13 | double dividir(double a, double b); 14 | 15 | static double convertirKgALb(double kg) { 16 | return kg * 2.20462; 17 | } 18 | } 19 | 20 | 21 | /** 22 | * 23 | * Ejemplo de uso 24 | * 25 | * double kg = 10; 26 | * double lbs = Calculadora.convertirKgALb(kg); 27 | * System.out.println(kg + " kg = " + lbs + " lbs"); 28 | * 29 | */ 30 | -------------------------------------------------------------------------------- /Unidad4/Ejemplos/Circulo.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @author Fran 4 | */ 5 | public class Circulo implements Figura { 6 | private double radio; 7 | 8 | public Circulo(double radio) { 9 | this.radio = radio; 10 | } 11 | 12 | public double calcularArea() { 13 | return Math.PI * radio * radio; 14 | } 15 | 16 | public double calcularPerimetro() { 17 | return 2 * Math.PI * radio; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Unidad4/Ejemplos/CuentaBancaria.java: -------------------------------------------------------------------------------- 1 | /** 2 | * La clase representa una cuenta bancaria 3 | * que almacena una máximo de 10000 € 4 | * 5 | * @author Fran 6 | */ 7 | 8 | public class CuentaBancaria { 9 | private int saldo; 10 | 11 | public void depositar(int cantidad) throws IllegalStateException { 12 | if (this.saldo + cantidad > 10000) { 13 | throw new IllegalStateException("No se puede depositar más de 10.000 €."); 14 | } 15 | this.saldo += cantidad; 16 | } 17 | 18 | public void retirar(int cantidad) throws IllegalStateException { 19 | if (this.saldo - cantidad < 0) { 20 | throw new IllegalStateException("No se puede retirar más de lo que hay en la cuenta."); 21 | } 22 | this.saldo -= cantidad; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Unidad4/Ejemplos/Estudiante.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Esta clase representa un estudiante. 3 | * 4 | * @author Fran 5 | * @version 1.0 6 | * @since 2023-02-14 7 | */ 8 | public class Estudiante { 9 | 10 | private String nombre; 11 | private int edad; 12 | 13 | /** 14 | * Este constructor crea un nuevo estudiante. 15 | * 16 | * @param nombre El nombre del estudiante. 17 | * @param edad La edad del estudiante. 18 | * @throws IllegalArgumentException Si la edad es menor que cero. 19 | */ 20 | public Estudiante(String nombre, int edad) throws IllegalArgumentException { 21 | if (edad < 0) { 22 | throw new IllegalArgumentException("La edad no puede ser menor que cero."); 23 | } 24 | this.nombre = nombre; 25 | this.edad = edad; 26 | } 27 | 28 | /** 29 | * Este método devuelve el nombre del estudiante. 30 | * 31 | * @return El nombre del estudiante. 32 | */ 33 | public String getNombre() { 34 | return nombre; 35 | } 36 | 37 | /** 38 | * Este método establece el nombre del estudiante. 39 | * 40 | * @param nombre El nombre del estudiante. 41 | */ 42 | public void setNombre(String nombre) { 43 | this.nombre = nombre; 44 | } 45 | 46 | /** 47 | * Este método devuelve la edad del estudiante. 48 | * 49 | * @return La edad del estudiante. 50 | */ 51 | public int getEdad() { 52 | return edad; 53 | } 54 | 55 | /** 56 | * Este método establece la edad del estudiante. 57 | * 58 | * @param edad La edad del estudiante. 59 | * @throws IllegalArgumentException Si la edad es menor que cero. 60 | */ 61 | public void setEdad(int edad) throws IllegalArgumentException { 62 | if (edad < 0) { 63 | throw new IllegalArgumentException("La edad no puede ser menor que cero."); 64 | } 65 | this.edad = edad; 66 | } 67 | 68 | /** 69 | * Este método devuelve una representación en cadena de texto del estudiante. 70 | * 71 | * @return Una cadena de texto con el nombre y la edad del estudiante. 72 | */ 73 | @Override 74 | public String toString() { 75 | return "Estudiante [nombre=" + nombre + ", edad=" + edad + "]"; 76 | } 77 | 78 | /** 79 | * Este método compara dos estudiantes. 80 | * 81 | * @param otro El estudiante con el que se va a comparar. 82 | * @return true si los estudiantes son iguales, false en caso contrario. 83 | */ 84 | public boolean equals(Estudiante otro) { 85 | if (this == otro) { 86 | return true; 87 | } 88 | if (otro == null) { 89 | return false; 90 | } 91 | if (getClass() != otro.getClass()) { 92 | return false; 93 | } 94 | Estudiante otroEstudiante = (Estudiante) otro; 95 | if (edad != otroEstudiante.edad) { 96 | return false; 97 | } 98 | if (nombre == null) { 99 | if (otroEstudiante.nombre != null) { 100 | return false; 101 | } 102 | } else if (!nombre.equals(otroEstudiante.nombre)) { 103 | return false; 104 | } 105 | return true; 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /Unidad4/Ejemplos/Figura.java: -------------------------------------------------------------------------------- 1 | public interface Figura { 2 | public double calcularArea(); 3 | public double calcularPerimetro(); 4 | } 5 | -------------------------------------------------------------------------------- /Unidad4/Ejemplos/MedidorAmbiental.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @author Fran 4 | * 5 | */ 6 | public interface MedidorAmbiental { 7 | public double medirTemperatura(); 8 | public double medirPresion(); 9 | } 10 | -------------------------------------------------------------------------------- /Unidad4/Ejemplos/Nomina.java: -------------------------------------------------------------------------------- 1 | interface Nomina{ 2 | public static final String EMPRESA = "Empresa de Informática, S. A."; 3 | public void detalleDeEmpleado(Nomina obj); 4 | } 5 | -------------------------------------------------------------------------------- /Unidad4/Ejemplos/Persona.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Clase que representa una persona. 3 | * 4 | * @author Fran 5 | */ 6 | public class Persona { 7 | // Atributos 8 | private String nombre; 9 | private int edad; 10 | 11 | /** 12 | * Constructor de la clase Persona. 13 | * @param nombre El nombre de la persona. 14 | * @param edad La edad de la persona. 15 | */ 16 | public Persona(String nombre, int edad) { 17 | this.nombre = nombre; 18 | this.edad = edad; 19 | } 20 | 21 | /** 22 | * Método que devuelve el nombre de la persona. 23 | * @return El nombre de la persona. 24 | */ 25 | public String getNombre() { 26 | return this.nombre; 27 | } 28 | 29 | /** 30 | * Método que establece el nombre de la persona. 31 | * @param nombre El nombre de la persona. 32 | */ 33 | public void setNombre(String nombre) { 34 | this.nombre = nombre; 35 | } 36 | 37 | /** 38 | * Método que devuelve la edad de la persona. 39 | * @return La edad de la persona. 40 | */ 41 | public int getEdad() { 42 | return this.edad; 43 | } 44 | 45 | /** 46 | * Método que establece la edad de la persona. 47 | * @param edad La edad de la persona. 48 | */ 49 | public void setEdad(int edad) { 50 | this.edad = edad; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /Unidad4/Ejemplos/README.md: -------------------------------------------------------------------------------- 1 | ### Ejemplos del Tema 4 2 | 3 | * **Persona** - Ejemplo de uso de JavaDoc 4 | * **Estudiante** - Ejemplo de uso de JavaDoc, incluyendo excepciones 5 | * **Interfaz Figura** - Ejemplo de interfaz 6 | * **Interfaz MedidorAmbiental** - Ejemplo de interfaz 7 | * **AnimalAcuatico** - Interfaz que extiende de otra interfaz. 8 | * **Nomina** - Interfaz con atributos estáticos 9 | * **Calculadora** - Interfaz con un método estático. 10 | * **CuentaBancaria** - Ejemplo de uso para la excepción IllegalStateException 11 | 12 | #### Recursos 13 | 14 | [JavaDoc - Oracle](https://www.oracle.com/es/technical-resources/articles/java/javadoc-tool.html) 15 | 16 | -------------------------------------------------------------------------------- /Unidad4/Ejemplos/Satelite.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Clase que representa un satelite. 3 | * 4 | * @author Fran 5 | */ 6 | public class Satelite implements MedidorAmbiental { 7 | 8 | public double medirTemperatura() { 9 | // código para medir la temperatura desde el satélite 10 | return temperatura; 11 | } 12 | 13 | public double medirPresion() { 14 | // código para medir la presión atmosférica desde el satélite 15 | return presion; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Unidad4/Ejercicios/DNI.java: -------------------------------------------------------------------------------- 1 | package Tema4; 2 | 3 | /** 4 | * 5 | * @author Iván Parra 6 | */ 7 | public class DNI { 8 | 9 | //ATRIBUTOS 10 | private int numero; 11 | private char letra; 12 | 13 | 14 | //CONSTRUCTORES 15 | public DNI(int n, char l) { 16 | this.numero = n; 17 | this.letra = l; 18 | }; 19 | 20 | public DNI(String dni) { 21 | 22 | this(Integer.parseInt( 23 | dni.substring(0,7)), 24 | dni.charAt(dni.length()-1)); 25 | 26 | } 27 | 28 | //GETTERS 29 | public String getDNI() { 30 | 31 | String aux; 32 | 33 | aux = String.valueOf(this.numero) + String.valueOf(this.letra); 34 | 35 | return aux; 36 | }; 37 | 38 | @Override 39 | public String toString(){ 40 | 41 | return this.getDNI(); 42 | 43 | } 44 | 45 | } -------------------------------------------------------------------------------- /Unidad4/Ejercicios/Oficina.java: -------------------------------------------------------------------------------- 1 | package Tema4; 2 | import java.util.*; 3 | import java.time.*; 4 | import java.time.format.DateTimeFormatter; 5 | /** 6 | * 7 | * @author Iván Parra 8 | */ 9 | public class Oficina { 10 | 11 | //ATRIBUTOS 12 | private String nombre; 13 | private ArrayList trabajadores; 14 | 15 | 16 | //CONSTRUCTORES 17 | public Oficina() { 18 | nombre = "Industrias DAW"; 19 | 20 | trabajadores = new ArrayList(); 21 | 22 | trabajadores.add(new Persona("Ana Diaz Diaz", 23 | 33333333, 'P', 1200, 24 | LocalDate.of(1985,05,21))); 25 | trabajadores.add(new Persona("Luis Lopez Lopez", 26 | 22222222, 'J', 1000, 27 | LocalDate.of(1985,05,21))); 28 | trabajadores.add(new Persona("Antonio Perez Perez", 29 | 11111111, 'H', 900, 30 | LocalDate.of(1985,05,21))); 31 | } 32 | 33 | public Oficina(String n) { 34 | nombre = n; 35 | trabajadores = null; 36 | } 37 | 38 | public Oficina(String n, int tipo) { 39 | nombre = n; 40 | 41 | if(tipo <= 0 || tipo > 3) { 42 | trabajadores = new ArrayList(); 43 | } else if(tipo == 1) { 44 | 45 | trabajadores.add(new Persona("Antonio Perez Perez", 46 | 11111111, 'H', 900, 47 | LocalDate.of(1985,05,21))); 48 | 49 | } else if(tipo == 2) { 50 | 51 | trabajadores.add(new Persona("Luis Lopez Lopez", 52 | 22222222, 'J', 1000, 53 | LocalDate.of(1985,05,21))); 54 | trabajadores.add(new Persona("Antonio Perez Perez", 55 | 11111111, 'H', 900, 56 | LocalDate.of(1985,05,21))); 57 | 58 | } else if(tipo == 3) { 59 | 60 | trabajadores.add(new Persona("Ana Diaz Diaz", 61 | 33333333, 'P', 1200, 62 | LocalDate.of(1985,05,21))); 63 | trabajadores.add(new Persona("Luis Lopez Lopez", 64 | 22222222, 'J', 1000, 65 | LocalDate.of(1985,05,21))); 66 | trabajadores.add(new Persona("Antonio Perez Perez", 67 | 11111111, 'H', 900, 68 | LocalDate.of(1985,05,21))); 69 | } 70 | } 71 | 72 | public ArrayList getTrabajadores(){ 73 | 74 | return this.trabajadores; 75 | 76 | } 77 | 78 | @Override 79 | public String toString(){ 80 | 81 | String aux = "Nombre: " + this.nombre + "\n"; 82 | 83 | for (Persona p : this.getTrabajadores()) { 84 | aux += p.toString() + "\n"; 85 | } 86 | 87 | return aux; 88 | 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /Unidad4/Ejercicios/Persona.java: -------------------------------------------------------------------------------- 1 | package Tema4; 2 | 3 | import java.time.*; 4 | 5 | import Tema4.DNI; 6 | /** 7 | * 8 | * @author Iván Parra 9 | */ 10 | public class Persona { 11 | //ATRIBUTOS 12 | private String nombre; 13 | private DNI dni; 14 | private double sueldo; 15 | private LocalDate fechaNacimiento; 16 | 17 | //CONSTRUCTORES 18 | public Persona(String n, DNI d) { 19 | dni = d; 20 | nombre = n; 21 | sueldo = 900; 22 | fechaNacimiento = LocalDate.of(2003, 23 | Month.JANUARY, 31); 24 | } 25 | 26 | public Persona(String n, DNI d, double s, LocalDate f) { 27 | dni = d; 28 | nombre = n; 29 | sueldo = s; 30 | fechaNacimiento = f; 31 | } 32 | 33 | public Persona(String n, int numDNI, char letraDNI, double s, LocalDate f) { 34 | 35 | dni = new DNI(numDNI, letraDNI); 36 | sueldo = s; 37 | fechaNacimiento = f; 38 | nombre = n; 39 | } 40 | 41 | public Persona(String n, int numDNI, char letraDNI) { 42 | dni = new DNI(numDNI, letraDNI); 43 | nombre = n; 44 | sueldo = 900; 45 | fechaNacimiento = LocalDate.of(2003, Month.JANUARY, 31); 46 | } 47 | 48 | //GETTERS 49 | @Override 50 | public String toString() { 51 | String aux = "El/Ella es " +nombre+ " con DNI: " +dni.getDNI()+ " ,cobra: " 52 | +sueldo+ " y nacio en el: " +fechaNacimiento; 53 | return aux; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /Unidad4/Ejercicios/README.md: -------------------------------------------------------------------------------- 1 | ### Ejercicios del Tema 4 2 | 3 | * **** - 4 | 5 | ### Ejercicios de repaso 6 | 7 | * **** - 8 | -------------------------------------------------------------------------------- /Unidad4/Ejercicios/ejercicios.md: -------------------------------------------------------------------------------- 1 | # Ejercicios 2 | 3 | Listado de ejercicios para el tema 4 | 5 | ##### Cafetera 6 | 7 | Desarrolla una clase Cafetera con atributos _capacidadMaxima_ (la cantidad máxima 8 | de café que puede contener la cafetera) y _cantidadActual_ (la cantidad actual de café 9 | que hay en la cafetera). Implementa, al menos, los siguientes métodos: 10 | * Constructor predeterminado: establece la capacidad máxima en 1000 (c.c.) 11 | y la actual en cero (cafetera vacía). 12 | * Constructor con la capacidad máxima de la cafetera; inicializa la cantidad actual de 13 | café igual a la capacidad máxima. 14 | * Constructor con la capacidad máxima y la cantidad actual. Si la cantidad actual es 15 | mayor que la capacidad máxima de la cafetera, la ajustará al máximo. 16 | * Getters y Setters. 17 | * llenarCafetera(): pues eso, hace que la cantidad actual sea igual a la capacidad. 18 | * servirTaza(int): simula la acción de servir una taza con la capacidad indicada. 19 | Si la cantidad actual de café “no alcanza” para llenar la taza, se sirve lo que quede. 20 | * vaciarCafetera(): pone la cantidad de café actual en cero. 21 | * agregarCafe(int): añade a la cafetera la cantidad de café indicada. 22 | -------------------------------------------------------------------------------- /Unidad4/Practicas/README.md: -------------------------------------------------------------------------------- 1 | ## Practicas 2 | -------------------------------------------------------------------------------- /Unidad4/Practicas/p1/FichaDomino.java: -------------------------------------------------------------------------------- 1 | package Librerias; 2 | 3 | /** 4 | * 5 | * @author fran 6 | */ 7 | public class FichaDomino { 8 | 9 | private int lado1; 10 | private int lado2; 11 | 12 | 13 | public FichaDomino(int l1, int l2){ 14 | 15 | this.lado1 = l1; 16 | this.lado2 = l2; 17 | 18 | } 19 | 20 | public int getLado1(){ 21 | 22 | return this.lado1; 23 | 24 | } 25 | 26 | public int getLado2(){ 27 | 28 | return this.lado2; 29 | 30 | } 31 | 32 | public FichaDomino voltea(){ 33 | 34 | int aux = this.lado1; 35 | 36 | this.lado1 = this.lado2; 37 | this.lado2 = aux; 38 | 39 | return this; 40 | 41 | } 42 | 43 | public Boolean encaja(FichaDomino ficha){ 44 | 45 | boolean encaja = false; 46 | 47 | boolean coincide_cara1 = (this.lado1 == ficha.getLado1() || this.lado1 == ficha.getLado2()); 48 | boolean coincide_cara2 = (this.lado2 == ficha.getLado1() || this.lado2 == ficha.getLado2()); 49 | 50 | if (coincide_cara1 || coincide_cara2) 51 | 52 | encaja = true; 53 | 54 | return encaja; 55 | 56 | } 57 | 58 | 59 | @Override 60 | public String toString(){ 61 | 62 | String aux; 63 | 64 | int l1 = this.lado1; 65 | int l2 = this.lado2; 66 | 67 | boolean es_cero_l1 = (l1 == 0 && l2 != 0); 68 | boolean es_cero_l2 = (l1 != 0 && l2 == 0); 69 | boolean es_cero_l1l2 = (l1 == 0 && l2 == 0); 70 | 71 | 72 | if (es_cero_l1) 73 | 74 | aux = "[ " + "|" + l2 +"]"; 75 | 76 | else if (es_cero_l2) 77 | 78 | aux = "["+ l1 + "| ]"; 79 | 80 | else if (es_cero_l1l2) 81 | 82 | aux = "[ | ]"; 83 | 84 | else 85 | 86 | aux = "["+ l1 + "|"+ l2 + "]"; 87 | 88 | return aux; 89 | 90 | } 91 | 92 | 93 | } 94 | -------------------------------------------------------------------------------- /Unidad4/Practicas/p1/Incidencia.java: -------------------------------------------------------------------------------- 1 | package Librerias; 2 | 3 | /** 4 | * 5 | * @author fran 6 | */ 7 | public class Incidencia { 8 | 9 | private int codigo; 10 | private String estado; 11 | private int puesto; 12 | private String descripcion; 13 | private String resolucion; 14 | 15 | private static int codigoAuto = 0; 16 | private static int pendiente = 0; 17 | 18 | 19 | public Incidencia(){} 20 | 21 | public Incidencia(int puesto, String descripcion){ 22 | 23 | this.codigo = Incidencia.codigoAuto++; 24 | this.estado = "Pendiente"; 25 | this.puesto = puesto; 26 | this.descripcion = descripcion; 27 | this.resolucion = ""; 28 | 29 | Incidencia.pendiente++; 30 | } 31 | 32 | public void resuelve(String resolucion) { 33 | 34 | this.estado = "Resuelta"; 35 | this.resolucion = resolucion; 36 | 37 | Incidencia.pendiente--; 38 | } 39 | 40 | @Override 41 | public String toString(){ 42 | 43 | String aux; 44 | 45 | aux = "Incidencia " + this.codigo; 46 | aux+= " - Puesto " + this.puesto; 47 | aux+= " - " + this.descripcion; 48 | aux+= " - " + this.estado; 49 | 50 | if (this.estado.equalsIgnoreCase("Resuelta")) 51 | 52 | aux+= " - " + this.resolucion; 53 | 54 | return aux; 55 | 56 | } 57 | 58 | public static final int getPendientes(){ 59 | 60 | return Incidencia.pendiente; 61 | 62 | } 63 | 64 | } 65 | -------------------------------------------------------------------------------- /Unidad4/Practicas/p1/T4p01.java: -------------------------------------------------------------------------------- 1 | package T4p01; 2 | 3 | import Librerias.*; 4 | 5 | /** 6 | * 7 | * @author fran 8 | */ 9 | public class T4p01 { 10 | 11 | /** 12 | * @param args the command line arguments 13 | */ 14 | public static void main(String[] args) { 15 | 16 | 17 | Incidencia inc1 = new Incidencia(105, "No tiene acceso a internet"); 18 | Incidencia inc2 = new Incidencia(14, "No arranca"); 19 | Incidencia inc3 = new Incidencia(5, "La pantalla se ve rosa"); 20 | Incidencia inc4 = new Incidencia(237, "Hace un ruido extraño"); 21 | Incidencia inc5 = new Incidencia(111, "Se cuelga al abrir 3 ventanas"); 22 | inc2.resuelve("El equipo no estaba enchufado"); 23 | inc3.resuelve("Cambio del cable VGA"); 24 | 25 | System.out.println(inc1); 26 | System.out.println(inc2); 27 | System.out.println(inc3); 28 | System.out.println(inc4); 29 | System.out.println(inc5); 30 | System.out.println("Incidencias pendientes: " + Incidencia.getPendientes()); 31 | 32 | /** SALIDA 33 | * 34 | * Incidencia 1 - Puesto: 105 - No tiene acceso a internet - Pendiente 35 | * Incidencia 2 - Puesto: 14 - No arranca - Resuelta - El equipo no estaba enchufado 36 | * Incidencia 3 - Puesto: 5 - La pantalla se ve rosa - Resuelta - Cambio del cable VGA 37 | * Incidencia 4 - Puesto: 237 - Hace un ruido extraño - Pendiente 38 | * Incidencia 5 - Puesto: 111 - Se queda colgado al abrir 3 ventanas - Pendiente 39 | * Incidencias pendientes: 3 40 | * 41 | */ 42 | 43 | FichaDomino f1 = new FichaDomino(6,1); 44 | FichaDomino f2 = new FichaDomino(0,4); 45 | FichaDomino f3 = new FichaDomino(3,3); 46 | FichaDomino f4 = new FichaDomino(0,1); 47 | 48 | System.out.println(f1); 49 | System.out.println(f2); 50 | System.out.println(f3); 51 | System.out.println(f4); 52 | 53 | System.out.println(f2.voltea()); 54 | System.out.println(f2.encaja(f4)); 55 | System.out.println(f1.encaja(f4)); 56 | System.out.println(f1.encaja(f3)); 57 | System.out.println(f1.encaja(f2)); 58 | 59 | /** SALIDA 60 | * 61 | * [6|1] 62 | * [ |4] 63 | * [3|3] 64 | * [ |1] 65 | * [4| ] 66 | * true 67 | * true 68 | * false 69 | * false 70 | * 71 | */ 72 | } 73 | 74 | } 75 | -------------------------------------------------------------------------------- /Unidad4/Prueba/Test.java: -------------------------------------------------------------------------------- 1 | package satelite; 2 | 3 | import java.util.ArrayList; 4 | 5 | /** 6 | * 7 | * @author fran 8 | */ 9 | public class Test { 10 | 11 | public static void main(String[] args) { 12 | 13 | ArrayList sagitario = new ArrayList(); 14 | 15 | Satelite sat1 = new Satelite(1000,10000, 1000 ); 16 | 17 | sat1.agregarSATConstelacion(sagitario); 18 | 19 | System.out.println(sat1); 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Unidad4/README.md: -------------------------------------------------------------------------------- 1 | Unidad 04 2 | ====== 3 | 4 | ##### Recursos 5 | * Diagrama de clases (UML): 6 | [Umbrello](https://umbrello.kde.org/) 7 | [Día](http://dia-installer.de/index.html.es) 8 | -------------------------------------------------------------------------------- /Unidad5/Actividades/Readme.md: -------------------------------------------------------------------------------- 1 | # Actividades del tema 5 2 | -------------------------------------------------------------------------------- /Unidad5/Actividades/enunciados.md: -------------------------------------------------------------------------------- 1 | # Enunciados 2 | 3 | ### Fórmula 1 4 | 5 | Supongamos que trabajas en una empresa que provee software para el análisis de datos de carreras de Fórmula 1. 6 | El equipo de desarrollo necesita crear un sistema para modelar diferentes aspectos de los coches de Fórmula 1. 7 | Para cumplir con los requisitos del cliente, debes crear una clase `CocheF1` con propiedades como `modelo`, 8 | `potencia`, `velocidadMaxima`, `neumaticos` y `alerones`. Además, debes agregar métodos como `acelerar()`, 9 | `frenar()`, `cambiarNeumaticos()` y `ajustarAlerones()`. 10 | 11 | Luego, debes crear una subclase llamada `CocheMercedes`, que hereda de `CocheF1` y agrega propiedades y 12 | métodos específicos de Mercedes. Por ejemplo, podrías agregar una propiedad `sistemaHibrido` y un método 13 | `usarSistemaHibrido()`. 14 | 15 | Escribe un programa Java que cree una instancia de `CocheMercedes` y llame a sus métodos para simular una 16 | carrera de Formula 1. El programa debe imprimir los valores de las propiedades del coche y su velocidad en 17 | cada vuelta. 18 | 19 | 20 | ### Minecraft 21 | 22 | Supongamos que estamos desarrollando un videojuego similar a Minecraft y necesitamos modelar diferentes 23 | tipos de bloques en el juego. Para ello, vamos a crear una clase `Bloque` como clase padre, que tendrá 24 | propiedades y métodos comunes a todos los tipos de bloques. A continuación, vamos a crear tres clases hijas con 25 | diferentes propiedades y métodos específicos para cada tipo de bloque: `BloqueMadera`, `BloquePiedra` y 26 | `BloqueHielo`. 27 | 28 | La clase `Bloque` tendrá las propiedades `nombre`, `dureza`, `resistencia` y `textura`, y los métodos `romper()` 29 | y `colocar()`. La clase `BloqueMadera` heredará de `Bloque` y tendrá una propiedad adicional de `tipoMadera` y 30 | un método `quemar()`. La clase `BloquePiedra` también heredará de `Bloque` y tendrá una propiedad `tipoPiedra` y 31 | un método `fundir()`. Finalmente, la clase `BloqueHielo` heredará de `Bloque` y tendrá una propiedad adicional 32 | `resbaladizo` y un método `derretir()`. 33 | 34 | Escribe un programa principal en Java que cree una instancia de cada clase de bloque y use sus métodos para simular 35 | diferentes acciones del juego. Por ejemplo, podrías romper un bloque de madera y colocarlo en otro lugar, fundir un 36 | bloque de piedra para obtener materiales y derretir un bloque de hielo para crear agua. El programa debe imprimir 37 | los valores de las propiedades y los resultados de las acciones realizadas. 38 | 39 | 40 | ### Espias 41 | 42 | Supongamos que trabajas en un programa de espionaje para una agencia gubernamental y necesitas modelar diferentes 43 | tipos de agentes de espionaje. Para ello, vamos a crear una clase `Agente` como clase padre, que tendrá propiedades 44 | y métodos comunes a todos los agentes. A continuación, vamos a crear tres clases hijas con diferentes propiedades y 45 | métodos específicos para cada tipo de agente: `AgenteSecreto`, `AgenteDoble` y `AgenteInfiltrado`. 46 | 47 | La clase `Agente` tendrá las propiedades nombre, edad, nacionalidad, objetivo y ubicacion, y los métodos espiar() y 48 | informar(). La propiedad objetivo se refiere al objetivo del espionaje y la propiedad ubicacion se refiere a la 49 | ubicación actual del agente. Ambas propiedades tendrán el modificador de acceso protected para que puedan ser 50 | accedidas por las clases hijas. La clase `AgenteSecreto` heredará de Agente y tendrá una propiedad adicional de 51 | codigoSecreto y un método descifrarCodigo(). La clase `AgenteDoble` también heredará de Agente y tendrá una propiedad nombreAlterno y un método engañar(). Finalmente, la clase `AgenteInfiltrado` heredará de Agente y tendrá una propiedad adicional organizacion y un método filtrar(). 52 | 53 | Escribe un programa principal en Java que cree una instancia de cada clase de agente y use sus métodos para simular 54 | diferentes acciones de espionaje. Por ejemplo, podrías hacer que un agente secreto descifre un código secreto, que 55 | un agente doble engañe a dos organizaciones rivales, y que un agente infiltrado filtre información confidencial. El 56 | programa debe imprimir los valores de las propiedades y los resultados de las acciones realizadas. 57 | -------------------------------------------------------------------------------- /Unidad5/Ejemplos/Readme.md: -------------------------------------------------------------------------------- 1 | # Ejemplos Tema 5 2 | 3 | * **ejemplo01** - Protected 4 | * **ejemplo02** - Clase final 5 | * **ejemplo03** - Excepcion personalizada 6 | * **ejemplo04** - Uso del operador instanceof 7 | * **ejemplo05** - Sobreescribir metodos toString, equals, hashCode 8 | * **ejemplo06** - Una lista que contiene objetos de diferentes tipos 9 | * **ejemplo07** - Sobreescribir metodos toString, equals, hashCode 10 | * **ejemplo08** - Sobreescribir compareTo de la interfaz `Comparable` 11 | -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo01/Animal.java: -------------------------------------------------------------------------------- 1 | public class Animal { 2 | 3 | protected String nombre; 4 | protected int edad; 5 | protected boolean hambriento; 6 | 7 | public Animal(String nombre, int edad) { 8 | this.nombre = nombre; 9 | this.edad = edad; 10 | this.hambriento = true; 11 | } 12 | 13 | protected void comer() { 14 | this.hambriento = false; 15 | } 16 | 17 | protected void dormir() { 18 | 19 | } 20 | 21 | protected void mover() { 22 | 23 | } 24 | } -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo01/Perro.java: -------------------------------------------------------------------------------- 1 | public class Perro extends Animal { 2 | 3 | private String raza; 4 | 5 | public Perro(String nombre, int edad, String raza) { 6 | super(nombre, edad); 7 | this.raza = raza; 8 | } 9 | 10 | public void ladrar() { 11 | 12 | } 13 | 14 | @Override 15 | protected void comer() { 16 | 17 | } 18 | 19 | @Override 20 | protected void mover() { 21 | 22 | } 23 | 24 | public String getRaza() { 25 | return raza; 26 | } 27 | 28 | public void setRaza(String raza) { 29 | this.raza = raza; 30 | } 31 | } -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo01/Readme.md: -------------------------------------------------------------------------------- 1 | # MOdificador de acceso: Protected 2 | 3 | El modificador de acceso protected indica que los miembros y métodos de la clase 4 | son accesibles desde cualquier clase que pertenezca al mismo paquete y desde cualquier 5 | subclase que herede de la clase `Animal`. *Esto significa que, en este caso, cualquier 6 | clase que herede de Animal podría acceder a las variables y métodos protegidos 7 | de la clase.* 8 | 9 | `Perro` hereda las propiedades y métodos de la clase Animal, pero también añade su 10 | propio comportamiento y propiedades específicos de la clase Perro. -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo02/Celula.java: -------------------------------------------------------------------------------- 1 | public final class Celula { 2 | 3 | private String tipo; 4 | private int edad; 5 | private String organelos; 6 | private boolean estaViva; 7 | 8 | public Celula(String tipo, int edad, String organelos, boolean estaViva) { 9 | this.tipo = tipo; 10 | this.edad = edad; 11 | this.organelos = organelos; 12 | this.estaViva = estaViva; 13 | } 14 | 15 | public void realizarMitosis() { 16 | if (estaViva) { 17 | // La célula está realizando la mitosis 18 | } else { 19 | // La célula está muerta, no puede realizar la mitosis 20 | } 21 | } 22 | 23 | public void metabolizar() { 24 | if (estaViva) { 25 | // La célula está metabolizando 26 | } else { 27 | // La célula está muerta, no puede metabolizar 28 | } 29 | } 30 | 31 | public void morir() { 32 | estaViva = false; 33 | // La célula ha muerto 34 | } 35 | 36 | public String getTipo() { 37 | return this.tipo; 38 | } 39 | 40 | public void setTipo(String tipo) { 41 | this.tipo = tipo; 42 | } 43 | 44 | public int getEdad() { 45 | return this.edad; 46 | } 47 | 48 | public void setEdad(int edad) { 49 | this.edad = edad; 50 | } 51 | 52 | public String getOrganelos() { 53 | return this.organelos; 54 | } 55 | 56 | public void setOrganelos(String organelos) { 57 | this.organelos = organelos; 58 | } 59 | 60 | public boolean getEstaViva() { 61 | return this.estaViva; 62 | } 63 | 64 | public void setEstaViva(boolean estaViva) { 65 | this.estaViva = estaViva; 66 | } 67 | } -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo02/Readme.md: -------------------------------------------------------------------------------- 1 | # Clase final 2 | 3 | Esta clase final `Celula` representa una célula biológica y proporciona métodos 4 | para simular la mitosis, el metabolismo y la muerte de la célula. -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo03/AceitunaException.java: -------------------------------------------------------------------------------- 1 | public class AceitunaException extends Exception { 2 | public AceitunaException(String mensaje) { 3 | super(mensaje); 4 | } 5 | } -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo03/Readme.md: -------------------------------------------------------------------------------- 1 | # Excepciones personalizadas 2 | 3 | -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo03/RecogidaAceituna.java: -------------------------------------------------------------------------------- 1 | public class RecogidaAceituna { 2 | 3 | private String tipoAceituna; 4 | private int peso; 5 | private int cantidad; 6 | 7 | public RecogidaAceituna(String tipoAceituna, int peso, int cantidad) { 8 | this.tipoAceituna = tipoAceituna; 9 | this.peso = peso; 10 | this.cantidad = cantidad; 11 | } 12 | 13 | public String getTipoAceituna() { 14 | return this.tipoAceituna; 15 | } 16 | 17 | public void setTipoAceituna(String tipoAceituna) { 18 | this.tipoAceituna = tipoAceituna; 19 | } 20 | 21 | public int getPeso() { 22 | return this.peso; 23 | } 24 | 25 | public void setPeso(int peso) throws AceitunaException { 26 | if (peso < 0) { 27 | throw new AceitunaException("El peso de la aceituna no puede ser negativo"); 28 | } 29 | this.peso = peso; 30 | } 31 | 32 | public int getCantidad() { 33 | return this.cantidad; 34 | } 35 | 36 | public void setCantidad(int cantidad) { 37 | this.cantidad = cantidad; 38 | } 39 | 40 | public double calcularRendimiento() { 41 | return (double) this.peso / this.cantidad; 42 | } 43 | 44 | public double calcularValorVenta(double precioPorKilo) { 45 | return this.peso * this.precioPorKilo; 46 | } 47 | 48 | public String toString() { 49 | 50 | String aux = "Recogida de aceituna: " + tipoAceituna + ", " + cantidad 51 | + " unidades, " + peso + " kg."; 52 | 53 | return aux; 54 | } 55 | } -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo04/AvionBombardero.java: -------------------------------------------------------------------------------- 1 | public class AvionBombardero extends AvionDeCombate { 2 | private int capacidadCarga; 3 | 4 | public AvionBombardero(String modelo, int velocidadMaxima, int alcanceMaximo, int capacidadCarga) { 5 | super(modelo, velocidadMaxima, alcanceMaximo); 6 | this.capacidadCarga = capacidadCarga; 7 | } 8 | 9 | public int getCapacidadCarga() { 10 | return capacidadCarga; 11 | } 12 | 13 | public void setCapacidadCarga(int capacidadCarga) { 14 | this.capacidadCarga = capacidadCarga; 15 | } 16 | 17 | public void bombardear() { 18 | // Lanzando bombas... 19 | } 20 | } -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo04/AvionCaza.java: -------------------------------------------------------------------------------- 1 | 2 | public class AvionCaza extends AvionDeCombate { 3 | 4 | private int armamento; 5 | 6 | public AvionCaza(String modelo, int velocidadMaxima, int alcanceMaximo, int armamento) { 7 | super(modelo, velocidadMaxima, alcanceMaximo); 8 | this.armamento = armamento; 9 | } 10 | 11 | public int getArmamento() { 12 | return armamento; 13 | } 14 | 15 | public void setArmamento(int armamento) { 16 | this.armamento = armamento; 17 | } 18 | 19 | public void atacar() { 20 | // Atacando... 21 | } 22 | } -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo04/AvionDeCombate.java: -------------------------------------------------------------------------------- 1 | public class AvionDeCombate { 2 | 3 | private String modelo; 4 | private int velocidadMaxima; 5 | private int alcanceMaximo; 6 | 7 | public AvionDeCombate(String modelo, int velocidadMaxima, int alcanceMaximo) { 8 | this.modelo = modelo; 9 | this.velocidadMaxima = velocidadMaxima; 10 | this.alcanceMaximo = alcanceMaximo; 11 | } 12 | 13 | public String getModelo() { 14 | return modelo; 15 | } 16 | 17 | public void setModelo(String modelo) { 18 | this.modelo = modelo; 19 | } 20 | 21 | public int getVelocidadMaxima() { 22 | return velocidadMaxima; 23 | } 24 | 25 | public void setVelocidadMaxima(int velocidadMaxima) { 26 | this.velocidadMaxima = velocidadMaxima; 27 | } 28 | 29 | public int getAlcanceMaximo() { 30 | return alcanceMaximo; 31 | } 32 | 33 | public void setAlcanceMaximo(int alcanceMaximo) { 34 | this.alcanceMaximo = alcanceMaximo; 35 | } 36 | 37 | public void despegar() { 38 | // Despegando... 39 | } 40 | 41 | public void aterrizar() { 42 | // Aterrizando... 43 | } 44 | } -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo04/Readme.md: -------------------------------------------------------------------------------- 1 | # Uso del operador InstanceOf 2 | 3 | -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo04/SimuladorAviones.java: -------------------------------------------------------------------------------- 1 | import java.util.ArrayList; 2 | 3 | public class SimuladorAviones { 4 | 5 | public static void main(String[] args) { 6 | 7 | AvionDeCombate avion1 = new AvionDeCombate("F-16", 2400, 3000); 8 | AvionCaza avion2 = new AvionCaza("F-22", 2800, 3500, 8); 9 | AvionBombardero avion3 = new AvionBombardero("B-2", 2000, 5000, 5000); 10 | AvionCaza avion4 = new AvionCaza("MiG-29", 2400, 2500, 6); 11 | 12 | ArrayList listaAviones = new ArrayList<>(); 13 | listaAviones.add(avion1); 14 | listaAviones.add(avion2); 15 | listaAviones.add(avion3); 16 | listaAviones.add(avion4); 17 | 18 | for (AvionDeCombate avion : listaAviones) { 19 | 20 | if (avion instanceof AvionCaza) { 21 | AvionCaza caza = (AvionCaza) avion; 22 | caza.atacar(); 23 | System.out.println("Armas: " + caza.getArmamento()); 24 | } else if (avion instanceof AvionBombardero) { 25 | AvionBombardero bombardero = (AvionBombardero) avion; 26 | bombardero.bombardear(); 27 | System.out.println("Capacidad de carga: " + bombardero.getCapacidadCarga()); 28 | } 29 | 30 | avion.despegar(); 31 | avion.aterrizar(); 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo05/EjemploInsecto.java: -------------------------------------------------------------------------------- 1 | public class EjemploInsecto { 2 | 3 | public static void main(String[] args) { 4 | 5 | Insecto insecto1 = new Insecto("Abeja", "Flor", 6, "Amarillo"); 6 | Insecto insecto2 = new Insecto("Abeja", "Flor", 6, "Amarillo"); 7 | Insecto insecto3 = new Insecto("Mariquita", "Planta", 6, "Rojo"); 8 | 9 | // Usando el método toString() 10 | System.out.println(insecto1.toString()); 11 | 12 | // Usando el método equals() 13 | System.out.println(insecto1.equals(insecto2)); // Debería imprimir true 14 | System.out.println(insecto1.equals(insecto3)); // Debería imprimir false 15 | 16 | // Usando el método hashCode() 17 | System.out.println(insecto1.hashCode()); 18 | System.out.println(insecto2.hashCode()); 19 | System.out.println(insecto3.hashCode()); 20 | } 21 | } -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo05/Insecto.java: -------------------------------------------------------------------------------- 1 | public class Insecto { 2 | private String especie; 3 | private String tipoAlimentacion; 4 | private int numPatas; 5 | private String color; 6 | 7 | public Insecto(String especie, String tipoAlimentacion, int numPatas, String color) { 8 | this.especie = especie; 9 | this.tipoAlimentacion = tipoAlimentacion; 10 | this.numPatas = numPatas; 11 | this.color = color; 12 | } 13 | 14 | // Sobrescribir el método toString() 15 | @Override 16 | public String toString() { 17 | String aux = "": 18 | aux = "Insecto [especie=" + especie + ", tipoAlimentacion=" 19 | + tipoAlimentacion + ", numPatas=" + numPatas + ", color=" 20 | + color + "]"; 21 | return aux; 22 | } 23 | 24 | // Sobrescribir el método equals() 25 | @Override 26 | public boolean equals(Object obj) { 27 | 28 | if (obj == this) 29 | return true; 30 | if (!(obj instanceof Insecto)) 31 | return false; 32 | Insecto insecto = (Insecto) obj; 33 | 34 | return insecto.especie.equals(especie) && 35 | insecto.tipoAlimentacion.equals(tipoAlimentacion) && 36 | insecto.numPatas == numPatas && 37 | insecto.color.equals(color); 38 | } 39 | 40 | // Sobrescribir el método hashCode() 41 | @Override 42 | public int hashCode() { 43 | int hash = 7; 44 | hash = 31 * hash + especie.hashCode(); 45 | hash = 31 * hash + tipoAlimentacion.hashCode(); 46 | hash = 31 * hash + numPatas; 47 | hash = 31 * hash + color.hashCode(); 48 | return hash; 49 | } 50 | } -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo05/Readme.md: -------------------------------------------------------------------------------- 1 | # Sobreescribir metodos de Object 2 | 3 | -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo06/ListaObjetos.java: -------------------------------------------------------------------------------- 1 | import java.util.ArrayList; 2 | import java.util.List; 3 | 4 | public class ListaObjetos { 5 | public static void main(String[] args) { 6 | List lista = new ArrayList(); 7 | 8 | lista.add("Hola"); 9 | lista.add(123); 10 | lista.add(3.14); 11 | lista.add(true); 12 | 13 | for (Object obj : lista) { 14 | System.out.println(obj); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo06/readme.md: -------------------------------------------------------------------------------- 1 | # Ejemplo 06 2 | -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo07/Submarino.java: -------------------------------------------------------------------------------- 1 | import java.util.HashSet; 2 | import java.util.Set; 3 | 4 | public class Submarino { 5 | private String nombre; 6 | private int tripulacion; 7 | private Set armamento; 8 | 9 | public Submarino(String nombre, int tripulacion, Set armamento) { 10 | this.nombre = nombre; 11 | this.tripulacion = tripulacion; 12 | this.armamento = armamento; 13 | } 14 | 15 | // Sobrescribe el método toString para imprimir información relevante del submarino 16 | @Override 17 | public String toString() { 18 | String aux = ""; 19 | aux += "Nombre: " + this.nombre + ", Tripulación: " + this.tripulacion; 20 | for(String s : this.armamento){ 21 | aux += "\n Armamento: " + s; 22 | } 23 | 24 | return aux; 25 | } 26 | 27 | // Sobrescribe el método equals para comparar dos submarinos por sus propiedades 28 | @Override 29 | public boolean equals(Object o) { 30 | boolean resultado = false; 31 | 32 | if (o == null || getClass() != o.getClass()) { 33 | return resultado; 34 | } 35 | 36 | Submarino submarino = (Submarino) o; 37 | resultado = (tripulacion == submarino.tripulacion) && 38 | this.nombre.equals(submarino.nombre) && 39 | this.armamento.equals(submarino.armamento); 40 | 41 | return resultado; 42 | } 43 | 44 | // Sobrescribe el método hashCode para generar un código hash único para cada submarino 45 | @Override 46 | public int hashCode() { 47 | int hash; 48 | hash = 31 * (this.nombre.hashCode() + this.tripulacion + this.armamento.hashCode()) 49 | return hash; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo07/readme.md: -------------------------------------------------------------------------------- 1 | # Ejemplo 07 2 | -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo08/Abeja.java: -------------------------------------------------------------------------------- 1 | public class Abeja implements Comparable { 2 | private String nombre; 3 | private int edad; 4 | private int mielProducida; 5 | 6 | public Abeja(String nombre, int edad, int mielProducida) { 7 | this.nombre = nombre; 8 | this.edad = edad; 9 | this.mielProducida = mielProducida; 10 | } 11 | 12 | public String getNombre() { 13 | return nombre; 14 | } 15 | 16 | public int getEdad() { 17 | return edad; 18 | } 19 | 20 | public int getMielProducida() { 21 | return mielProducida; 22 | } 23 | 24 | @Override 25 | public int compareTo(Abeja otraAbeja) { 26 | // Comparar las abejas por la cantidad de miel que producen 27 | return Integer.compare(this.mielProducida, otraAbeja.mielProducida); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo08/ComparandoAbejas.java: -------------------------------------------------------------------------------- 1 | 2 | public class ComparandoAbejas { 3 | 4 | List listaAbejas = new ArrayList<>(); 5 | listaAbejas.add(new Abeja("Abeja1", 2, 20)); 6 | listaAbejas.add(new Abeja("Abeja2", 3, 15)); 7 | listaAbejas.add(new Abeja("Abeja3", 1, 25)); 8 | 9 | // ordena la lista de abejas por cantidad de miel producida 10 | Collections.sort(listaAbejas); 11 | 12 | for (Abeja abeja : listaAbejas) { 13 | System.out.println(abeja.getNombre() + " produce " 14 | + abeja.getMielProducida() 15 | + " unidades de miel."); 16 | } 17 | 18 | /** 19 | * SALIDA 20 | * 21 | * Abeja2 produce 15 unidades de miel. 22 | * Abeja1 produce 20 unidades de miel. 23 | * Abeja3 produce 25 unidades de miel. 24 | * 25 | */ 26 | 27 | } 28 | -------------------------------------------------------------------------------- /Unidad5/Ejemplos/ejemplo08/Readme.md: -------------------------------------------------------------------------------- 1 | # Ejemplo 08 2 | 3 | n este ejemplo, la clase Abeja tiene tres atributos: nombre (nombre de la abeja), edad (edad de la abeja) 4 | y mielProducida (cantidad de miel producida por la abeja). La clase implementa la interfaz Comparable con 5 | el tipo de parámetro Abeja. 6 | 7 | Luego, se sobrescribe el método compareTo, que compara dos abejas en función de la cantidad de miel producida. 8 | Este método devuelve un número negativo si la abeja actual produce menos miel que la abeja pasada como parámetro, 9 | cero si ambas producen la misma cantidad de miel y un número positivo si la abeja actual produce más miel que la 10 | otra. 11 | -------------------------------------------------------------------------------- /Unidad5/Practicas/Readme.md: -------------------------------------------------------------------------------- 1 | # Ejercicios Practicos 2 | 3 | * **practica01** - Herencia, excepcion personaliza, instanceOf -------------------------------------------------------------------------------- /Unidad5/Practicas/practica01/Coche.java: -------------------------------------------------------------------------------- 1 | package practica01; 2 | 3 | /** 4 | * Representa un módelo muy básico de un Coche en la realidad 5 | * 6 | * @author Fran 7 | * @since 19/03/2023 8 | * @version 1.0 9 | */ 10 | public class Coche { 11 | 12 | private int numeroPuertas; 13 | private String color; 14 | private String marca; 15 | private String modelo; 16 | 17 | 18 | /** 19 | * Constructor por defecto 20 | */ 21 | private Coche(){}; 22 | 23 | /** 24 | * Constructor con parámetros 25 | * 26 | * @param m Indica el módelo de un coche 27 | * @param c Representa el color de un coche 28 | * @param np Valor con el número de puerta de un coche 29 | * @param ma Marca del fabricante del vehiculo 30 | */ 31 | public Coche(String m, String c, int np, String ma) { 32 | 33 | this.numeroPuertas = np; 34 | this.color = c; 35 | this.marca = ma; 36 | this.modelo = m; 37 | } 38 | 39 | /** 40 | * Consulta la cantidad de puertas del coche 41 | * 42 | * @return número de puertas 43 | */ 44 | public int getNumeroPuertas() { 45 | 46 | return this.numeroPuertas; 47 | 48 | } 49 | 50 | /** 51 | * Consulta el color del coche 52 | * 53 | * @return cadena de texto con el color 54 | */ 55 | public String getColor() { 56 | 57 | return this.color; 58 | 59 | } 60 | 61 | /** 62 | * Consulta la marca del fabricante 63 | * 64 | * @return cadena de texto con la marca 65 | */ 66 | public String getMarca() { 67 | 68 | return this.marca; 69 | 70 | } 71 | 72 | /** 73 | * Consulta el modelo del fabricante 74 | * 75 | * @return cadena de texto que contiene el fabricante 76 | */ 77 | public String getModelo() { 78 | 79 | return this.modelo; 80 | 81 | } 82 | 83 | /** 84 | * Asigna la cantidad de puertas del coche 85 | * 86 | * @param np número de puertas 87 | */ 88 | public void setNumeroPuertas(int np) { 89 | 90 | this.numeroPuertas = np; 91 | 92 | } 93 | 94 | /** 95 | * Establece el color del coche 96 | * 97 | * @param color valor para el color de la parte exterior del coche 98 | */ 99 | public void setColor(String color) { 100 | 101 | this.color = color; 102 | 103 | } 104 | 105 | /** 106 | * Establece la marca del coche 107 | * 108 | * @param marca valor para la marca del coche 109 | */ 110 | public void setMarca(String marca) { 111 | 112 | this.marca = marca; 113 | 114 | } 115 | 116 | /** 117 | * Define el modelo del coche 118 | * 119 | * @param modelo valor para el modelo del coche 120 | */ 121 | public void setModelo(String modelo) { 122 | 123 | this.modelo = modelo; 124 | 125 | } 126 | 127 | 128 | /** 129 | * Simula el proceso de arranque del motor de un coche 130 | * 131 | * @return cadena de texto con información sobre el estado 132 | */ 133 | public String arrancar() { 134 | 135 | String aux= ""; 136 | 137 | aux += "Arrancando el motor..."; 138 | 139 | return aux; 140 | } 141 | 142 | /** 143 | * Simula el proceso de aceleración 144 | * 145 | * @return cadena de texto con información sobre el estado 146 | */ 147 | public String acelerar() { 148 | String aux= ""; 149 | 150 | aux += "Acelerando..."; 151 | 152 | return aux; 153 | } 154 | 155 | /** 156 | * Simula el proceso de frenado de un coche 157 | * 158 | * @return cadena de texto con información sobre el estado 159 | */ 160 | public String frenar() { 161 | 162 | String aux= ""; 163 | 164 | aux += "Frenando..."; 165 | 166 | return aux; 167 | } 168 | 169 | /** 170 | * Simula el proceso de parada del motor de un coche 171 | * 172 | * @return cadena de texto con información sobre el estado 173 | */ 174 | public String parar() { 175 | 176 | String aux= ""; 177 | 178 | aux += "Parando el motor..."; 179 | 180 | return aux; 181 | } 182 | 183 | /** 184 | * Muestra información detallada sobre la clase 185 | * 186 | * @return cadena de texto con los datos del coche 187 | */ 188 | @Override 189 | public String toString(){ 190 | 191 | String aux = ""; 192 | 193 | aux += "Marca: " + this.getMarca(); 194 | aux += "\nModelo: " + this.getModelo(); 195 | aux += "\nColor: " + this.getColor(); 196 | aux += "\nNúmero de puertas: " + this.getNumeroPuertas(); 197 | 198 | return aux; 199 | 200 | } 201 | } -------------------------------------------------------------------------------- /Unidad5/Practicas/practica01/Principal.java: -------------------------------------------------------------------------------- 1 | package practica01; 2 | 3 | import java.util.List; 4 | import java.util.ArrayList; 5 | import java.util.logging.Level; 6 | import java.util.logging.Logger; 7 | 8 | // Al estar las clases en el mismo paquete no es necesario importarlas 9 | 10 | /** 11 | * Ejemplo de uso de las clase Coche, Procesador y ProcesadoException 12 | * 13 | * @author Fran 14 | * @since 19/03/2023 15 | * @version 1.0 16 | * @see Clase Coche, Procesador y ProcesadorException 17 | */ 18 | public class Principal { 19 | 20 | public static void main(String[] args) { 21 | 22 | final Logger LOGGER = Logger.getLogger(""); 23 | 24 | Coche c1 = new Coche("ALHAMBRA", "Rojo", 5, "SEAT"); 25 | Coche c2 = new Coche("C2", "Verde", 3, "CITROEN"); 26 | Coche c3 = new Coche("MOKKA-e", "Azul", 5, "OPEL"); 27 | 28 | List objetos = new ArrayList(); 29 | List enterosProcesados = new ArrayList(); 30 | Procesador pro1 = new Procesador(); 31 | Procesador pro2 = new Procesador(); 32 | 33 | LOGGER.log(Level.INFO, "---> COCHE <---"); 34 | 35 | System.out.println(c1.arrancar()); 36 | System.out.println(c1.acelerar()); 37 | System.out.println(c1.frenar()); 38 | System.out.println(c1.parar()); 39 | System.out.println(c1); 40 | 41 | LOGGER.log(Level.INFO, "---> PROCESADOR <---"); 42 | 43 | objetos.add(120); 44 | objetos.add("Esto es una cadena de texto"); 45 | objetos.add(c2); 46 | objetos.add(c3); 47 | 48 | try { 49 | 50 | enterosProcesados = pro1.procesar(objetos); 51 | 52 | } catch (ProcesadorException pe) { 53 | 54 | System.out.println(pe.getClass() + " :: " + pe.getMessage()); 55 | // pe.printStackTrace(); 56 | 57 | } finally { 58 | 59 | System.out.println("[VÁLIDOS]: " + enterosProcesados.size() 60 | + " enteros procesados."); 61 | } 62 | 63 | objetos.add(Math.PI); // double, para provocar la excepcion 64 | enterosProcesados.clear(); 65 | 66 | System.out.println("Clase Procesador: " + pro2.totalInstancias() 67 | + " instancia/s"); // Procesador.totalInstancias(); 68 | 69 | try { 70 | 71 | enterosProcesados = pro2.procesar(objetos); 72 | 73 | } catch (ProcesadorException pe) { 74 | 75 | System.out.println(pe.getClass() + " :: " + pe.getMessage() 76 | + " :: " + enterosProcesados.size() 77 | + " enteros procesados"); 78 | } 79 | 80 | } // Main-End 81 | 82 | } // Class-End -------------------------------------------------------------------------------- /Unidad5/Practicas/practica01/Procesador.java: -------------------------------------------------------------------------------- 1 | package practica01; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | /** 7 | * Describe un módelo encargado de procesar diferentes tipos de dato 8 | * 9 | * @author Fran 10 | * @since 19/03/2023 11 | * @version 1.0 12 | * @see ProcesadorException 13 | */ 14 | public class Procesador { 15 | 16 | public static int totalProcesados = 0; 17 | 18 | 19 | /** 20 | * Constructor por defecto 21 | */ 22 | public Procesador(){ 23 | 24 | Procesador.totalProcesados++; 25 | 26 | } 27 | 28 | /** 29 | * Obtiene la longitud de un tipo de dato cadena de caracteres 30 | * 31 | * @param cadena conjunto de caracteres que va a ser procesado 32 | * @return número de caracteres de la cadena de texto 33 | */ 34 | private int procesarCadena(String cadena) { 35 | 36 | return cadena.length(); 37 | 38 | } 39 | 40 | /** 41 | * Obtiene el valor exacto de un tipo de dato entero 42 | * 43 | * @param entero valor entero que va a ser procesado 44 | * @return valor de un tipo de dato entero 45 | */ 46 | private int procesarInteger(int entero) { 47 | 48 | return entero; 49 | 50 | } 51 | 52 | /** 53 | * Consulta el número de puertas de un coche 54 | * 55 | * @param coche objeto que se va a procesar 56 | * @return número de puertas 57 | */ 58 | private int procesarCoche(Coche coche) { 59 | 60 | return coche.getNumeroPuertas(); 61 | 62 | } 63 | 64 | /** 65 | * Recoge información sobre diferentes tipos de dato 66 | * @param elementos lista de objetos que se van a procesar 67 | * @return lista de tipos de dato entero que han sido tratados 68 | * @throws ProcesadorException Es lanzada cuando un tipo de dato no es admitido 69 | */ 70 | public List procesar(List elementos) 71 | throws ProcesadorException { 72 | 73 | List enteros = new ArrayList(); 74 | 75 | for (Object tipo : elementos) { 76 | 77 | if (tipo instanceof String) { 78 | 79 | enteros.add(this.procesarCadena((String) tipo)); 80 | 81 | } else if (tipo instanceof Integer) { 82 | 83 | enteros.add(this.procesarInteger((Integer) tipo)); 84 | 85 | } else if (tipo instanceof Coche ) { 86 | 87 | enteros.add(this.procesarCoche((Coche) tipo)); 88 | 89 | } else { 90 | 91 | throw new ProcesadorException("Tipo de dato NO válido"); 92 | } 93 | } 94 | 95 | return enteros; 96 | } 97 | 98 | /** 99 | * Consulta la cantidad de instancias que se han creado 100 | * 101 | * @return total de instancias creadas 102 | */ 103 | public static int totalInstancias(){ 104 | 105 | return Procesador.totalProcesados; 106 | 107 | } 108 | } -------------------------------------------------------------------------------- /Unidad5/Practicas/practica01/ProcesadorException.java: -------------------------------------------------------------------------------- 1 | package practica01; 2 | 3 | /** 4 | * Representa una excepción personalizada 5 | * 6 | * @author Fran 7 | * @since 18/03/2023 8 | * @version 1.0 9 | * @see Clase Procesador 10 | */ 11 | public class ProcesadorException extends Exception { 12 | 13 | /** 14 | * Constructor por defecto 15 | */ 16 | private ProcesadorException(){} 17 | 18 | /** 19 | * Constructor con parámetros 20 | * 21 | * @param mensaje información sobre el motivo de la excepción 22 | */ 23 | public ProcesadorException(String mensaje){ 24 | 25 | super(mensaje); 26 | } 27 | } -------------------------------------------------------------------------------- /Unidad5/Practicas/practica01/readme.md: -------------------------------------------------------------------------------- 1 | # Practica 01 2 | 3 | Herencia, Excepciones personalizas, operador instanceOf -------------------------------------------------------------------------------- /Unidad5/Practicas/practica02/Diagrama.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/franlu/Programacion/f50f95e536cfd19ca4bf2f0f28d6bec4b21141d0/Unidad5/Practicas/practica02/Diagrama.png -------------------------------------------------------------------------------- /Unidad5/Practicas/practica02/EmpresaPaqueteria.java: -------------------------------------------------------------------------------- 1 | package examen; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Define los requisitos que tiene que tener una clase para ser considerada 7 | * una empresa de paquetería. 8 | * 9 | * @author Fran 10 | * @since 21/03/2023 11 | * @version 1.0 12 | * @see Paquete, Transportista 13 | */ 14 | public interface EmpresaPaqueteria { 15 | 16 | /** 17 | * Aceptar pedido y asignar un repartidor 18 | * 19 | * @param p el paquete que va a ser registrado 20 | */ 21 | public void registrarPedido(Paquete p); 22 | 23 | /** 24 | * Consulta los transportista que trabajan para la empresa. 25 | * 26 | * @return List lista de transportistas 27 | */ 28 | public List getTransportistas(); 29 | 30 | /** 31 | * Enviar paquetes a su destino. 32 | */ 33 | public default void enviarPaquetes(){} 34 | } -------------------------------------------------------------------------------- /Unidad5/Practicas/practica02/Paquete.java: -------------------------------------------------------------------------------- 1 | package examen; 2 | 3 | import java.util.Objects; 4 | 5 | /** 6 | * Representa el módelo de un paquete que será gestionado por un empresa de 7 | * transporte. 8 | * 9 | * @author Fran 10 | * @since 21/03/2023 11 | * @version 1.0 12 | * @see java.lang.object, java.lang.comparable 13 | */ 14 | public class Paquete implements Comparable { 15 | 16 | public final static int ALTA = 1; 17 | public final static int MEDIA = 2; 18 | public final static int BAJA = 3; 19 | 20 | private String producto; 21 | private String direccionDestino; 22 | private int prioridad; 23 | 24 | /** 25 | * Contructor por defecto. 26 | */ 27 | private Paquete(){} 28 | 29 | 30 | /** 31 | * Constructor con parámetros 32 | * 33 | * @param pro descripción del producto 34 | * @param dd dirección de destino 35 | * @param pri nivel de prioridad 36 | * @throws IllegalArgumentException Se lanza cuando el nivel 37 | * de prioridad no es válido (1,2 y 3 son niveles válidos) 38 | */ 39 | public Paquete(String pro, String dd, int pri) throws IllegalArgumentException{ 40 | 41 | if (pri <= Paquete.BAJA && pri >= Paquete.ALTA) 42 | this.prioridad = pri; 43 | else 44 | throw new IllegalArgumentException("El nivel de prioridad no es válido"); 45 | 46 | this.producto = pro; 47 | this.direccionDestino = dd; 48 | 49 | } 50 | 51 | /** 52 | * Obtener el producto que contiene el paquete 53 | * 54 | * @return String descripción del producto 55 | */ 56 | public String getProducto(){ 57 | 58 | return this.producto; 59 | 60 | } 61 | 62 | /** 63 | * Consultar la dirección de destino 64 | * 65 | * @return String dirección 66 | */ 67 | public String getDireccion(){ 68 | 69 | return this.direccionDestino; 70 | 71 | } 72 | 73 | /** 74 | * Consultar prioridad de entrega 75 | * 76 | * @return int nivel de prioridad 77 | */ 78 | public int getPrioridad(){ 79 | 80 | return this.prioridad; 81 | 82 | } 83 | 84 | /** 85 | * Establecer la descripción del producto 86 | * 87 | * @param pro descripción del producto 88 | */ 89 | public void setProducto(String pro){ 90 | 91 | this.producto = pro; 92 | 93 | } 94 | 95 | /** 96 | * Asignar la dirección de destino 97 | * 98 | * @param dd dirección de destino 99 | */ 100 | public void setDireccion(String dd){ 101 | 102 | this.direccionDestino = dd; 103 | 104 | } 105 | 106 | /** 107 | * Fijar la prioridad de envio 108 | * 109 | * @param pri nivel de prioridad 110 | */ 111 | public void setPrioridad(int pri){ 112 | 113 | this.prioridad = pri; 114 | 115 | } 116 | 117 | /** 118 | * Comparar un paquete en función del nivel de prioridad 119 | * 120 | * @param p paquete con el que comparar la prioridad 121 | * @return
    122 | *
  • Entero negativo en caso de que el objeto tenga menor prioridad
  • 123 | *
  • 0 en caso de tener el mismo nivel de prioridad
  • 124 | *
  • Entero positivo en caso de que el objeto tenga mayor prioridad
  • 125 | *
126 | */ 127 | @Override 128 | public int compareTo(Paquete p){ 129 | 130 | int diferencia = 0; 131 | 132 | diferencia = Integer.compare(this.prioridad, p.getPrioridad()); 133 | 134 | return diferencia; 135 | 136 | } 137 | 138 | /** 139 | * Comprobar si dos objetos son iguales. Generado automáticamente por el IDE. 140 | * 141 | * @param obj objeto a comparar 142 | * @return
    143 | *
  • true los objetos son iguales
  • 144 | *
  • false los objetos son distintos
  • 145 | *
146 | */ 147 | @Override 148 | public boolean equals(Object obj) { 149 | 150 | if (this == obj) { 151 | return true; 152 | } 153 | if (obj == null) { 154 | return false; 155 | } 156 | if (getClass() != obj.getClass()) { 157 | return false; 158 | } 159 | final Paquete other = (Paquete) obj; 160 | if (!Objects.equals(this.producto, other.producto)) { 161 | return false; 162 | } 163 | 164 | return Objects.equals(this.direccionDestino, other.direccionDestino); 165 | } 166 | 167 | /** 168 | * Crear un código para identificar al objeto. Generado automáticamente por el IDE. 169 | * 170 | * @return int código hash del objeto 171 | */ 172 | @Override 173 | public int hashCode() { 174 | 175 | int hash = 7; 176 | 177 | hash = 71 * hash + Objects.hashCode(this.producto); 178 | hash = 71 * hash + Objects.hashCode(this.direccionDestino); 179 | hash = 71 * hash + this.prioridad; 180 | 181 | return hash; 182 | } 183 | 184 | /** 185 | * Muestra información detallada sobre la clase 186 | * 187 | * @return cadena de texto con los datos del paquete 188 | */ 189 | @Override 190 | public String toString(){ 191 | 192 | String aux = ""; 193 | 194 | aux += "\nProducto: " + this.getProducto(); 195 | aux += "\nDirección de Destino: " + this.getDireccion(); 196 | aux += "\nPrioridad: " + this.getPrioridad(); 197 | 198 | return aux; 199 | } 200 | 201 | } -------------------------------------------------------------------------------- /Unidad5/Practicas/practica02/Principal.java: -------------------------------------------------------------------------------- 1 | package examen; 2 | 3 | /** 4 | * Ejemplo de uso de las clase Paquete, Transportista, TransportistaOrdenado 5 | * 6 | * @author Fran 7 | * @since 21/03/2023 8 | * @version 1.0 9 | * @see Paquete, Transportista, TransportistaOrdenado 10 | */ 11 | public class Principal { 12 | 13 | public static void main(String[] args) { 14 | 15 | Paquete amazon, libreria, dgt; 16 | Transportista ups; 17 | TransportistaOrdenado fedex; 18 | 19 | amazon = new Paquete( 20 | "Logitech K120 Teclado", 21 | "C/Ancha, 14", 22 | 1); 23 | 24 | libreria = new Paquete( 25 | "El libro de la biología", 26 | "Av. de la innovación, 1", 27 | 3); 28 | 29 | try { 30 | 31 | dgt = new Paquete( 32 | "Carta Certificada", 33 | "C/de la colcha, 10", 34 | -1); // lanza excepcion 35 | 36 | } catch (IllegalArgumentException ia){ 37 | 38 | System.out.println("EXCEPCIÓN :: " + ia.getMessage() + " ::"); 39 | 40 | } 41 | 42 | System.out.println( 43 | "El paquete de amazon y el de la libreria son: "); 44 | 45 | if (amazon.equals(libreria)) 46 | System.out.print("iguales."); 47 | else 48 | System.out.print("diferentes."); 49 | 50 | 51 | 52 | // intrducir un tiempo de entrega pequeño para hacer las pruebas. 53 | ups.subirCamion(amazon); 54 | ups.subirCamion(libreria); 55 | 56 | System.out.println("\nTransportista: "); 57 | System.out.println(ups); // toString de Transportista 58 | 59 | ups.enviar(); 60 | 61 | fedex.subirCamion(amazon); 62 | fedex.subirCamion(libreria); 63 | 64 | 65 | fedex.enviar(); 66 | 67 | System.out.println("\nPAQUETES ENTREGADOS :-) 68 | 69 | } 70 | -------------------------------------------------------------------------------- /Unidad5/Practicas/practica02/Transportista.java: -------------------------------------------------------------------------------- 1 | 2 | package examen; 3 | 4 | import java.time.Duration; 5 | import java.time.Instant; 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | /** 10 | * Representa una persona que puede enviar un paquete a su destino. 11 | * 12 | * @author Fran 13 | * @since 21/03/2023 14 | * @version 1.0 15 | */ 16 | public class Transportista { 17 | 18 | private List paquetes; 19 | private long tiempoEntrega; // expresado en minutos 20 | 21 | /** 22 | * Constructor por defecto 23 | */ 24 | private Transportista(){} 25 | 26 | /** 27 | * Constructor con parámetros 28 | * 29 | * @param te cantidad de tiempo que se tarda en entregar un paquete. 30 | * Se expresa en minutos. 31 | */ 32 | public Transportista(long te){ 33 | 34 | this.tiempoEntrega = te; 35 | paquetes = new ArrayList(); 36 | 37 | } 38 | 39 | /** 40 | * Obtener los paquetes del transportista 41 | * 42 | * @return List conjunto de paquetes a repartir 43 | */ 44 | public List getPaquetes() { 45 | 46 | return this.paquetes; 47 | 48 | } 49 | 50 | /** 51 | * Recuperar el tiempo de entrega que tiene el transportista 52 | * 53 | * @return long duranción del envio de un paquete 54 | */ 55 | public long getTiempoEntrega() { 56 | 57 | return this.tiempoEntrega; 58 | 59 | } 60 | 61 | /** 62 | * Asignar una lista de paquetes al trasportista 63 | * 64 | * @param paquetes paquetes que se trendran que repartir 65 | */ 66 | public void setPaquetes(List paquetes) { 67 | 68 | this.paquetes = paquetes; 69 | 70 | } 71 | 72 | /** 73 | * Establecer el tiempo que tarda en hacer la entrega 74 | * 75 | * @param tiempoEntrega 76 | */ 77 | public void setTiempoEntrega(long tiempoEntrega) { 78 | 79 | this.tiempoEntrega = tiempoEntrega; 80 | 81 | } 82 | 83 | /** 84 | * Añadir un paquete al camión del transportista. 85 | * 86 | * @param p paquete que va a ser enviado 87 | */ 88 | public void subirCamion(Paquete p){ 89 | 90 | this.paquetes.add(p); 91 | 92 | } 93 | 94 | /** 95 | * Simular el envio de una lista de paquetes a su destino. 96 | */ 97 | public void enviar(){ 98 | 99 | Instant inicioEnvio, enReparto; 100 | Duration d; 101 | 102 | System.out.println("\nEntregando paquetes..."); 103 | 104 | for ( Paquete p : this.paquetes){ 105 | 106 | inicioEnvio = Instant.now(); 107 | 108 | do { 109 | 110 | enReparto = Instant.now(); 111 | d = Duration.between(inicioEnvio, enReparto); 112 | 113 | } while(d.getSeconds() <= this.tiempoEntrega * 60); 114 | 115 | System.out.println(p); // toString 116 | } 117 | 118 | this.paquetes.clear(); 119 | 120 | } 121 | 122 | /** 123 | * Muestra información detallada sobre la clase 124 | * 125 | * @return cadena de texto con los datos del transportista 126 | */ 127 | @Override 128 | public String toString(){ 129 | 130 | String aux=""; 131 | 132 | aux += "Tiempo de entrega: " + this.getTiempoEntrega(); 133 | 134 | for (Paquete p : this.getPaquetes()) 135 | 136 | aux += "\n" + p.toString(); 137 | 138 | return aux; 139 | } 140 | } 141 | -------------------------------------------------------------------------------- /Unidad5/Practicas/practica02/TrasportistaOrdenado.java: -------------------------------------------------------------------------------- 1 | package examen; 2 | 3 | import java.util.Collections; 4 | 5 | /** 6 | * Representa una entidad encargada de gestionar envios ordenados a través de paquetes. 7 | 8 | * 9 | * @author Fran 10 | * @since 21/03/2023 11 | * @version 1.0 12 | * @see Transportista 13 | */ 14 | public class TransportistaOrdenado extends Transportista { 15 | 16 | /** 17 | * Constructro con parámetros 18 | * 19 | * @param te tiempo de entrega 20 | */ 21 | public TransportistaOrdenado(long te) { 22 | 23 | super(te); 24 | 25 | } 26 | 27 | /** 28 | * Añadir un paquete al camión del transportista. 29 | * 30 | * @param p paquete que va a ser enviado 31 | */ 32 | @Override 33 | public void subirCamion(Paquete p) { 34 | 35 | super.subirCamion(p); 36 | 37 | } 38 | 39 | /** 40 | * Simular el envio de una lista ordenada de paquetes a su destino. 41 | */ 42 | @Override 43 | public void enviar() { 44 | 45 | Collections.sort(super.getPaquetes()); 46 | super.enviar(); 47 | } 48 | } 49 | 50 | -------------------------------------------------------------------------------- /Unidad5/Practicas/practica02/readme.md: -------------------------------------------------------------------------------- 1 | # Practica 02 2 | 3 | Prueba práctica -------------------------------------------------------------------------------- /Unidad5/README.md: -------------------------------------------------------------------------------- 1 | Unidad 05 2 | ====== 3 | 4 | 5 | 6 | 7 | 8 | ##### Recursos 9 | 10 | -------------------------------------------------------------------------------- /cositas.md: -------------------------------------------------------------------------------- 1 | ### :book: Cositas interesantes 2 | 3 | * [Guia de estilo para Java de Google](https://google.github.io/styleguide/javaguide.html) 4 | * [2022-Octubre - Informe Desarrolladores](https://www.getmanfred.com/es/developer-career-report) 5 | * [Zeal docs](https://zealdocs.org/) 6 | 7 | ### :tv: Twitch 8 | 9 | * [midudev](https://www.twitch.tv/midudev) 10 | 11 | 12 | ### Varios 13 | 14 | * [Emojis Github](https://gist.github.com/rxaviers/7360908) 15 | -------------------------------------------------------------------------------- /queridos-alumnos.md: -------------------------------------------------------------------------------- 1 | ### Usuarios Github 2 | ---- 3 | * Fran (profe) :point_up: - [franlu](https://github.com/franlu). 4 | * Manuel - [mromrey587](https://github.com/mromrey587/1-GSDAM-Programacion). 5 | * Iván Darío - [IvanParra12](https://github.com/IvanParra12/1DAM-Programacion) - [ivan-parra](https://stackoverflow.com/users/20324559/ivan-parra) 6 | * Sergio - [Serhi0](https://github.com/Serhi0) - [Sergio](https://es.stackoverflow.com/users/309792/sergio) 7 | * Kevin - [REXVIN1](https://github.com/REXVIN1) 8 | * Denis - [HiIMDenis](https://github.com/HiIMDenis) [denis](https://stackoverflow.com/users/20324506/denis) 9 | * Iván - [ICasGar](https://github.com/ICasGar) 10 | * Romeo - [romejp451](https://github.com/romejp451) - [romejp451](https://es.stackoverflow.com/users/308508/romejp451) 11 | * javier - [javiergranizoaguilar](https://github.com/javiergranizoaguilar) [javo-5](https://stackoverflow.com/users/20324508/javo-5) 12 | * Gabriel - [ghidqui13](https://github.com/ghidqui13/1DAM-Programacion) 13 | * Oussama - [Usama2004](https://github.com/Usama2004) [oussama-ed-dahabi](https://stackoverflow.com/users/20324541/oussama-ed-dahabi) 14 | * David - [daviiidleon](https://github.com/daviiidleon) [daviiidleon](https://es.stackoverflow.com/users/308511/daviiidleon) 15 | * Sergio T - [DidelfoUwU](https://github.com/didelfouwu) - [DidelfoUwU](https://es.stackoverflow.com/users/308507/didelfouwu) 16 | * Antonio - [Antonioquiros](https://github.com/Antonioquiros) 17 | * Luis - [luislopez229](https://github.com/luislopez229) 18 | * Álvaro - [ajimz12](https://github.com/ajimz12) - [ajimz12](https://stackoverflow.com/users/20479567/%c3%81lvaro) 19 | * Emilio - [EMILIOJFDEZ](https://github.com/EMILIOJFDEZ) 20 | --------------------------------------------------------------------------------