diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..a0ccf77 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Environment-dependent path to Maven home directory +/mavenHomeManager.xml diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..89ee753 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..4c16148 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/basic/c00_helloworld/HelloWorldExercises.java b/basic/c00_helloworld/HelloWorldExercises.java index 4320c75..bdf2471 100644 --- a/basic/c00_helloworld/HelloWorldExercises.java +++ b/basic/c00_helloworld/HelloWorldExercises.java @@ -10,21 +10,36 @@ public class HelloWorldExercises { public static void main(String[] args) { // 1. Imprime un mensaje que diga tu nombre en lugar de "¡Hola Mundo!". - + System.out.println("Sergio"); // 2. Imprime dos líneas: "Hola" y luego "Mundo" con un solo println. - + System.out.println("Hola" + " Mundo"); // 3. Añade un comentario sobre lo que hace cada línea del programa. // 4. Crea un comentario en varias líneas. + /* + Este es un comentario + de varias líneas. + Puedes escribir tantas líneas como quieras, + y eteteetteeteteteetetetetet + */ // 5. Imprime tu edad, tu color favorito y tu ciudad. - + String color = "azul"; + String ciudad = "León"; + System.out.println("Color: " + color + ", Ciudad: " + ciudad); // 6. Explora los diferentes System.XXX.println(); más allá de "out". // 7. Utiliza varios println para imprimir una frase. - + System.out.println("Java es un lenguaje"); + System.out.println("de programación"); + System.out.println("orientado a objetos."); + System.out.println("¡Es muy poderoso!"); // 8. Imprime un diseño ASCII (por ejemplo, una cara feliz usando símbolos). - + System.out.println(" ***** "); + System.out.println(" * * "); + System.out.println("(* ^ ^ *)"); + System.out.println(" \\ / "); + System.out.println(" \\_/ "); // 9. Intenta ejecutar el programa sin el método main y observa el error. //10. Intenta cambiar el nombre del archivo a uno diferente del de la clase y compílalo. ¿Qué pasa? diff --git a/basic/c01_beginner/BeginnerExercises.java b/basic/c01_beginner/BeginnerExercises.java index adfb0c8..b89b319 100644 --- a/basic/c01_beginner/BeginnerExercises.java +++ b/basic/c01_beginner/BeginnerExercises.java @@ -10,23 +10,46 @@ public class BeginnerExercises { public static void main(String[] args) { // 1. Declara una variable de tipo String y asígnale tu nombre. + String name = "Sergio"; + System.out.println(name); // 2. Crea una variable de tipo int y asígnale tu edad. + int edad = 32; + System.out.println(edad); // 3. Crea una variable double con tu altura en metros. + double altura = 1.2; + System.out.println(altura); // 4. Declara una variable de tipo boolean que indique si te gusta programar. + boolean verdad = true; + System.out.println("¿Te gusta programar? " + verdad); // 5. Declara una constante con tu email. + final String EMAIL = "Sergiohernandez@hotmail.com"; + System.out.println(EMAIL); // 6. Crea una variable de tipo char y guárdale tu inicial. + char inicial = 'S'; + System.out.println(inicial); // 7. Declara una variable de tipo String con tu localidad, y a continuación cambia su valor y vuelve a imprimirla. + String localidad = "Valdemoro"; + localidad = "Aranjuez"; + System.out.println(localidad); // 8. Crea una variable int llamada a, otra b, e imprime la suma de ambas. + int a = 1; + int b = 2; + System.out.println(a + b); // 9. Imprime el tipo de dos variables creadas anteriormente. + System.out.println("Tipo de la variable 'name': " + name.getClass().getSimpleName()); + System.out.println("Tipo de la variable 'edad': " + ((Object)edad).getClass().getSimpleName()); // 10. Intenta declarar una variable sin inicializarla y luego asígnale un valor antes de imprimirla. + String Comida; + Comida = "Arroz"; + System.out.println(Comida); } } diff --git a/basic/c02_operators/OperatorsExercises.java b/basic/c02_operators/OperatorsExercises.java index cd789db..98d4637 100644 --- a/basic/c02_operators/OperatorsExercises.java +++ b/basic/c02_operators/OperatorsExercises.java @@ -10,23 +10,50 @@ public class OperatorsExercises { public static void main(String[] args) { // 1. Crea una variable con el resultado de cada operación aritmética. - + int a = 1; + int b = 2; + int resultado = a + b; + System.out.println(resultado); // 2. Crea una variable para cada tipo de operación de asignación. - + a = b; + System.out.println(a); + a = b * 2; + System.out.println(a); + a += 2; + System.out.println(a); + a -= 2; + System.out.println(a); + a *= 2; + System.out.println(a); + a /= 2; + System.out.println(a); + a %= 2; + System.out.println(a); // 3. Imprime 3 comparaciones verdaderas con diferentes operadores de comparación. - + System.out.println(1 < 2 && 2 < 3); + System.out.println(2 < 2 || 2 < 3); + System.out.println(!(2 < 2) || 2 < 3); // 4. Imprime 3 comparaciones falsas con diferentes operadores de comparación. - + System.out.println(2 < 2 && 2 < 3); + System.out.println(2 < 2 || 3 < 3); + System.out.println(!(2 < 2) && 2 < 2); // 5. Utiliza el operador lógico and. - + System.out.println( 2 == 2 && 3 < 1); // 6. Utiliza el operador lógico or. - + System.out.println( 2 == 2 || 3 < 1); // 7. Combina ambos operadores lógicos. - + System.out.println((2 == 2 && 3 < 1) || ( 2 == 2 || 3 < 1)); // 8. Añade alguna negación. - + System.out.println(!(2 < 2) || 2 < 3); // 9. Imprime 3 ejemplos de uso de operadores unarios. - + System.out.println(b); + System.out.println(b++); + System.out.println(b); + System.out.println(b--); + System.out.println(b); + System.out.println(++b); // 10. Combina operadores aritméticos, de comparación y lógicos. + System.out.println( ((2 + 3) * 2 > 8) && (10 / 2 == 5) ); + } } diff --git a/basic/c03_strings/StringsExercises.java b/basic/c03_strings/StringsExercises.java index eaad49a..34ce5b4 100644 --- a/basic/c03_strings/StringsExercises.java +++ b/basic/c03_strings/StringsExercises.java @@ -10,23 +10,39 @@ public class StringsExercises { public static void main(String[] args) { // 1. Concatena dos cadenas de texto. - + String name = "Sergio"; + String surname = "Garcia"; + String fullname = name + " " + surname; + System.out.println(fullname); // 2. Muestra la longitud de una cadena de texto. - + var longitud = fullname.length(); + System.out.println(longitud); // 3. Muestra el primer y último carácter de un string. - + var caracter = "" + name.charAt(0) + name.charAt(name.length() - 1); + System.out.println("Primer y último carácter: " + caracter); // 4. Convierte a mayúsculas y minúsculas un string. - + var mayusculas = name.toUpperCase(); + System.out.println(mayusculas); + var minusculas = name.toLowerCase(); + System.out.println(minusculas); // 5. Comprueba si una cadena de texto contiene una palabra concreta. - + var content = name.contains("S"); + System.out.println(content); // 6. Formatea un string con un entero. - + int age = 32; + var stringFormat = String.format(" Mi nombre es %s y mi edad es de %d años ", name, age); + System.out.println(stringFormat); // 7. Elimina los espacios en blanco al principio y final de un string. - + System.out.println(" Esta frase es para quitar los espacios ".trim()); // 8. Sustituye todos los espacios en blanco de un string por un guión (-). - + System.out.println(" Esta frase es para quitar los espacios ".trim().replace(" ", "-")); // 9. Comprueba si dos strings son iguales. - + System.out.println(name.equals(surname)); // 10. Comprueba si dos strings tienen la misma longitud. + if (name.length() == surname.length()) { + System.out.println("Tienen la misma longitud"); + } else { + System.out.println("No tienen la misma longitud"); + } } } diff --git a/basic/c04_conditionals/ConditionalsExercises.java b/basic/c04_conditionals/ConditionalsExercises.java index d2f8cf2..116f995 100644 --- a/basic/c04_conditionals/ConditionalsExercises.java +++ b/basic/c04_conditionals/ConditionalsExercises.java @@ -10,24 +10,108 @@ public class ConditionalsExercises { public static void main(String[] args) { // 1. Establece la edad de un usuario y muestra si puede votar (mayor o igual a 18). - + int age = 32; + if (age < 18) { + System.out.println("No puede votar"); + } else if (age >= 18) { + System.out.println("Puede votar"); + } // 2. Declara dos números y muestra cuál es mayor, o si son iguales. - + int numero1 = 2; + int numero2 = 3; + if (numero1 < numero2) { + System.out.println("numero2 es mayor a numero1"); + } else if (numero1 > numero2) { + System.out.println("numero2 es menor a numero1"); + } else { + System.out.println("numero2 es igual a numero1"); + } // 3. Dado un número, verifica si es positivo, negativo o cero. - + int number = 4; + if ( number < 0) { + System.out.println("El numero es negativo"); + } else if (number > 0) { + System.out.println("El numero es positivo"); + } else { + System.out.println("El numero es cero"); + } // 4. Crea un programa que diga si un número es par o impar. - + if ( number % 2 == 0 ) { + System.out.println("El numero es par"); + } else { + System.out.println("El numero es impar"); + } // 5. Verifica si un número está en el rango de 1 a 100. - + if (number >= 1 && number <= 100) { + System.out.println("El numero esta en el rango del 1 al 100"); + } else { + System.out.println("El numero no esta en el rango del 1 al 100"); + } // 6. Declara una variable con el día de la semana (1-7) y muestra su nombre con switch. - + int day = 2; + switch (day) { + case 1: + System.out.println("Lunes"); + break; + case 2: + System.out.println("Martes"); + break; + case 3: + System.out.println("Miércoles"); + break; + case 4: + System.out.println("Jueves"); + break; + default: + System.out.println("Día Inválido"); + } // 7. Simula un sistema de notas: muestra "Sobresaliente", "Aprobado" o "Suspenso" según la nota (0-100). + int nota = 72; + if (nota >= 90 && nota <= 100) { + System.out.println("Sobresaliente"); + } else if (nota >= 50 && nota < 90) { + System.out.println("Aprobado"); + } else if (nota >= 0 && nota < 50) { + System.out.println("Suspenso"); + } else { + System.out.println("Nota inválida"); + } // 8. Escribe un programa que determine si puedes entrar al cine: debes tener al menos 15 años o ir acompañado. - + int edad = 14; + if (edad >= 15) { + System.out.println("Puedes entrar al cine"); + } else { + System.out.println("No puedes ir al cine solo, te tiene que acompañar un adulto"); + } // 9. Crea un programa que diga si una letra es vocal o consonante. - + char letra = 'E'; + letra = Character.toLowerCase(letra); + if (letra != 'a' && letra != 'e' && letra != 'i' && letra != 'o' && letra != 'u') { + if (letra >= 'a' && letra <= 'z') { + System.out.println("Es una consonante"); + } else { + System.out.println("No es una letra válida"); + } + } else { + System.out.println("Es una vocal"); + } // 10. Usa tres variables a, b, c y muestra cuál es el mayor de las tres. + int a = 7; + int b = 12; + int c = 5; + + if (a >= b && a >= c) { + System.out.println("El mayor es a: " + a); + } else if (b >= a && b >= c) { + System.out.println("El mayor es b: " + b); + } else { + System.out.println("El mayor es c: " + c); + } + // Otra forma de resolver el Ejercicio 10: + int mayor = Math.max(a, Math.max(b, c)); + System.out.println("El mayor es: " + mayor); + } } diff --git a/basic/c05_structures/StructuresExercises.java b/basic/c05_structures/StructuresExercises.java index c60b52e..467d044 100644 --- a/basic/c05_structures/StructuresExercises.java +++ b/basic/c05_structures/StructuresExercises.java @@ -4,29 +4,91 @@ Clase 44 - Ejercicios: Estructuras Vídeo: https://youtu.be/JOAqpdM36wI?t=15680 */ +import java.util.List; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Arrays; public class StructuresExercises { public static void main(String[] args) { // 1. Crea un Array con 5 valores e imprime su longitud. - + int[] numbers = new int[5]; + System.out.println("Longitud del Array numbers:" + " " + numbers.length); // 2. Modifica uno de los valores del Array e imprime el valor del índice antes y después de modificarlo. - + System.out.println("Puesto 0 Original:" + " " + numbers[0]); + numbers[0] = 2; + System.out.println("Puesto 0 Modificado:" + " " + numbers[0]); // 3. Crea un ArrayList vacío. - + ArrayList names = new ArrayList<>(); + System.out.println("Tamaño del ArrayList: " + names.size()); // 4. Añade 4 valores al ArrayList y elimina uno a continuación. - + names.add("Sergio"); + names.add("Daniel"); + names.add("Pedro"); + names.add("Juan"); + System.out.println(names.size()); + System.out.println(names); + names.remove(0); + System.out.println(names); + System.out.println(names.size()); // 5. Crea un HashSet con 2 valores diferentes. - + HashSet fruits = new HashSet<>(); + System.out.println(fruits.size()); + fruits.add("Naranja"); + fruits.add("Pera"); + System.out.println(fruits.size()); + System.out.println(fruits); // 6. Añade un nuevo valor repetido y otro sin repetir al HashSet. - + fruits.add("Naranja"); + fruits.add("Manzana"); + System.out.println(fruits.size()); + System.out.println(fruits); // 7. Elimina uno de los elementos del HashSet. - + fruits.remove("Manzana"); + System.out.println(fruits.size()); + System.out.println(fruits); // 8. Crea un HashMap donde la clave sea un nombre y el valor el número de teléfono. Añade tres contactos. - + HashMap contacts = new HashMap<>(); + System.out.println(contacts.size()); + System.out.println(contacts); + contacts.put("Sergio", "555222444"); + contacts.put("Daniel", "5552228884"); + contacts.put("Paula", "77722444"); + System.out.println(contacts.size()); + System.out.println(contacts); // 9. Modifica uno de los contactos y elimina otro. - + contacts.put("Sergio" , "222222"); + contacts.remove("Paula"); + System.out.println(contacts.size()); + System.out.println(contacts); // 10. Dado un Array, transfórmalo en un ArrayList, a continuación en un HashSet y finalmente en un HashMap con clave y valor iguales. + + // Array inicial + String[] cars = {"bmw", "seat", "fiat"}; + System.out.println("Longitud del array: " + cars.length); + System.out.println("Array: " + Arrays.toString(cars)); + + // 1️⃣ Convertir Array a ArrayList + ArrayList carList = new ArrayList<>(Arrays.asList(cars)); + System.out.println("ArrayList: " + carList); + + // Convertir ArrayList a HashSet + HashSet carSet = new HashSet<>(carList); + System.out.println("HashSet: " + carSet); + + // Convertir HashSet a HashMap (clave = valor) + HashMap carMap = new HashMap<>(); + for (String c : carSet) { + carMap.put(c, c); + } + System.out.println("HashMap: " + carMap); + + + + + } } diff --git a/basic/c06_loops/LoopsExercises.java b/basic/c06_loops/LoopsExercises.java index 70cd4a7..24d7f19 100644 --- a/basic/c06_loops/LoopsExercises.java +++ b/basic/c06_loops/LoopsExercises.java @@ -5,28 +5,111 @@ Vídeo: https://youtu.be/JOAqpdM36wI?t=17993 */ +import java.util.ArrayList; +import java.util.HashSet; +import java.util.HashMap; +import java.util.Map; +import java.util.Scanner; + public class LoopsExercises { public static void main(String[] args) { // 1. Imprime los números del 1 al 10 usando while. + int index = 1; + while (index < 11) { + System.out.println(index); + index++; + } + // 2. Usa do-while para mostrar todos los valores de un ArrayList. // 2. Usa do-while para mostrar todos los valores de un ArrayList. + ArrayList numeros = new ArrayList<>(); + numeros.add(1); + numeros.add(2); + numeros.add(3); + numeros.add(4); + numeros.add(5); - // 3. Imprime los múltiplos de 5 del 1 al 50 usando for. + int number = 0; // inicializar el índice + do { + System.out.println(numeros.get(number)); // obtener el elemento en la posición 'number' + number++; + } while (number < numeros.size()); // recorrer hasta el último elemento + // 3. Imprime los múltiplos de 5 del 1 al 50 usando for. + for (int i = 1; i <= 50; i++) { + if (i % 5 == 0) { + System.out.println(i); + } + } // 4. Recorre un Array de 5 números e imprime la suma total. - + int[] numeros2 = {2, 4, 6, 8, 10}; + int suma = 0; + for (int numero : numeros2) { + suma += numero; + } + System.out.println("La suma total es: " + suma); // 5. Usa un for para recorrer un Array y mostrar sus valores. - + int[] cantidad = {10, 20, 30, 40, 50}; + // Recorrer el array con for-each + for (int numero : cantidad) { + System.out.println(numero); // mostrar cada valor + } // 6. Usa for-each para recorrer un HashSet y un HashMap. + // Crear un HashSet + HashSet nombres = new HashSet<>(); + nombres.add("Ana"); + nombres.add("Luis"); + nombres.add("Pedro"); - // 7. Imprime los números del 10 al 1 (descendiente) con un bucle for. + // Recorrer con for-each + for (String nombre : nombres) { + System.out.println(nombre); + } + HashMap personas = new HashMap<>(); + personas.put(1, "Ana"); + personas.put(2, "Luis"); + personas.put(3, "Pedro"); + // a) Por pares clave-valor + for (Map.Entry entry : personas.entrySet()) { + System.out.println("Clave: " + entry.getKey() + ", Valor: " + entry.getValue()); + } + // 7. Imprime los números del 10 al 1 (descendiente) con un bucle for. + for (int i = 10; i > 0; i--) { + System.out.println(i); + } // 8. Usa continue para saltar los múltiplos de 3 del 1 al 20. - + for (int i = 1; i <= 20; i++) { + if (i % 3 == 0) { + continue; // saltar los múltiplos de 3 + } + System.out.println(i); // se imprime solo si NO es múltiplo de 3 + } // 9. Usa break para detener un bucle cuando encuentres un número negativo en un array. + // Array de ejemplo + int[] numeros3 = {5, 8, 12, -3, 7, 10}; + // Recorrer el array + for (int numero : numeros3) { + if (numero < 0) { + System.out.println("Número negativo encontrado: " + numero); + break; // Detener el bucle + } + System.out.println("Número positivo: " + numero); + } // 10. Crea un programa que calcule el factorial de un número dado. + Scanner sc = new Scanner(System.in); + System.out.print("Ingresa un número para calcular su factorial: "); + int n = sc.nextInt(); + + long factorial = 1; + for (int i = 1; i <= n; i++) { + factorial *= i; + } + + System.out.println("El factorial de " + n + " es: " + factorial); + } } diff --git a/basic/c07_functions/FunctionsExercises.java b/basic/c07_functions/FunctionsExercises.java index 25db5f8..bb389ee 100644 --- a/basic/c07_functions/FunctionsExercises.java +++ b/basic/c07_functions/FunctionsExercises.java @@ -1,5 +1,5 @@ package basic.c07_functions; - +import java.util.ArrayList; /* Clase 55 - Ejercicios: Funciones Vídeo: https://youtu.be/JOAqpdM36wI?t=19521 @@ -8,25 +8,101 @@ public class FunctionsExercises { public static void main(String[] args) { + imprimirBienvenida(); + saludar("Sergio"); + restar(7,2); + cuadrado(2); + esParImpar(2); + esMayorDeEdad(18); + longitudArray(new int[] {2,4,5,6,8,7}); + mediaArray(new int[] {2, 4, 54, 6, 5}); + factorial(5); + ArrayList nombres = new ArrayList<>(); + nombres.add("Ana"); + nombres.add("Luis"); + nombres.add("Marta"); - // 1. Crea una función que imprima "¡Te doy la bienvenida al curso de Java desde cero!". - - // 2. Escribe una función que reciba un nombre como parámetro y salude a esa persona. + mostrarElementos(nombres); + } - // 3. Haz un método que reciba dos números enteros y devuelva su resta. + // 1. Crea una función que imprima "¡Te doy la bienvenida al curso de Java desde cero!". + public static void imprimirBienvenida() { + System.out.println("¡Te doy la bienvenida al curso de Java desde cero!"); + } + // 2. Escribe una función que reciba un nombre como parámetro y salude a esa persona. + public static void saludar(String nombre) { + System.out.println("¡Hola " + nombre + "!"); + } + // 3. Haz un método que reciba dos números enteros y devuelva su resta. + public static void restar(int a, int b) { + int resultado = a - b; + System.out.println("La resta es: " + resultado); + } + // 4. Crea un método que calcule el cuadrado de un número (n * n). + public static void cuadrado(int n) { + int resultado = n * n; + System.out.println("El cuadrado de " + n + " es: " + resultado); + } + // 5. Escribe una función que reciba un número y diga si es par o impar. + public static void esParImpar(int numero) { + if (numero % 2 == 0) { + System.out.println(numero + " es par."); + } else { + System.out.println(numero + " es impar."); + } + } + // 6. Crea un método que reciba una edad y retorne true si es mayor de edad (y false en caso contrario). + public static void esMayorDeEdad(int edad) { + if (edad >= 18) { + System.out.println("Con " + edad + " años, eres mayor de edad."); + } else { + System.out.println("Con " + edad + " años, NO eres mayor de edad."); + } + } + // 7. Implementa una función que reciba una cadena y retorne su longitud. + public static void longitudArray(int[] numeros) { + System.out.println("La longitud del array es: " + numeros.length); + } + // 8. Crea un método que reciba un array de enteros, calcula su media y lo retorna. + public static void mediaArray(int[] numeros) { + if (numeros.length == 0) { + System.out.println("El array está vacío, no se puede calcular la media."); + return; + } - // 4. Crea un método que calcule el cuadrado de un número (n * n). + int suma = 0; + for (int n : numeros) { + suma += n; + } - // 5. Escribe una función que reciba un número y diga si es par o impar. + double media = (double) suma / numeros.length; + System.out.println("La media del array es: " + media); + } + // 9. Escribe un método que reciba un número y retorna su factorial. + public static void factorial(int n) { + if (n < 0) { + System.out.println("No se puede calcular el factorial de un número negativo."); + return; + } - // 6. Crea un método que reciba una edad y retorne true si es mayor de edad (y false en caso contrario). + long resultado = 1; // Usamos long para números grandes + for (int i = 1; i <= n; i++) { + resultado *= i; // resultado = resultado * i + } - // 7. Implementa una función que reciba una cadena y retorne su longitud. + System.out.println("El factorial de " + n + " es: " + resultado); + } + // 10. Crea una función que reciba un ArrayList y lo recorra mostrando cada elemento. + public static void mostrarElementos(ArrayList lista) { + if (lista.isEmpty()) { + System.out.println("La lista está vacía."); + return; + } - // 8. Crea un método que reciba un array de enteros, calcula su media y lo retorna. + for (String elemento : lista) { + System.out.println(elemento); + } + } - // 9. Escribe un método que reciba un número y retorna su factorial. - // 10. Crea una función que reciba un ArrayList y lo recorra mostrando cada elemento. - } } diff --git a/basic/c08_oop/AccessModifiersExercises.java b/basic/c08_oop/AccessModifiersExercises.java index 2ccaf9f..61b0334 100644 --- a/basic/c08_oop/AccessModifiersExercises.java +++ b/basic/c08_oop/AccessModifiersExercises.java @@ -10,23 +10,111 @@ public class AccessModifiersExercises { public static void main(String[] args) { // 1. Crea una clase Person con atributos privados name y age. Usa los métodos getName(), setName(), getAge() y setAge() para asignar y mostrar valores desde otra clase. + Person p1 = new Person("Ana", 25, "A123"); + p1.sayHello(); + p1.setAge(30); // cambiar edad + p1.sayHello(); + + p1.setAge(-5); // prueba con edad inválida + + System.out.println("ID fijo: " + p1.getId()); // 2. Crea una clase Product con el atributo privado price. Añade el método setPrice(double price) que solo permita precios mayores a 0. + // Crear un producto válido + Product prod1 = new Product("Laptop", 1000); + prod1.showInfo(); // Muestra: Producto: Laptop, Precio: 1000.0 - // 3. Crea una clase BankAccount con el atributo privado balance. Implementa los métodos deposit(double amount) y withdraw(double amount) que validen las cantidades correctamente. + // Cambiar el precio con setPrice + prod1.setPrice(1200); + System.out.println("Precio actualizado: " + prod1.getPrice()); + + // Intentar poner un precio inválido + prod1.setPrice(-50); // Muestra: Precio no válido. Debe ser mayor que 0. + + // Aplicar un descuento + prod1.applyDiscount(10); // Aplica 10% de descuento y actualiza el precio + prod1.showInfo(); + // Crear otro producto directamente con precio inválido + Product prod2 = new Product("Teléfono", -500); + // Muestra: Precio no válido. Debe ser mayor que 0. + // 3. Crea una clase BankAccount con el atributo privado balance. Implementa los métodos deposit(double amount) y withdraw(double amount) que validen las cantidades correctamente. + BankAccount account = new BankAccount(500); + account.deposit(200); // Saldo: 700 + account.withdraw(100); // Saldo: 600 + account.withdraw(1000); // Retiro no válido + System.out.println("Saldo final: " + account.getBalance()); // 4. Crea una clase Book con el atributo privado title. Permite leerlo con el método getTitle() pero no modificarlo (sin setTitle()). El título debe asignarse solo por el constructor. + Book book1 = new Book("El Quijote", "Miguel de Cervantes"); + + // Leer título + System.out.println("Título: " + book1.getTitle()); + + // Modificar autor si se desea + book1.setAuthor("Autor desconocido"); + book1.showInfo(); // 5. Crea una clase Temperature con el atributo privado celsius. El método setCelsius(double celsius) solo debe aceptar valores entre -100 y 100. + Temperature temp = new Temperature(25); + System.out.println("Temperatura: " + temp.getCelsius() + "°C"); + temp.setCelsius(50); + System.out.println("Temperatura actualizada: " + temp.getCelsius() + "°C"); + + temp.setCelsius(150); // valor inválido + System.out.println("Temperatura final: " + temp.getCelsius() + "°C"); // 6. Crea una clase User con los atributos privados username y password. Implementa los métodos setUsername(String username), setPassword(String password) y checkPassword(String inputPassword) que compare contraseñas. + User user = new User("admin", "1234"); + + System.out.println("Username: " + user.getUsername()); + // Comprobar contraseña + System.out.println("Contraseña correcta? " + user.checkPassword("1234")); // true + System.out.println("Contraseña correcta? " + user.checkPassword("abcd")); // false + + // Cambiar contraseña + user.setPassword("abcd"); + System.out.println("Contraseña correcta? " + user.checkPassword("abcd")); // true // 7. Crea una clase Employee con el atributo privado salary. Agrega el método raiseSalary(double percent) que solo permita aumentos positivos. + Employee emp = new Employee(2000); + System.out.println("Salario inicial: " + emp.getSalary()); + emp.raiseSalary(10); // Aumento del 10% + emp.raiseSalary(-5); // Aumento inválido // 8. Crea una clase Rectangle con los atributos privados width y height. Agrega setters y el método calculateArea() que devuelva el resultado de width * height. + Rectangle rect = new Rectangle(5, 10); + + System.out.println("Área: " + rect.calculateArea()); + System.out.println("Perímetro: " + rect.calculatePerimeter()); + + rect.setWidth(-3); // inválido + rect.setHeight(7); // válido + + System.out.println("Área actualizada: " + rect.calculateArea()); // 9. Crea una clase Student con el atributo privado grade. Agrega los métodos setGrade(int grade) y isPassed() que retorne true si la nota es mayor o igual a 60. + // Crear un estudiante con nota 75 + Student student1 = new Student("Ana", 20, "S001", 75); + + + // Usar el método result() para imprimir si aprobó + student1.result(); // Salida: "Aprobó el examen" + + // Cambiar la nota usando setGrade + student1.setGrade(50); + + // Verificar si pasó con isPassed() + System.out.println("¿Pasó el examen? " + student1.isPassed()); // Salida: false + + // Imprimir nuevamente el resultado + student1.result(); // Salida: "Suspendió el examen" // 10. Crea una clase Car con el atributo privado speed. Agrega los métodos accelerate(int amount) que aumente la velocidad (máximo 120) y brake(int amount) que reduzca la velocidad (mínimo 0). + Car myCar = new Car("Kia", "Cerato"); + myCar.showData(); // Marca, modelo y velocidad inicial + myCar.accelerate(50); // Velocidad actual: 50 + myCar.accelerate(100); // Velocidad limitada a 120 + myCar.brake(30); // Velocidad: 90 + myCar.brake(100); // Velocidad mínima: 0 } } diff --git a/basic/c08_oop/Account.java b/basic/c08_oop/Account.java new file mode 100644 index 0000000..bfc0765 --- /dev/null +++ b/basic/c08_oop/Account.java @@ -0,0 +1,40 @@ +package basic.c08_oop; + +public class Account { + + protected double balance; // saldo protegido para que la subclase pueda acceder + + + public Account(double initialBalance) { + if (initialBalance >= 0) { + balance = initialBalance; + } else { + balance = 0; + System.out.println("Saldo inicial no válido, se asigna 0"); + } + } + + + public void deposit(double amount) { + if (amount > 0) { + balance += amount; + System.out.println("Depositado: " + amount + " | Saldo actual: " + balance); + } else { + System.out.println("Monto inválido para depósito"); + } + } + + public void withdraw(double amount) { + if (amount > 0 && amount <= balance) { + balance -= amount; + System.out.println("Retirado: " + amount + " | Saldo actual: " + balance); + } else { + System.out.println("Retiro inválido o saldo insuficiente"); + } + } + + public double getBalance() { + return balance; + } + +} diff --git a/basic/c08_oop/Animal.java b/basic/c08_oop/Animal.java new file mode 100644 index 0000000..9e9afd3 --- /dev/null +++ b/basic/c08_oop/Animal.java @@ -0,0 +1,9 @@ +package basic.c08_oop; + +public class Animal { + + + public void makeSound() { + System.out.print("El animal hace un sonido"); + } +} diff --git a/basic/c08_oop/BankAccount.java b/basic/c08_oop/BankAccount.java new file mode 100644 index 0000000..386185c --- /dev/null +++ b/basic/c08_oop/BankAccount.java @@ -0,0 +1,41 @@ +package basic.c08_oop; + +public class BankAccount { + + private double balance; + + // Constructor + public BankAccount(double balance) { + if (balance >= 0) { + this.balance = balance; + } else { + System.out.println("Saldo inicial no válido, se asigna 0"); + this.balance = 0; + } + } + + // Getter + public double getBalance() { + return balance; + } + + // Depositar dinero + public void deposit(double amount) { + if (amount > 0) { + balance += amount; + System.out.println("Has depositado: " + amount + " | Saldo actual: " + balance); + } else { + System.out.println("Depósito no válido"); + } + } + + // Retirar dinero + public void withdraw(double amount) { + if (amount > 0 && amount <= balance) { + balance -= amount; + System.out.println("Has retirado: " + amount + " | Saldo actual: " + balance); + } else { + System.out.println("Retiro no válido"); + } + } +} diff --git a/basic/c08_oop/Bike.java b/basic/c08_oop/Bike.java new file mode 100644 index 0000000..0bfb009 --- /dev/null +++ b/basic/c08_oop/Bike.java @@ -0,0 +1,14 @@ +package basic.c08_oop; + +public class Bike extends Vehicle { + private String type; + + public Bike(String type) { + this.type = type; + } + + @Override + public void describe() { + System.out.println("Soy una bicicleta de tipo " + type); + } +} diff --git a/basic/c08_oop/Bird.java b/basic/c08_oop/Bird.java new file mode 100644 index 0000000..30f8ba3 --- /dev/null +++ b/basic/c08_oop/Bird.java @@ -0,0 +1,13 @@ +package basic.c08_oop; + +public class Bird extends Animal { + + @Override + public void makeSound() { + System.out.println("Chirp"); + } + + public void fly() { + System.out.print("El pájaro está volando"); + } +} diff --git a/basic/c08_oop/Book.java b/basic/c08_oop/Book.java new file mode 100644 index 0000000..594824c --- /dev/null +++ b/basic/c08_oop/Book.java @@ -0,0 +1,32 @@ +package basic.c08_oop; + +// Definición de la clase Book +class Book { + private String title; + private String author; + + // Constructor + public Book(String title, String author) { + this.title = title; + this.author = author; + } + + // Getter para el título (solo lectura) + public String getTitle() { + return title; + } + + // Getter y setter opcionales para el autor + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + // Método para mostrar los datos del libro + public void showInfo() { + System.out.println("Título: " + title + ", Autor: " + author); + } +} \ No newline at end of file diff --git a/basic/c08_oop/Car.java b/basic/c08_oop/Car.java new file mode 100644 index 0000000..1f8dd95 --- /dev/null +++ b/basic/c08_oop/Car.java @@ -0,0 +1,48 @@ +package basic.c08_oop; + +public class Car extends Vehicle { + + private String brand; + private String model; + private int speed; // velocidad privada + + // Constructor + public Car(String brand, String model) { + this.brand = brand; + this.model = model; + this.speed = 0; // velocidad inicial + } + + @Override + public void describe() { + System.out.println("Soy un coche de marca " + brand + " modelo " + model); + } + + public void showData() { + System.out.println("Marca: " + brand + ", Modelo: " + model + ", Velocidad: " + speed); + } + + public void accelerate(int amount) { + if (amount > 0) { + speed += amount; + if (speed > 120) speed = 120; // velocidad máxima + System.out.println("Velocidad actual: " + speed); + } + } + + public void brake(int amount) { + if (amount > 0) { + speed -= amount; + if (speed < 0) speed = 0; // velocidad mínima + System.out.println("Velocidad actual: " + speed); + } + } + + public int getSpeed() { + return speed; + } + + public void honk() { + System.out.println("¡Bocina! Beep beep!"); + } +} diff --git a/basic/c08_oop/Cat.java b/basic/c08_oop/Cat.java new file mode 100644 index 0000000..f0c252f --- /dev/null +++ b/basic/c08_oop/Cat.java @@ -0,0 +1,9 @@ +package basic.c08_oop; + +public class Cat extends Animal { + + @Override + public void makeSound() { + System.out.println("Meow"); + } +} diff --git a/basic/c08_oop/Circle.java b/basic/c08_oop/Circle.java new file mode 100644 index 0000000..7f1496a --- /dev/null +++ b/basic/c08_oop/Circle.java @@ -0,0 +1,22 @@ +package basic.c08_oop; + +public class Circle extends Shape{ + + private double radius; + + public Circle(double radius) { + if (radius > 0) this.radius = radius; + else this.radius = 1; // valor por defecto si es inválido + } + + @Override + public double calculateArea() { + return Math.PI * radius * radius; + } + + // Getter y setter opcionales + public double getRadius() { return radius; } + public void setRadius(double radius) { + if (radius > 0) this.radius = radius; + } +} diff --git a/basic/c08_oop/ClassesExercises.java b/basic/c08_oop/ClassesExercises.java index 23800a5..c84836d 100644 --- a/basic/c08_oop/ClassesExercises.java +++ b/basic/c08_oop/ClassesExercises.java @@ -5,28 +5,62 @@ Vídeo: https://youtu.be/JOAqpdM36wI?t=21434 */ +import java.util.ArrayList; + public class ClassesExercises { public static void main(String[] args) { // 1. Crea una clase Book con atributos title y author. Crea un objeto y muestra sus datos. + Book myBook = new Book("Cien años de soledad", "Gabriel García Márquez"); + myBook.showInfo(); // 2. Crea una clase Dog con un método bark() que imprima su sonido. - + Dog myDog = new Dog(); + myDog.bark(); // 3. Añade un constructor a la clase Book que reciba title y author. // 4. Crea una clase Car con atributos brand y model y un método showData(). - + Car myCar = new Car("Kia","Cerato"); + myCar.showData(); // 5. Crea una clase Student con atributo score y un método que diga si aprobó (mayor o igual a 60). + Student student1 = new Student("Ana", 20, "S001", 75); + student1.result(); // 6. Crea una clase BankAccount con atributo balance y un método deposit() que sume el saldo. - + BankAccount myBankAccount = new BankAccount(100); + myBankAccount.deposit(50); // 7. Crea una clase Rectangle con métodos para calcular el área y el perímetro. + Rectangle myRectangle = new Rectangle(5, 3); + System.out.println("Área: " + myRectangle.calculateArea()); + System.out.println("Perímetro: " + myRectangle.calculatePerimeter()); // 8. Crea una clase Worker que reciba nombre y salario, y un método para mostrar su salario. - + Worker myWorker = new Worker("Sergio", 1500.50); + myWorker.showSalary(); // 9. Crea varios objetos Person y guárdalos en un ArrayList. + ArrayList people = new ArrayList<>(); + // Crear objetos Person + Person p1 = new Person("Ana", 25, "ID001"); + Person p2 = new Person("Luis", 30, "ID002"); + Person p3 = new Person("María", 22, "ID003"); + + // Agregarlos al ArrayList + people.add(p1); + people.add(p2); + people.add(p3); + + // Recorrer la lista y usar sayHello() + for (Person person : people) { + person.sayHello(); + } // 10. Crea una clase Product y un método que aplique un descuento sobre su precio. + + Product product1 = new Product("Laptop", 1200); + product1.showInfo(); // Precio inicial + product1.applyDiscount(15); // Aplica 15% de descuento + product1.showInfo(); // Precio después del descuento + } } diff --git a/basic/c08_oop/Device.java b/basic/c08_oop/Device.java new file mode 100644 index 0000000..01c2044 --- /dev/null +++ b/basic/c08_oop/Device.java @@ -0,0 +1,8 @@ +package basic.c08_oop; + +public class Device { + + public Device() { + System.out.println("Device created"); + } +} diff --git a/basic/c08_oop/Dog.java b/basic/c08_oop/Dog.java new file mode 100644 index 0000000..ff1d54d --- /dev/null +++ b/basic/c08_oop/Dog.java @@ -0,0 +1,15 @@ +package basic.c08_oop; + +public class Dog extends Animal { + + + @Override + public void makeSound() { + System.out.println("Woof"); + } + + public void bark() { + makeSound(); + } + +} diff --git a/basic/c08_oop/Eagle.java b/basic/c08_oop/Eagle.java new file mode 100644 index 0000000..d050b80 --- /dev/null +++ b/basic/c08_oop/Eagle.java @@ -0,0 +1,11 @@ +package basic.c08_oop; + +public class Eagle extends Bird { + @Override + public void fly() { + System.out.println("El águila se prepara para volar..."); + + System.out.println("El águila vuela con gran majestuosidad"); + } + +} diff --git a/basic/c08_oop/Employee.java b/basic/c08_oop/Employee.java new file mode 100644 index 0000000..12fa016 --- /dev/null +++ b/basic/c08_oop/Employee.java @@ -0,0 +1,31 @@ +package basic.c08_oop; + +public class Employee { + + private double salary; + + // Constructor + public Employee(double salary) { + if (salary >= 0) { + this.salary = salary; + } else { + System.out.println("Salario inicial no válido, se asigna 0"); + this.salary = 0; + } + } + + // Getter + public double getSalary() { + return salary; + } + + // Método para aumentar el salario + public void raiseSalary(double percent) { + if (percent > 0) { + salary += salary * (percent / 100); + System.out.println("Salario aumentado en " + percent + "%, nuevo salario: " + salary); + } else { + System.out.println("El aumento debe ser positivo"); + } + } +} diff --git a/basic/c08_oop/InheritanceExercises.java b/basic/c08_oop/InheritanceExercises.java index 7fc2041..e85e099 100644 --- a/basic/c08_oop/InheritanceExercises.java +++ b/basic/c08_oop/InheritanceExercises.java @@ -5,28 +5,92 @@ Vídeo: https://youtu.be/JOAqpdM36wI?t=24373 */ +import java.util.ArrayList; + public class InheritanceExercises { public static void main(String[] args) { // 1. Crea una clase Vehicle con un método move(). Luego crea una subclase Car que herede de Vehicle y agrega el método honk(). + Car myCar = new Car("Kia", "Cerato"); + + // Método heredado de Vehicle + myCar.move(); + // Métodos propios de Car + myCar.accelerate(50); + myCar.brake(20); + myCar.honk(); + + myCar.showData(); // 2. Define una clase Person con los atributos name y age. Luego crea una clase Student que agregue el atributo grade y un método study(). + Student s1 = new Student("Ana", 20, "S001", 75); + s1.sayHello(); // heredado de Person + s1.study(); // propio de Student + s1.result(); // imprime si aprobó // 3. Crea una clase Animal con el método makeSound(). Haz que Dog diga “Woof” y Cat diga “Meow” sobrescribiendo ese método. + Dog dog = new Dog(); - // 4. La clase Employee tiene los atributos name y salary. Manager hereda de Employee y agrega el atributo department. + dog.bark(); // Woof + Cat cat = new Cat(); + cat.makeSound(); // Meow + + // 4. La clase Employee tiene los atributos name y salary. Manager hereda de Employee y agrega el atributo department. + Manager m = new Manager(3000, "Ventas"); + m.showInfo(); // Departamento: Ventas, Salario: 3000.0 + m.raiseSalary(10); // Salario aumentado en 10%, nuevo salario: 3300.0 // 5. Crea una clase abstracta Shape con un método calculateArea(). Luego implementa ese método en Circle y Rectangle. + Shape circle = new Circle(5); + Shape rectangle = new Rectangle(4, 3); + System.out.println("Área del círculo: " + circle.calculateArea()); + System.out.println("Área del rectángulo: " + rectangle.calculateArea()); // 6. Crea una clase Bird con el método fly(). Luego crea Eagle que sobrescriba fly() pero también llame al método original con super.fly(). + Bird genericBird = new Bird(); + genericBird.fly(); - // 7. Haz una clase Device con un constructor que imprima “Device created”. Luego crea Phone que herede de Device y en su constructor imprima “Phone ready”. + System.out.println("------"); + Eagle eagle = new Eagle(); + eagle.fly(); + // 7. Haz una clase Device con un constructor que imprima “Device created”. Luego crea Phone que herede de Device y en su constructor imprima “Phone ready”. + Phone myPhone = new Phone(); // 8. Account tiene un saldo y métodos para deposit() y withdraw(). SavingsAccount hereda y agrega un método addInterest(). + SavingsAccount myAccount = new SavingsAccount(1000, 5); // saldo 1000, interés 5% + myAccount.deposit(200); // Deposita 200 + myAccount.withdraw(100); // Retira 100 + myAccount.addInterest(); // Agrega intereses // 9. Crea una clase Vehicle y tres subclases: Car, Bike y Truck, cada una con un método describe() sobrescrito. + Vehicle[] vehicles = { + new Car("Kia", "Cerato"), + new Bike("Montaña"), + new Truck(10) + }; + for (Vehicle v : vehicles) { + v.move(); + v.describe(); + if (v instanceof Car car) { // usar funcionalidades de Car + car.accelerate(50); + car.brake(20); + car.honk(); + } + System.out.println(); + } // 10. Crea un ArrayList que contenga instancias de Dog, Cat y Bird. Recorre la lista y llama a makeSound(). + ArrayList animals = new ArrayList<>(); + + animals.add(new Dog()); + animals.add(new Cat()); + animals.add(new Bird()); + + for (Animal animal : animals) { + animal.makeSound(); + } } -} + + } + diff --git a/basic/c08_oop/Manager.java b/basic/c08_oop/Manager.java new file mode 100644 index 0000000..336acbc --- /dev/null +++ b/basic/c08_oop/Manager.java @@ -0,0 +1,33 @@ +package basic.c08_oop; + +public class Manager extends Employee { + + private String department; + + + // Constructor + public Manager(double salary, String department) { + super(salary); // llama al constructor de Employee + this.department = department; + } + + // Getter y setter de department + public String getDepartment() { + return department; + } + + public void setDepartment(String department) { + this.department = department; + } + + // Método opcional para mostrar info completa + public void showInfo() { + System.out.println("Departamento: " + department + ", Salario: " + getSalary()); + } + +} + + + + + diff --git a/basic/c08_oop/Phone.java b/basic/c08_oop/Phone.java new file mode 100644 index 0000000..5286093 --- /dev/null +++ b/basic/c08_oop/Phone.java @@ -0,0 +1,9 @@ +package basic.c08_oop; + +public class Phone extends Device { + + public Phone() { + super(); // opcional, Java lo llama automáticamente si no se pone + System.out.println("Phone ready"); + } +} diff --git a/basic/c08_oop/Product.java b/basic/c08_oop/Product.java new file mode 100644 index 0000000..666052d --- /dev/null +++ b/basic/c08_oop/Product.java @@ -0,0 +1,48 @@ +package basic.c08_oop; + + public class Product { + private String name; + private double price; + + // Constructor + public Product(String name, double price) { + this.name = name; + setPrice(price); // valida el precio al crear el objeto + } + + // Getter + public double getPrice() { + return price; + } + + public String getName() { + return name; + } + + + // Setter con validación + public void setPrice(double price) { + if (price > 0) { + this.price = price; + } else { + System.out.println("Precio no válido. Debe ser mayor que 0."); + } + } + + + // Método para aplicar descuento + public void applyDiscount(double percentage) { + if (percentage > 0 && percentage <= 100) { + setPrice(price - (price * percentage / 100)); // usa setter para validar + System.out.println("Se aplicó un descuento del " + percentage + "%, nuevo precio: " + price); + } else { + System.out.println("Descuento no válido"); + } + } + + // Método opcional: mostrar info del producto + public void showInfo() { + System.out.println("Producto: " + name + ", Precio: " + price); + } + } + diff --git a/basic/c08_oop/Rectangle.java b/basic/c08_oop/Rectangle.java new file mode 100644 index 0000000..24a32bd --- /dev/null +++ b/basic/c08_oop/Rectangle.java @@ -0,0 +1,43 @@ +package basic.c08_oop; + +public class Rectangle extends Shape { + private double width; + private double height; + + public Rectangle(double width, double height) { + setWidth(width); + setHeight(height); + } + + public void setWidth(double width) { + if (width > 0) + this.width = width; + else + System.out.println("Ancho no válido, debe ser mayor que 0"); + } + + public void setHeight(double height) { + if (height > 0) + this.height = height; + else + System.out.println("Alto no válido, debe ser mayor que 0"); + } + + public double getWidth() { + return width; + } + + public double getHeight() { + return height; + } + + @Override + public double calculateArea() { + return width * height; + } + + public double calculatePerimeter() { + return 2 * (width + height); + } + +} diff --git a/basic/c08_oop/SavingsAccount.java b/basic/c08_oop/SavingsAccount.java new file mode 100644 index 0000000..0b7cc01 --- /dev/null +++ b/basic/c08_oop/SavingsAccount.java @@ -0,0 +1,30 @@ +package basic.c08_oop; + +public class SavingsAccount extends Account { + private double interestRate; // porcentaje de interés, p. ej. 5 = 5% + + public SavingsAccount(double initialBalance, double interestRate) { + super(initialBalance); // llama al constructor de Account + this.interestRate = interestRate; + } + + // Método para agregar intereses al saldo + public void addInterest() { + double interest = balance * (interestRate / 100); + balance += interest; + System.out.println("Interés agregado: " + interest + " | Nuevo saldo: " + balance); + } + + // Getter y Setter para la tasa de interés (opcional) + public double getInterestRate() { + return interestRate; + } + + public void setInterestRate(double interestRate) { + if (interestRate >= 0) { + this.interestRate = interestRate; + } else { + System.out.println("Tasa de interés no válida"); + } + } +} diff --git a/basic/c08_oop/Shape.java b/basic/c08_oop/Shape.java new file mode 100644 index 0000000..4054dcb --- /dev/null +++ b/basic/c08_oop/Shape.java @@ -0,0 +1,10 @@ +package basic.c08_oop; + +public abstract class Shape { + + + // Método abstracto: no tiene cuerpo, debe implementarse en las subclases + public abstract double calculateArea(); + + +} diff --git a/basic/c08_oop/Student.java b/basic/c08_oop/Student.java new file mode 100644 index 0000000..f242b02 --- /dev/null +++ b/basic/c08_oop/Student.java @@ -0,0 +1,39 @@ +package basic.c08_oop; + +public class Student extends Person { + + private int grade; + + public Student(String name, int age, String id, int grade) { + super(name, age, id); // llama al constructor de Person + setGrade(grade); + } + + public int getGrade() { + return grade; + } + + public void setGrade(int grade) { + if (grade >= 0 && grade <= 100) { + this.grade = grade; + } else { + System.out.println("Nota no válida. Debe estar entre 0 y 100."); + } + } + + public boolean isPassed() { + return grade >= 60; + } + + public void result() { + if (isPassed()) { + System.out.println(name + " aprobó el examen"); + } else { + System.out.println(name + " suspendió el examen"); + } + } + + public void study() { + System.out.println(name + " está estudiando para mejorar su nota."); + } +} diff --git a/basic/c08_oop/Temperature.java b/basic/c08_oop/Temperature.java new file mode 100644 index 0000000..5ef628f --- /dev/null +++ b/basic/c08_oop/Temperature.java @@ -0,0 +1,26 @@ +package basic.c08_oop; + +public class Temperature { + + private double celsius; + + // Constructor opcional + public Temperature(double celsius) { + setCelsius(celsius); // valida al crear el objeto + } + + // Getter + public double getCelsius() { + return celsius; + } + + // Setter con validación + public void setCelsius(double celsius) { + if (celsius >= -100 && celsius <= 100) { + this.celsius = celsius; + } else { + System.out.println("Temperatura fuera de rango (-100 a 100)"); + } + } + +} diff --git a/basic/c08_oop/Truck.java b/basic/c08_oop/Truck.java new file mode 100644 index 0000000..2fdba7d --- /dev/null +++ b/basic/c08_oop/Truck.java @@ -0,0 +1,14 @@ +package basic.c08_oop; + +public class Truck extends Vehicle { + private double capacity; + + public Truck(double capacity) { + this.capacity = capacity; + } + + @Override + public void describe() { + System.out.println("Soy un camión con capacidad de " + capacity + " toneladas"); + } +} diff --git a/basic/c08_oop/User.java b/basic/c08_oop/User.java new file mode 100644 index 0000000..f4b1a30 --- /dev/null +++ b/basic/c08_oop/User.java @@ -0,0 +1,41 @@ +package basic.c08_oop; + +public class User { + + private String username; + private String password; + + // Constructor opcional + public User(String username, String password) { + setUsername(username); + setPassword(password); + } + + // Setters + public void setUsername(String username) { + if (username != null && !username.isEmpty()) { + this.username = username; + } else { + System.out.println("Nombre de usuario no válido"); + } + } + + public void setPassword(String password) { + if (password != null && !password.isEmpty()) { + this.password = password; + } else { + System.out.println("Contraseña no válida"); + } + } + + // Getter opcional para el username + public String getUsername() { + return username; + } + + // Método para comprobar contraseña + public boolean checkPassword(String inputPassword) { + return password != null && password.equals(inputPassword); + } + +} diff --git a/basic/c08_oop/Vehicle.java b/basic/c08_oop/Vehicle.java new file mode 100644 index 0000000..4ae360e --- /dev/null +++ b/basic/c08_oop/Vehicle.java @@ -0,0 +1,14 @@ +package basic.c08_oop; + +public class Vehicle { + + public void move() { + System.out.println("El vehículo se está moviendo"); + } + + public void describe() { + System.out.println("Soy un vehículo genérico"); + } + + +} diff --git a/basic/c08_oop/Worker.java b/basic/c08_oop/Worker.java new file mode 100644 index 0000000..1fca44c --- /dev/null +++ b/basic/c08_oop/Worker.java @@ -0,0 +1,19 @@ +package basic.c08_oop; + +public class Worker { + String name; + double salary; + + + public Worker(String name, double salary) { + this.name = name; + this.salary = salary; + } + + public void showSalary() { + System.out.println("El trabajador " + name + " tiene un salario de: " + salary); + } + + +} + diff --git a/hello-java.iml b/hello-java.iml new file mode 100644 index 0000000..b107a2d --- /dev/null +++ b/hello-java.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file