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