forked from mouredev/hello-java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAccessModifiersExercises.java
More file actions
120 lines (90 loc) · 5.81 KB
/
Copy pathAccessModifiersExercises.java
File metadata and controls
120 lines (90 loc) · 5.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package basic.c08_oop;
/*
Clase 60 - Ejercicios: Modificadores de acceso
Vídeo: https://youtu.be/JOAqpdM36wI?t=23202
*/
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
// 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
}
}