2026-01-20 ENUM - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
eso, muy bien
00:00:00
así con calma
00:00:02
vale, pues estamos haciendo
00:00:04
este método que quiero
00:00:07
que me lea del teclado algo
00:00:08
y me devuelva
00:00:10
alguno de estos objetos, solo
00:00:12
uno de esos cinco
00:00:14
y así yo invoco luego ese método para
00:00:15
leer mis objetos que pertenezcan
00:00:18
a este tipo de datos
00:00:20
ese es mi objetivo, hacer aquí
00:00:21
algo para que me devuelva uno de esos
00:00:24
cinco, entonces
00:00:26
Pues por ejemplo, podemos hacer, vamos a leer la cadena que él nos diga, que esa no podemos elegir, cadena que él nos dice, pues teclado, si tenéis que hacer un escáner, pues tenéis que hacer un escáner, leer cadena.
00:00:28
Y ahora voy a recorrer todos estos, voy a recorrer todos estos para ver cuál de ellos coincide en nombre con el que acaban de meter, ignorando las mayúsculas y minúsculas.
00:00:47
porque el nombre de estos
00:01:07
que lo hemos visto antes con el get name
00:01:09
es con mayúsculas también
00:01:11
vale pues como puedo recorrer yo esto
00:01:12
como puedo ir yo recorriendo todos estos
00:01:15
para ahora
00:01:17
a ver si alguno de ellos
00:01:19
es igual
00:01:21
en nombre a esta entrada
00:01:23
de aquí saltándome mayúsculas minúsculas
00:01:25
bueno pues
00:01:27
cualquier cosa que sea enum
00:01:29
por ser un enum
00:01:35
hereda de otras
00:01:37
cosas, porque cualquier clase que tiene
00:01:39
la máquina virtual, las que usamos
00:01:41
Scanner, System.out
00:01:43
String
00:01:45
y muchísimas otras más
00:01:47
las millones que usemos, todas
00:01:49
están metidas en realidad en una jerarquía
00:01:51
de clases
00:01:53
¿vale? la máquina virtual
00:01:54
de Java ha diseñado sus clases
00:01:57
todas en una jerarquía para optimizar
00:01:59
el diseño, pues en un
00:02:01
como hereda de otra cosa
00:02:03
tiene cosas aquí, aunque nosotros no las veamos.
00:02:05
Pues, ¿qué cosas tiene?
00:02:08
Tiene un método values,
00:02:09
tiene un método values que me devuelve un array
00:02:11
de todo esto de aquí.
00:02:15
Es decir, este método values me devuelve, ¿vale?
00:02:22
Día, semana, días, ¿veis?
00:02:32
Este método values está aquí, aunque yo no lo vea,
00:02:37
Porque está heredado de la superclase de la que hereda cualquier enum.
00:02:41
Cualquier enum que tú hagas, por el hecho de ser enum,
00:02:45
por el hecho de ser enum, hereda de alguien.
00:02:49
Y eso significa que tiene un método values
00:02:53
que te devuelve un array con todos estos.
00:02:55
¿Veis? Un array de días a la semana.
00:02:58
Vale, pues vamos a recorrerlo.
00:03:01
Para cada día de la semana,
00:03:03
comprendido en todo tu array,
00:03:06
perdón, en todas tus posibilidades,
00:03:09
Vamos a ver si esta posibilidad es la que tú me has metido.
00:03:13
Si dia.main es igual, saltándose mayúsculas y minúsculas,
00:03:21
porque string tiene muchos métodos, podemos ir cotillando los que tiene,
00:03:38
es igual
00:03:41
saltándose mayúsculas y minúsculas
00:03:43
que esto que tú me has escrito
00:03:46
es igual
00:03:48
ya está, ya tengo el día que querías
00:03:49
pues ala, para afuera
00:03:52
retúndio, para afuera
00:03:54
ya está
00:03:56
y así vamos avanzando
00:03:59
¿qué puede ocurrir? para hacer esto más sencillo
00:04:01
no complicarlo, para no meterle en un bucle
00:04:04
hasta que el tío no meta uno así
00:04:06
eso lo podemos hacer luego en el main
00:04:07
si este for termina
00:04:10
y no ha salido por aquí nunca
00:04:12
es porque lo que él metió
00:04:16
no se corresponde en nombre
00:04:19
saltando mayúsculas y minúsculas
00:04:21
a ninguno de los días.
00:04:23
Pues en ese caso que salga por aquí
00:04:25
devolviendo nul.
00:04:26
Luego este método
00:04:28
o te devuelve directamente
00:04:29
una de las cinco posibilidades
00:04:31
o te devuelve nul.
00:04:34
Y ahora nosotros ya en el mail
00:04:37
pues ya gestionamos eso.
00:04:38
pero esto ya es una forma
00:04:39
cómoda de leer
00:04:41
un enum
00:04:43
llamo al método leer teclado
00:04:44
y sé que me va a devolver
00:04:47
o un objeto enum válido
00:04:49
o un null
00:04:51
ahora ya lo usamos desde el main
00:04:53
¿vale?
00:04:57
¿pero no tengo que volver esto siempre
00:05:10
null? no, porque puede
00:05:12
haber salido por aquí
00:05:14
si ha salido por aquí con el return, el método terminó
00:05:15
return hace que el método acabe
00:05:18
con lo cual
00:05:20
lo que haya después
00:05:21
inalcanzable
00:05:23
va a llegar solamente aquí
00:05:24
si nunca jamás este if fue true
00:05:27
que es porque este input pone Pepito Pérez
00:05:30
no pone ni lunes, ni martes, ni miércoles
00:05:34
vale, pues entonces ahora ya
00:05:36
vamos a usar esto en nuestro main
00:05:42
de citas
00:05:44
ahora
00:05:45
queremos leer, estamos aquí
00:05:46
nuestra cita, pues ya está
00:05:51
día de la semana leer teclado, pero podría
00:05:54
ocurrir que esto fuera
00:05:55
nul
00:05:57
entonces vamos a
00:05:58
meter esto en un
00:06:01
en un
00:06:04
while y hasta que no sea diferente
00:06:10
de nul vamos a estar ahí
00:06:12
pues ala, estate ahí atascado
00:06:13
mientras
00:06:22
cita.día
00:06:24
sea igual a nul
00:06:26
ala, ahí te dejo
00:06:28
vale, vamos a
00:06:30
ponerle aquí para ver
00:06:45
tu cita
00:06:47
y ponemos aquí
00:06:52
cita.doctor
00:06:54
cita.día
00:06:58
vale, pues este va a estar aquí
00:07:04
todo el rato
00:07:11
entonces vamos a poner un system out
00:07:12
aquí
00:07:15
para saber que es lo que estamos haciendo
00:07:16
introduzca día
00:07:19
de la cita
00:07:23
vale, introduzca
00:07:24
día de la cita
00:07:27
mientras no ponga un día válido
00:07:28
está ahí emperrado.
00:07:31
Vale, vamos a ejecutar esto.
00:07:33
Introduzca el día de la cita.
00:07:43
Pi, pi, pi.
00:07:44
Nada.
00:07:46
Ahora ya sí.
00:07:48
Tu cita es con este doctor
00:07:50
el martes. Bueno, pues es un
00:07:52
posible uso del enum.
00:07:59
No es que estas cosas se hagan
00:08:02
así. Lo importante es que sepamos
00:08:03
el enum que es
00:08:05
un tipo personalizado nuestro en el cual
00:08:06
damos un
00:08:09
conjunto finito de posibilidades.
00:08:11
porque hay una variable, una propiedad
00:08:13
de una clase que solo admite un conjunto
00:08:16
finito de posibilidades
00:08:18
entonces como eso no lo puedo
00:08:19
recoger, reflejar, ni en un string
00:08:22
ni en un conjunto finito
00:08:24
no lo puedo reflejar, ni en int
00:08:26
ni en nada, pues me hago un
00:08:28
personalizado con mis posibilidades
00:08:30
y esa propiedad
00:08:33
que pertenezca a ese enum
00:08:34
y ahora ya
00:08:35
pues
00:08:37
profundizando más, buscando más
00:08:38
investigando más en el funcionamiento
00:08:42
de enum, pues ya podemos
00:08:44
manejarlo como nos interese
00:08:46
y este es un uso
00:08:47
relativamente
00:08:50
cómodo
00:08:52
¿vale? para leerlo por teclado
00:08:53
y luego
00:08:56
sobre todo el enum, pues le pega muy bien
00:08:58
esto, en función de las posibilidades
00:09:00
pues haces una cosa u otra
00:09:02
¿vale?
00:09:03
enum tiene más métodos, más chorradinas
00:09:15
para hacer cosas, pero
00:09:17
bueno, ¿vuestra curiosidad del enum
00:09:18
se ha satisfecho?
00:09:21
me alegro muchísimo
00:09:23
pues volvemos a nuestro
00:09:25
manejador
00:09:30
entonces, nuestro manejador, que ya nos habíamos
00:09:30
perdido, teníamos un enum
00:09:41
que es tipo figura
00:09:43
triángulo, círculo, cuadrado
00:09:45
vale, pues vamos a ponerle
00:09:48
ese leer teclado
00:09:51
que nos ha gustado
00:09:53
para cuando le pidamos al tipo
00:09:54
Oye, ¿qué figura vas a meter?
00:09:56
Porque en función de eso, instancio con un constructor
00:09:59
O instancio con otro
00:10:01
Pues venga, vamos a copiar
00:10:02
Del otro que hemos hecho
00:10:05
Vamos a copiar el leer teclado
00:10:07
Cambiando los tipos de datos
00:10:12
Claro
00:10:14
Aquí no será día-semana
00:10:14
Sino que será
00:10:23
Tipo figura
00:10:24
Aquí será también
00:10:31
¿Puedes explicar otra vez lo que hace Valius?
00:10:37
Valius te devuelve
00:10:44
un array con todas las posibilidades
00:10:45
del enum
00:10:48
en el que estás llamándolo
00:10:49
o sea, values es un método
00:10:51
o sea, enum hereda de una clase
00:10:52
enumeratio, algo así se llama
00:10:55
no lo sé, no me acuerdo
00:10:57
y esa clase tiene ya métodos hechos
00:10:58
entre ellos tiene un método values
00:11:00
que sirve para devolverte un array
00:11:02
con todos
00:11:05
estos objetos
00:11:06
¿vale? por eso te devuelve un array
00:11:08
de tipo figura
00:11:11
¿y el roce no puede ser donde abajo pone
00:11:12
Bueno
00:11:14
Sí, sí, claro que podrías
00:11:17
Lo he hecho así para que se vea claro lo que devuelve Valius
00:11:21
Claro, podría poner aquí Valius
00:11:23
Lo que pasa es que antes lo he desglosado en líneas
00:11:25
Para que se viera claro
00:11:27
Que devuelve un array de esto
00:11:29
¿Vale?
00:11:31
Pero sí, claro, te puedes ahorrar esa línea
00:11:33
FIX
00:11:35
Le voy a cambiar los nombres para que no quede tan feo
00:11:39
FIX
00:11:41
Vale, ya tenemos nuestro
00:11:43
leer del teclado una figura
00:11:54
que va a estar ahí con el null, mientras el
00:11:56
que nos escribe no nos diga, triángulo,
00:11:58
círculo o cuadrado.
00:12:00
Vale, y aquí hay algo
00:12:03
que
00:12:04
está mal hecho.
00:12:05
Ah, que aquí hay día-semana
00:12:14
y esto es tipo
00:12:16
figura.
00:12:18
Vale, ahora ya sí.
00:12:23
Vale, pues nuestro main raro,
00:12:25
nuestro main de figura geométrica.
00:12:27
Vale.
00:12:29
Crear figura, fin para terminar.
00:12:31
ahora ahora es cuando le vamos a preguntar el tipo de figura entonces hacemos aquí tipo figura
00:12:33
y ahora do y esto sí que se lo ponemos aquí dentro do y ahora tipo figura igual a esto punto leer del
00:12:45
teclado mientras esto sea diferente mientras esto sea igual a no vale pues
00:13:23
vamos a crear figura introduce el tipo y ahora ya sí que tenemos que hacer el
00:13:48
switch en función del tipo que quieras crear o pedimos un lado pedimos tres o
00:13:53
pedimos un radio entonces aquí ahora ya sí que no queda más remedio que hacer
00:13:57
un switch en función
00:14:01
del tipo de figura que tú me has dicho
00:14:03
si es
00:14:06
triángulo
00:14:12
pues si es triángulo, aquí habría que decirle
00:14:16
introduzca
00:14:21
lado del triángulo
00:14:22
vale
00:14:24
vamos a
00:14:29
case círculo
00:14:31
case cuadrado
00:14:46
entonces aquí
00:14:50
para no hacer crecer
00:14:58
los
00:14:59
los case
00:15:01
indefinidamente, aquí deberíais meter un auxiliar
00:15:04
entonces vamos a dejar los huecos
00:15:08
para que lo completéis
00:15:12
la figura que vamos a crear
00:15:13
figura geométrica
00:15:18
figura geométrica
00:15:21
la figura que vamos a crear
00:15:25
inicialmente es null
00:15:26
y ahora aquí se instanciará
00:15:29
pidiendo lo que toque en cada caso
00:15:35
y ahora una vez que esté instanciada
00:15:39
cuando el switch case ha terminado
00:15:41
que estamos aquí
00:15:43
este es el fin del switch
00:15:44
este es el fin del switch
00:15:47
cuando el switch case ha terminado
00:15:51
ahora ya
00:15:52
¿qué hacemos?
00:15:55
pues meterlo
00:15:59
en el array de figuras geométricas
00:16:00
entonces
00:16:02
add figura
00:16:04
al array
00:16:09
figuras
00:16:10
No, porque es un método que vamos a hacer nosotros
00:16:16
Configura, vale
00:16:23
String, lectura
00:16:32
Vale, a ver
00:16:34
Este bucle de aquí
00:16:44
Era para crear el array de figuras
00:16:46
Todo el rato
00:16:48
Es un bucle para crear el array de figuras
00:16:49
Entonces
00:16:51
Aquí lo único que
00:16:53
Claro, como yo he puesto
00:16:56
Que fin sea una posibilidad también
00:16:59
y he metido lo de leer el tipo de figura por aquí
00:17:02
nunca va a ser fin, lectura no se está leyendo
00:17:06
entonces no puede meter fin
00:17:09
entonces crear el array de figuras
00:17:10
tendríamos que cambiar la estructura
00:17:13
para no cambiarlo vamos a hacer que crea un array de 10 figuras
00:17:17
y ya está, así no lo tocamos mucho
00:17:20
quiero que completéis ahora vosotros esto
00:17:22
entonces vamos a cambiarlo así
00:17:24
que nos diga primero el número de figuras que va a hacer
00:17:28
pues que yo había hecho este bucle
00:17:30
para que se haida por lectura igual a
00:17:36
pero entonces lectura también tiene que admitir fin
00:17:38
y yo no estoy admitiendo que sea fin
00:17:40
porque he metido aquí
00:17:42
porque lectura
00:17:43
es una variable local a esto
00:17:46
entonces tendría que pasárselo como parámetro
00:17:48
a tipo figura
00:17:50
que lo puedo hacer
00:17:51
¿vale?
00:17:52
¿pongo un fin dónde?
00:18:00
o sea es que
00:18:04
el valor que se ha leído
00:18:04
se ha leído y se ha quedado aquí encapsulado
00:18:07
no está visible fuera
00:18:09
entonces no puedo acceder al valor leído
00:18:10
no puedo acceder, entonces hombre
00:18:12
puedo cambiarlo de mil formas
00:18:14
pero para no liarla, para no liar
00:18:16
este código y deshacerlo
00:18:18
de, o sea, el método de Lennon
00:18:20
para no tocarlo, ahora que más o menos está bien entendido
00:18:22
voy a hacer
00:18:25
que lo haga 10 veces
00:18:26
y ya está
00:18:28
bueno, más que 10 veces le vamos a
00:18:29
le vamos a preguntar cuántas figuras
00:18:32
quiere crear
00:18:34
que se me ha abierto esto
00:18:35
le vamos a preguntar cuantas figuras quiere
00:18:37
y que el bucle se haga tantas veces como esa
00:18:39
y ya está
00:18:41
cuantas va a crear
00:18:41
y ahora que lo lea desde aquí
00:18:46
teclado punto
00:18:53
leer de entero
00:18:54
y ahora ya
00:18:57
mientras decrementamos num
00:19:00
aquí al final
00:19:04
y mientras num sea diferente
00:19:05
de cero y ya está, es el arreglo
00:19:12
con el que menos código toco
00:19:14
mientras sea mayor o igual que 0
00:19:16
por ejemplo
00:19:22
vale, entonces le pregunto al principio
00:19:23
cuántas va a crear
00:19:28
y me hago un do mientras sea mayor o igual que 0
00:19:29
lo voy decrementando y ya está
00:19:32
así no toco ni el enum, ni el método del enum, ni toco nada
00:19:34
vale
00:19:36
no lo puedo enseñar, pues lo vais a hacer vosotros
00:19:37
está vacío
00:19:44
vale
00:19:45
este es el bucle de nuestro main
00:19:47
para crear este array
00:19:50
luego ya llamaremos a los manejadores
00:19:52
para que hagan lo que sean, ya veremos
00:19:56
este bucle es solo para crear el array de figuras
00:19:58
¿vale? entonces ¿cómo lo estoy
00:20:00
haciendo? pues he forzado
00:20:02
que
00:20:04
solamente pueda meter
00:20:05
uno de tres tipos
00:20:08
y en función del tipo, ahora
00:20:10
tendréis que instanciar la figura geométrica
00:20:12
que toque, luego aquí
00:20:14
hay código por completar
00:20:16
aquí hay código por completar
00:20:17
que es instanciar la figura que toca
00:20:20
en función del enum que ha metido el tío
00:20:22
y ahora ya esa figura que habré instanciado
00:20:25
en alguno de los tres case, en alguno de los tres
00:20:29
esa figura que habré instanciado se lo añado al array de figuras
00:20:32
mediante este método, haz figuras, que tenéis que hacer aquí
00:20:37
recibe este y se lo añade a este array
00:20:41
de figuras, el array de figuras
00:20:45
¿Por qué le tengo que pasar el array de figuras?
00:20:58
Porque es local al método main
00:21:01
Bueno, pues antes de instanciar ya los manejadores
00:21:02
Para no volvernos más locos
00:21:22
Y ya manejar estas figuras
00:21:24
Cuadrados, círculos, lo que sea
00:21:26
Completáis esto vosotros
00:21:28
Y ya mañana
00:21:30
Terminamos este ejemplito
00:21:34
Y ya está
00:21:36
Claro
00:21:37
Claro, en función de lo que haya introducido el tipo
00:22:14
Que es una de estas
00:22:19
tres cosas, sí o sí, no puede ser ninguna
00:22:20
de ellas, no puede ser ninguna diferente
00:22:23
instanciar la que toque, es decir
00:22:24
será, en este caso
00:22:26
pedir los tres lados
00:22:28
e instanciar la figuración
00:22:30
el nombre se puede pedir
00:22:32
como el nombre es común a todos
00:22:34
el nombre se puede pedir antes
00:22:36
del switch case
00:22:37
y luego ya, una vez que tenemos la figura
00:22:39
instanciada, se la
00:22:43
metemos al array
00:22:44
a través de este método
00:22:46
Claro, que son los que tú recogerás aquí
00:22:48
Claro
00:23:01
A ver, el parámetro nombre
00:23:03
Como lo tienen todas
00:23:05
Lo podemos pedir antes del switch case
00:23:07
¿No? Podríamos hacer aquí
00:23:09
Directamente
00:23:12
Hacer una primera instanciación
00:23:12
Bueno, no, porque
00:23:15
la instanciación
00:23:18
hay que hacerla aquí porque es o new cuadrado
00:23:22
o new círculo o new triángulo, claro
00:23:24
lo que podemos es pedir el nombre aquí
00:23:26
vale, para no pedir el nombre en los tres
00:23:28
sitios, porque el nombre
00:23:30
podemos hacer
00:23:32
dime nombre
00:23:33
de figura
00:23:36
porque el nombre se pide para todos
00:23:38
los casos
00:23:40
y dejarlo aquí guardado en un string
00:23:41
ya
00:23:44
string nombre
00:23:44
igual a pues lo que hayan metido
00:23:47
y ahora aquí
00:23:51
pedir lo que toque, en cada caso lo que
00:23:56
falte, que aquí faltarán
00:23:58
tres lados
00:24:00
aquí faltará un radio
00:24:02
y aquí faltará un lado
00:24:03
y ya con eso que hemos añadido
00:24:05
y con este nombre, aquí hacer new
00:24:08
triángulo, aquí hacer new círculo y aquí
00:24:10
hacer new cuadrado
00:24:12
lo que queda feo en esta aplicación es
00:24:13
lo del num lados
00:24:16
es que eso lo voy a pulir directamente
00:24:17
En figura geométrica
00:24:19
Vamos a quitarle esta propiedad
00:24:23
Porque es un poco estúpida
00:24:25
Esta propiedad es absurda
00:24:26
Vale, voy a subir ahora este proyecto
00:24:32
Tal cual está
00:24:38
Y lo indico
00:24:40
Entonces figura geométrica
00:24:46
Los nublados se van fuera
00:24:47
No queremos los nublados
00:24:49
Este nublado es fuera
00:24:51
Y este nublado es fuera
00:24:54
Y en el toString
00:24:56
Los nublados no los queremos
00:24:58
Esto no lo queremos
00:25:00
Vale, he quitado nublados de figura geométrica
00:25:15
Y eso me fuerza a quitarlo de aquí
00:25:25
Y ya está
00:25:31
A quitarlo de aquí
00:25:38
A quitarlo de ahí
00:25:45
Y a quitarlo del toString
00:25:54
Y ya está
00:26:17
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Primer Curso
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 1
- Fecha:
- 22 de enero de 2026 - 11:18
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 27′
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 107.67 MBytes