Skip to content

Commit f6895b8

Browse files
authored
Merge pull request mouredev#3506 from ASJordi/main
#19 - Java
2 parents 3b58d18 + cc523b6 commit f6895b8

File tree

1 file changed

+110
-0
lines changed

1 file changed

+110
-0
lines changed
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
/**
2+
* Un ENUM es un tipo de dato que se utiliza para definir un conjunto fijo de constantes.
3+
* Es útil cuando se tiene un conjunto de valores que no cambian durante toda la ejecución del programa.
4+
* Por ejemplo, los días de la semana, los meses del año, los colores, etc.
5+
*/
6+
public class Main {
7+
public static void main(String[] args) {
8+
System.out.println(Day.getDayName(11)); // -> MONDAY
9+
manejarPedidos();
10+
}
11+
12+
/**
13+
* Crea un Enum que represente los días de la semana del lunes
14+
* al domingo, en ese orden. Con ese Enum, crea una operación
15+
* que muestre el nombre del día de la semana dependiendo del número entero
16+
* utilizado (del 1 al 7).
17+
*/
18+
public enum Day{
19+
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
20+
21+
public static String getDayName(int n){
22+
return switch (n) {
23+
case 1 -> MONDAY.name();
24+
case 2 -> TUESDAY.name();
25+
case 3 -> WEDNESDAY.name();
26+
case 4 -> THURSDAY.name();
27+
case 5 -> FRIDAY.name();
28+
case 6 -> SATURDAY.name();
29+
case 7 -> SUNDAY.name();
30+
default -> throw new IllegalArgumentException("Invalid day number: " + n);
31+
};
32+
}
33+
}
34+
35+
/**
36+
* DIFICULTAD EXTRA (opcional):
37+
* Crea un pequeño sistema de gestión del estado de pedidos.
38+
* Implementa una clase que defina un pedido con las siguientes características:
39+
* - El pedido tiene un identificador y un estado.
40+
* - El estado es un Enum con estos valores: PENDIENTE, ENVIADO, ENTREGADO y CANCELADO.
41+
* - Implementa las funciones que sirvan para modificar el estado:
42+
* - Pedido enviado
43+
* - Pedido cancelado
44+
* - Pedido entregado
45+
* (Establece una lógica, por ejemplo, no se puede entregar si no se ha enviado, etc...)
46+
* - Implementa una función para mostrar un texto descriptivo según el estado actual.
47+
* - Crea diferentes pedidos y muestra cómo se interactúa con ellos.
48+
*/
49+
50+
static class Pedido {
51+
private Integer id;
52+
private Estado estado;
53+
54+
public Pedido(Integer id, Estado estado) {
55+
this.id = id;
56+
this.estado = estado;
57+
}
58+
59+
public void enviar() {
60+
if (estado == Estado.PENDIENTE) {
61+
estado = Estado.ENVIADO;
62+
} else {
63+
throw new IllegalStateException("No se puede enviar un pedido que no está pendiente.");
64+
}
65+
}
66+
67+
public void entregar() {
68+
if (estado == Estado.ENVIADO) {
69+
estado = Estado.ENTREGADO;
70+
} else {
71+
throw new IllegalStateException("No se puede entregar un pedido que no está enviado.");
72+
}
73+
}
74+
75+
public void cancelar() {
76+
if (estado == Estado.PENDIENTE) {
77+
estado = Estado.CANCELADO;
78+
} else {
79+
throw new IllegalStateException("No se puede cancelar un pedido que no está pendiente.");
80+
}
81+
}
82+
83+
public String getEstado() {
84+
return switch (estado) {
85+
case PENDIENTE -> "El pedido está pendiente.";
86+
case ENVIADO -> "El pedido está enviado.";
87+
case ENTREGADO -> "El pedido está entregado.";
88+
case CANCELADO -> "El pedido está cancelado.";
89+
};
90+
}
91+
}
92+
93+
public enum Estado {
94+
PENDIENTE, ENVIADO, ENTREGADO, CANCELADO;
95+
}
96+
97+
public static void manejarPedidos() {
98+
Pedido pedido1 = new Pedido(1, Estado.PENDIENTE);
99+
System.out.println(pedido1.getEstado()); // -> El pedido está pendiente.
100+
pedido1.enviar();
101+
System.out.println(pedido1.getEstado()); // -> El pedido está enviado.
102+
pedido1.entregar();
103+
System.out.println(pedido1.getEstado()); // -> El pedido está entregado.
104+
105+
Pedido pedido2 = new Pedido(2, Estado.PENDIENTE);
106+
System.out.println(pedido2.getEstado()); // -> El pedido está pendiente.
107+
pedido2.cancelar();
108+
System.out.println(pedido2.getEstado()); // -> El pedido está cancelado.
109+
}
110+
}

0 commit comments

Comments
 (0)