20250225 CorreccionExSegunda_1 - 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:
Venga
00:00:00
Pues nada, los magos y las magas
00:00:01
Yo es que soy muy mágica
00:00:04
Venga
00:00:08
Lo hacemos todo entre los dos
00:00:10
No tengas la mínima duda
00:00:15
Nos compenetramos a la perfección
00:00:16
Ya te lo digo
00:00:20
Venga, a ver, el mago elemental
00:00:21
Vale, aquí
00:00:24
Teniendo en cuenta que esto
00:00:34
hacer estas clases
00:00:36
es facilísimo porque es hacer unas clases
00:00:39
unas propiedades y unos métodos, con lo cual
00:00:41
de alguna manera lo que se espera
00:00:42
es que seáis capaces de extraer
00:00:44
meta información
00:00:47
meta información
00:00:49
sí, que es
00:00:51
algo más de lo que se dice
00:00:52
es decir, tomar decisiones
00:00:54
son clases abstractas, son interfaces
00:00:56
eso es lo que se evalúa
00:00:58
porque hacer una clase con propiedad tal y tal
00:01:00
eso no se puede
00:01:03
evaluar, eso es un cero
00:01:04
porque es que te lo hace el eclipse.
00:01:06
Lo que tenemos que evaluar es que sepáis capaces
00:01:07
de extraer información extra, entre líneas, entre comillas,
00:01:09
de una situación.
00:01:14
Por ejemplo, en este caso, el mago elemental, este de aquí,
00:01:15
la forma de lanzar el hechizo depende del mago que sea.
00:01:20
Conclusión, ¿cómo lanza un hechizo el mago?
00:01:24
No lo sabemos.
00:01:27
Conclusión, clase abstracta.
00:01:28
¿Vale?
00:01:30
Primera cosa que se evalúa.
00:01:31
¿clase abstracta o interfaz?
00:01:33
hombre, pues clase abstracta
00:01:37
porque tiene una propiedad nombre, luego no puede ser
00:01:38
interfaz, luego aquí no hay tutía
00:01:40
mago elemental, es una clase
00:01:42
abstracta si yo hago un diseño
00:01:44
acorde con la lectura
00:01:46
que me están ofreciendo
00:01:48
de la situación
00:01:50
pues ya está
00:01:51
esto era
00:01:52
aprendizable
00:01:54
sí, vale
00:01:58
esto
00:02:00
tú dijiste que por convención se sabían llamar
00:02:00
sí, sí, sí, sí
00:02:03
sí, tienes razón
00:02:05
vale, entonces, bueno, paso de los get y los set
00:02:07
porque eso da igual
00:02:10
ahora mismo
00:02:11
y como es mucho que vamos a ir rápido
00:02:13
tiene una propiedad string nombre
00:02:14
y aquí podéis poner constructores
00:02:16
lo que os dé la gana, eso pues bueno
00:02:20
podemos más o menos
00:02:21
pero lo importante era darse cuenta
00:02:22
de que es una clase abstracta y no interfaz
00:02:25
porque tiene propiedad
00:02:27
y que el método lanzar hechizo
00:02:28
no puede tener un código
00:02:30
pues ya está
00:02:32
y es que ver subclases abajo
00:02:34
es que estaba ya completamente ofrecido
00:02:36
que eso tenía que ser una clase abstracta
00:02:39
es que solo nos faltaba decir
00:02:40
hacer una clase abstracta mago elemental
00:02:42
pues venga
00:02:44
a ver
00:02:47
Cristian
00:03:01
¿cómo se escribe hechizo?
00:03:03
y la primera de ellas
00:03:06
¿cuál es?
00:03:10
vale
00:03:13
¿por qué no te diste cuenta de eso en el examen?
00:03:13
¿tú te crees que yo puedo encontrarme
00:03:19
un examen así e irme a la cama
00:03:21
tranquila?
00:03:23
me echaste
00:03:34
me echaste, vamos
00:03:35
vale, pues esta clase
00:03:35
con tener esto ya era suficiente
00:03:38
que ponéis constructores, Getty Set
00:03:39
para nombre, pues muy bien, lo ponéis
00:03:42
sí, pero
00:03:43
en defensa del jefe
00:03:49
él puede decidir largarte cuando le dé la gana
00:03:52
y estáis en el punto
00:03:54
de mira, porque es que
00:03:56
se os odia mucho en general a vuestra
00:03:58
generación
00:04:00
no lo sé, no lo sé, porque
00:04:00
no lo sé, no es
00:04:03
entonces, en cuanto os vean
00:04:04
coger el teléfono para ir tenéis un mensaje
00:04:08
ya estáis dando la excusa para decir
00:04:09
otro que vive pegado a su teléfono, a la calle
00:04:11
se vayan a la mierda
00:04:14
sí, pero
00:04:15
los que se van a la mierda son los que te van a pagar
00:04:17
así que mejor que no se vayan a la mierda
00:04:19
venga, entonces
00:04:21
el fuego y el aire
00:04:23
pues es que no tienen nada que
00:04:26
que hacer
00:04:27
vale, entonces como el mago fuego
00:04:38
es el mago elemental
00:04:45
tiene que implementar el método
00:04:46
y este método dice aquí
00:04:49
que ahora ya este sí que tiene cuerpo
00:04:51
pero para eso necesita la propiedad adicional
00:04:52
pues ya está
00:04:54
el fuego superficie y el aire velocidad
00:04:56
pues ya ves tú que complicación
00:04:59
el fuego superficie
00:05:01
con lo cual este pues ya está
00:05:04
Todo esto
00:05:17
Y con esto ya era suficiente
00:05:26
Que luego además
00:05:30
Lo rizáis bien, ponéis get set
00:05:32
Ponéis modificadores de acceso
00:05:34
Pues muy bien, muy bonito
00:05:36
Vale, se supone que eso ya lo tenéis interiorizado
00:05:38
Pero
00:05:41
Con esto, esto es lo que evaluamos
00:05:41
Ya ves tú que tontería
00:05:44
El mago aire pues lo mismo
00:05:45
El mago aire sin embargo
00:05:46
Pues tenía la velocidad del viento
00:05:58
Y al heredar del mago elemental, pues tiene que implementar su método.
00:05:59
Empujo o soplo a esta velocidad.
00:06:24
hala, tres clases hechas
00:06:28
vale
00:06:35
ahora, ¿qué más hay?
00:06:36
este tiene capacidad de estudiar
00:06:41
no tiene propiedades
00:06:43
ni tiene nada, solo tiene comportamiento
00:06:45
entonces
00:06:47
aquí, pues el
00:06:49
punto evaluable es
00:06:51
decidir, darse cuenta
00:06:53
de que esto se queda mejor representado
00:06:55
en una interfaz, que es lo que solo tiene
00:06:57
comportamiento, una interfaz
00:06:59
¿vale? entonces alguien puede comportarse
00:07:01
como un aprendiz
00:07:03
¿vale? pero sin embargo, alguien
00:07:04
no solo se comporta como un mago elemental
00:07:07
sino que es un mago elemental
00:07:09
porque tiene nombre, por eso
00:07:11
es una clase abstracta
00:07:13
pues venga, el aprendiz es una interfaz
00:07:14
y ya está, ¿y qué comportamiento ofrece?
00:07:17
pues el de estudiar
00:07:19
¿cuál? no sabemos, aquí ya decimos que no sabemos
00:07:20
cuál es, por eso es una interfaz
00:07:23
pues hacemos
00:07:24
la interfaz
00:07:28
aprendizable
00:07:31
aprendizable, aprendible
00:07:36
voy a estudiar
00:07:41
a veces son amenas
00:07:47
si la verdad es que a veces si ponéis alguna chorrada
00:07:51
pues algo me entretengo
00:07:54
si que no es tu caso
00:07:55
es que lo recuerdo y no es tu caso
00:08:00
¿qué dices?
00:08:04
ni de coña, obviamente no
00:08:07
pues porque no
00:08:10
porque los 3 RAs también tienen parte
00:08:11
de lo anterior, que tienes que decir una colección
00:08:13
tienes que decir, hombre a ver
00:08:16
si con hacer esto apruebas 3 RAs que es casi
00:08:17
la mitad del curso, ¿para qué estamos
00:08:19
aquí nosotros? si es que esto se
00:08:22
aprenden
00:08:23
vale
00:08:24
aprendiz a estudiar
00:08:26
Y ahora, ¿qué más tenemos?
00:08:30
Pues tenemos el mago estudiante
00:08:33
y el mago estudiante puede estudiar
00:08:35
y además es elemental, pues entonces ya no lo están
00:08:37
diciendo, pues hereda e implementa.
00:08:39
Entonces, si alguno había
00:08:41
hecho esto como clase abstracta,
00:08:43
ya esa información se lo hace cambiar a interfaz
00:08:45
porque tú no puedes heredar de dos
00:08:47
clases a la vez, entonces una tiene que ser interfaz.
00:08:49
La primera no puede ser porque tiene
00:08:52
un nombre, pues tiene que ser esta.
00:08:53
Entonces, por cualquier parte que abordaras
00:08:55
llegabas a esto.
00:08:57
Entonces
00:08:58
El mago
00:09:01
Elemental
00:09:09
Este de aquí
00:09:11
Uy, perdón, no, el mago elemental no, mago estudiante
00:09:12
Mago estudiante
00:09:15
Vale
00:09:19
El mago estudiante es elemental
00:09:20
Y aparte
00:09:23
Es aprendiz
00:09:28
Implement
00:09:30
Implementes
00:09:31
Entonces, al tener las dos
00:09:34
cosas, pues tiene que implementar
00:09:42
los dos métodos.
00:09:45
¿Cómo los implementa? Pues como
00:09:46
me dice aquí. Ya está.
00:09:48
¡Hala! Rapidito.
00:10:08
Poniendo cualquier cosa. Vale.
00:10:09
Y las clases ya están.
00:10:11
Y ahora ya
00:10:14
un main con
00:10:17
tres magos. Con esto
00:10:18
de aquí. Pues este
00:10:20
main.
00:10:27
¡Ay!
00:10:33
Ya no sé ni escribirlo.
00:10:57
Vale.
00:10:59
Vale, pues ya está
00:11:04
Hacemos tres magos, una Rai
00:11:06
De tres magos elementales
00:11:08
Que alguno me dijo, una Rai, pero si yo no estudio a Rai
00:11:10
Por Dios, pues eso es lo que no puede ocurrir
00:11:12
Que de un examen a otro
00:11:15
Se subieron las cosas
00:11:16
Estaba claro que tú no ibas a ser de esos
00:11:17
Porque en cuanto viste la opción
00:11:20
De ver una Rai, dijiste, por fin se han acordado de mí
00:11:23
Elemental
00:11:25
Soy así, soy así
00:11:27
Me dicen que por dentro de todo
00:11:29
Pues viene a todo Rai
00:11:30
Ala, tres magos elementales
00:11:31
Pues nada
00:11:44
El mago cero
00:11:45
Tenemos
00:11:49
Un estudiante, un aire y un fuego
00:11:54
Aquí como no tengo ni constructora ni nada
00:11:57
Le voy a dejar
00:12:05
No, no le puedo dejar sin nombre
00:12:07
magos 0
00:12:08
punto
00:12:15
a ver, lo estoy haciendo horrible todo
00:12:16
por la rapidez que decíamos, no estoy poniendo
00:12:18
ni, no, porque es que
00:12:21
ni siquiera lo tengo como protete, venga
00:12:23
vamos a hacer un constructor
00:12:24
vale
00:12:25
ya es que
00:12:28
me ha dicho rápido, rápido, pues yo voy rápido
00:12:31
vale, entonces
00:12:33
hacemos en mago elemental
00:12:34
un constructor rápidamente
00:12:36
Que no se tarda nada
00:12:39
Con el nombre
00:12:41
Y ahora
00:12:44
Los otros pues se han quedado
00:12:49
Ahora ya rojitos
00:12:51
Hacemos un constructor
00:12:53
Para cada uno de ellos
00:12:57
Este ya tiene
00:12:59
El mago fuego ya lo tiene
00:13:05
El mago aire también
00:13:07
Y el mago estudiante
00:13:11
necesita
00:13:20
un constructor también
00:13:22
vale
00:13:25
ya tenemos constructores en los tres
00:13:27
y así esto se queda
00:13:30
ahora más sencillo
00:13:33
en el main
00:13:35
el mago estudiante no sé cómo se va a llamar
00:13:35
pero lo llamamos bla
00:13:38
el mago aire
00:13:39
se llama me da igual
00:13:55
y empuja
00:13:57
76
00:14:00
Y este me da igual como se llame
00:14:01
Y quema 87
00:14:20
Y ahora
00:14:21
Tienen que hacer cosas
00:14:24
Entonces claro, uno podría uno por uno
00:14:25
Hacer el casting para que hagan las cosas
00:14:28
Pero ya especificamos que eso no valía
00:14:30
Había que recorrer
00:14:32
Ya especificamos que eso no valía
00:14:33
Entonces hay que recorrer
00:14:35
Pues cada
00:14:37
Para cada mago elemental
00:14:38
En mi array de magos
00:14:41
Hay que ver
00:14:43
Vamos a ver
00:14:45
¿Eres estudiante?
00:14:46
Pues primero estudias
00:14:48
Pues eso es lo que habrá que ver
00:14:49
¿Cómo vemos si es estudiante?
00:14:51
Oye tú
00:14:53
¿Eres estudiante?
00:14:53
Pues si eres estudiante
00:15:01
En ese caso te puedo hacer el casting
00:15:02
Amago estudiante
00:15:05
Porque eres estudiante
00:15:07
Y te hago el casting
00:15:09
Y después de hacerte el casting
00:15:13
Pues ya no habrá problema
00:15:14
En que estudies
00:15:15
y ahora ya
00:15:17
seas estudiante o no lo seas
00:15:24
en el resto de los casos
00:15:26
pues ya está, este era el main
00:15:27
bueno, sobre esta
00:15:30
ejercicio nadie tiene dudas
00:15:42
vale, voy a ir
00:15:43
copiando
00:15:59
las clases del otro
00:16:01
a ver, de todas maneras que lo voy a subir
00:16:03
la solución a la virtual
00:16:43
tampoco os obsesionéis con copiarlo
00:16:44
porque vamos a intentar ir fluidos
00:16:46
porque ahora en el otro de más
00:16:49
que vamos a completar el código
00:16:52
venga, pues a ver
00:16:53
vale, pues a ver
00:17:01
el otro ejercicio
00:17:12
partía ya de
00:17:13
estas clases
00:17:16
una partícula con carga, masa y posición
00:17:18
no tiene puesto ni igual
00:17:24
ni tiene nada
00:17:30
con la idea de que uno lo incorpore
00:17:30
en la medida en que lo necesite
00:17:32
el punto
00:17:33
dos coordenadas
00:17:36
lo mismo, no tiene
00:17:41
equals ni nada, la espera de que si es
00:17:42
necesario lo pongamos
00:17:45
y el main
00:17:46
entonces aquí todo el tiempo que se pierde, como no había
00:17:47
mucho tiempo, porque solo había dos horas
00:17:52
cortas, como siempre hay mucho tiempo escribiendo
00:17:54
los escáner, patatín, pues por eso
00:17:56
lo dimos todo hecho
00:17:59
para que tuvierais solo que completarle
00:18:00
imprescindible, vale
00:18:02
pues este main simplemente
00:18:04
la idea era que llamara al ejecutar
00:18:06
que es el que ya hace las cosas
00:18:08
y el ejecutar mostraba
00:18:10
un menú, sin más
00:18:12
y había que hacer estos cuatro métodos
00:18:14
entonces
00:18:16
de los cuales estaban
00:18:19
hechos la parte de leer por teclado
00:18:24
¿vale? y luego el main que teníamos aquí
00:18:25
que es llamar a ejecutar, si lo quería uno probar
00:18:28
llamaba a ejecutar y se acabó
00:18:30
entonces, uno se echa un vistazo a esto
00:18:31
y
00:18:34
y si miramos el enunciado
00:18:35
pues lo primero que nos dice es
00:18:40
¿vale?
00:18:41
hay un sistema donde interactúan
00:18:43
partículas elementales
00:18:46
entonces, claro que es lo primero
00:18:47
que nos falta de este ejercicio
00:18:50
los datos, donde meto los datos
00:18:51
recordad que esto se trata
00:18:53
no solo de hacer algoritmos
00:18:55
programa que haga no se que
00:18:58
sino de, de alguna manera
00:18:59
pues extraer información
00:19:01
en general, dentro de
00:19:03
la práctica del desarrollo, que es
00:19:05
hombre, si voy a modelar partículas
00:19:07
y yo a las partículas
00:19:09
añado una a la colección de partículas
00:19:11
pues hombre, ¿dónde pongo yo
00:19:14
mis datos? pues en una colección
00:19:16
¿me cuadra eso con lo que me dice?
00:19:17
sí, sí, sí, porque yo tendré una colección
00:19:20
de partículas a la que añado, busco dentro
00:19:22
de esa colección, elimino
00:19:24
pues parece que una única colección
00:19:25
es el único dato que necesito
00:19:27
una colección de partículas
00:19:30
bueno, pues aquí os lo poníamos
00:19:31
fácil porque la podíais elegir
00:19:34
que fuera una lista, un conjunto, la que
00:19:35
quisierais
00:19:38
vale, pues bueno
00:19:38
la que casi todos habéis elegido
00:19:41
es una lista
00:19:44
pero no era necesario
00:19:44
¿vale? una lista
00:19:48
podía ser un conjunto, podía ser cualquiera
00:19:49
pero pusiste arriba, importaste arriba la raíz
00:19:51
y dijimos, ya que está importado
00:19:53
ya, es que eso fue un fallo
00:19:56
porque las pruebas
00:19:59
pues las hicimos poniendo una lista cualquiera
00:20:00
para ver que el programa entero
00:20:02
tenía sentido
00:20:04
claro, pero entonces
00:20:05
no, pero bien, si no pasa nada
00:20:07
o sea, el que puso un list, pues un list
00:20:10
no hemos quitado puntos por eso
00:20:11
no, lo único que decía era que
00:20:13
en este ejercicio no es necesario
00:20:15
los métodos que hay no necesitan
00:20:17
claro
00:20:19
aquí la pregunta sería
00:20:20
¿esta aplicación
00:20:23
permite
00:20:26
tiene sentido que permita duplicados?
00:20:27
pues hombre
00:20:31
aquí tuvimos, Estefano, una larga discusión
00:20:31
porque él al principio
00:20:33
dijo vamos a poner un sistema de colisión
00:20:35
de partículas y dije yo a ver
00:20:38
si es de colisión de partículas
00:20:39
puede haber partículas con la misma carga
00:20:41
la misma masa en el mismo
00:20:44
punto, en el mismo
00:20:45
con lo cual automáticamente
00:20:47
tiene que ser un sistema en el cual
00:20:49
la colección tenga que admitir
00:20:51
objetos con las propiedades iguales
00:20:53
duplicados, entonces ahí ya la cosa
00:20:55
se puede poner más útil
00:20:57
y Estefano dijo vamos a quitarlo de colisión
00:20:59
bueno pero como no va a ir listo
00:21:01
sí, pero bueno
00:21:02
para que no pareciera que complicábamos la cosa
00:21:05
entonces dijimos, mira, quitamos lo de colisión
00:21:07
y porque
00:21:09
y entonces ya
00:21:11
automáticamente ya esto cobraba sentido
00:21:12
porque la partícula más cercana
00:21:14
claro
00:21:16
entonces al poner aquí
00:21:21
la más cercana ya automáticamente
00:21:23
asumíamos que en cada posición sólo puede haber
00:21:25
una partícula, con lo cual
00:21:27
el equals en caso de necesitarlo debería ser
00:21:29
por posición, porque puede haber varias
00:21:31
partículas con la misma masa o con la misma carga
00:21:33
pero no en la misma posición
00:21:35
¿vale? entonces del enunciado entero
00:21:37
se deducía
00:21:39
que había un equals por posición
00:21:41
eso por un lado y que no hacía falta
00:21:43
una lista ¿vale? que luego
00:21:45
era imprescindible que estuviera el equals
00:21:47
pues depende, depende de si
00:21:49
borrabais por... depende
00:21:51
¿vale? pero lo que es la
00:21:53
situación tenía sentido
00:21:55
así, con un equals por posición
00:21:57
¿sí?
00:21:59
pero luego no lo usabas
00:22:01
vale, pues entonces
00:22:03
el problema de hacerlo por todo es que si luego usas un remove
00:22:08
tienes que pasarle las tres propiedades
00:22:11
idénticas, no te basta con que le pases solo una
00:22:13
si hubieras hecho ese uso, pero no lo has hecho
00:22:15
vale, pues entonces
00:22:16
lo primero que nos damos cuenta
00:22:19
aquí es que hay que añadir
00:22:21
la colección en algún lado
00:22:22
¿dónde? pues hombre, donde os dé la gana añadirla
00:22:24
aquí
00:22:27
agregar partícula a la colección
00:22:28
si la
00:22:31
si la colección la poníais aquí dentro
00:22:32
de ejecutar, pues entonces luego teníais que pasársela
00:22:34
como parámetro, ¿verdad?
00:22:37
donde quisierais ponerla
00:22:38
si la ponemos aquí como static
00:22:40
pues entonces ya la puede usar cualquier método
00:22:42
pero hay que cambiarle el modificador a static
00:22:45
entonces eso es lo que
00:22:47
cada uno quisiera, ¿vale?
00:22:49
siempre y cuando fuera una opción con sentido
00:22:51
entonces
00:22:52
por ejemplo, si yo
00:22:54
declaro mi
00:22:56
este de colección de partículas
00:22:58
lo declaro aquí
00:23:04
como solo hay una colección
00:23:05
en todo el ejercicio, pues aquí va a ser
00:23:11
más cómodo
00:23:13
public static list
00:23:14
partícula
00:23:17
partículas
00:23:22
vale, podríamos ya
00:23:23
declararlo aquí mismo si queremos
00:23:28
vale
00:23:30
bueno pues aquí están mis partículas
00:23:36
y ahora ya si nos vamos a los métodos
00:23:39
agregar partícula
00:23:41
pues hombre
00:23:44
agregar partícula
00:23:45
ya ves tú
00:23:48
que tiene que hacer
00:23:49
agregar partícula
00:23:53
agregar partícula
00:23:54
tiene que instanciar
00:23:56
el objeto partícula
00:23:59
tiene ya las propiedades
00:24:01
pues tiene que instanciarlo
00:24:02
y había un constructor
00:24:04
con los tres parámetros, si no lo hay
00:24:14
pues se lo crea uno y ya está
00:24:16
hay un constructor
00:24:18
con los tres parámetros
00:24:21
masa y posición
00:24:23
pues entonces le añadimos aquí
00:24:25
la carga
00:24:27
la masa y la posición
00:24:31
que será un nuevo objeto punto
00:24:35
con
00:24:38
x e y
00:24:42
y ahora se lo añadimos a
00:24:43
es que de hecho
00:24:48
ni siquiera tendríamos que
00:24:50
partículas.add
00:24:52
vale
00:24:56
pues ya está
00:25:09
aquí lo único es que uno puede rizar el rizo
00:25:13
pero no era tampoco lo que mirábamos
00:25:16
que es, oye y si me meten una partícula
00:25:18
que ya existe
00:25:21
o lo que es lo mismo
00:25:24
que está en la misma posición que otra
00:25:25
podríamos verificarlo
00:25:26
a ver si hay alguna partícula ya que esté
00:25:29
en esa posición o no
00:25:31
si hubiéramos hecho un hash set con el jasco de equals
00:25:32
de posición no haría falta
00:25:35
verificarlo, entonces esa sería la opción
00:25:37
mejor, que hubierais seleccionado
00:25:39
una colección hash set
00:25:41
y un equals
00:25:43
por posición, porque
00:25:44
os hubierais dado cuenta de que
00:25:46
no tiene sentido que haya dos partículas en la misma posición
00:25:48
porque de hecho ya el método de distancia
00:25:50
me lo está dando a entender
00:25:52
entonces, si os dais cuenta de eso
00:25:54
hacéis un jasco de equals por posición
00:25:57
y aquí al añadir os despreocupáis
00:25:59
de si va a meter en la colección 2
00:26:02
con la misma posición
00:26:03
si habéis hecho una lista sin más
00:26:04
va a meter la partícula sí o sí
00:26:06
aunque tenga la misma posición
00:26:09
con lo cual luego va a haber un problema
00:26:10
cuando encontréis la más cercana
00:26:12
eliminará solo una
00:26:14
eso pues bueno, la aplicación no está
00:26:16
correctamente hecha en realidad
00:26:18
porque te elimina una pero te dejaría otra
00:26:20
¿realmente quieres que haya dos en la misma posición?
00:26:22
pues entonces tu error ya venía de aquí
00:26:25
de haber hecho el add sin verificar
00:26:26
claro, entonces aquí
00:26:28
lo ideal sería
00:26:30
si tú lo has hecho en una lista, hacer un contains
00:26:32
y decir, oye, si no la contienes
00:26:34
añádelo, eso sería lo guay
00:26:37
pero claro, para hacer un contains
00:26:39
necesitas el equals por posición
00:26:41
entonces
00:26:43
lo mejor de todo es, si uno ya ha llegado
00:26:44
a la conclusión de que en este ejercicio
00:26:47
la posición es lo importante
00:26:49
ya se hace su equals
00:26:51
y si se hace su hascode también, porque nunca sobra
00:26:52
Si luego cambias a un set, claro, entonces te haces ya de siempre tu jasco de equals por posición y ya lo tienes.
00:26:55
Ah, vale, me dice que punto no, me está implementando el equals, vale, porque estoy tirando de, claro, en punto, aquí sí que sí, dos puntos son el mismo si las dos coordenadas son iguales.
00:27:08
entonces aquí en punto
00:27:19
podríamos hacernos nuestro
00:27:21
jasco de equals
00:27:24
por las dos coordenadas
00:27:26
vale
00:27:27
y ya tengo mi punto con su jasco de equals
00:27:29
mi partícula con su jasco de equals
00:27:31
y ahora ya aquí
00:27:33
en el momento de añadir podría hacer
00:27:35
oye si no contiene
00:27:37
si me colisión partículas
00:27:39
no contiene
00:27:41
a la partícula que acabo de crear
00:27:44
vamos a ponerla
00:27:46
parte para que se vea mejor
00:27:48
pues si no
00:27:50
contiene a p
00:28:04
si no la contiene
00:28:05
entonces añade
00:28:08
la a y dices partícula agregada
00:28:11
y si no pues le dices
00:28:12
ya existe
00:28:29
una partícula en esa posición
00:28:31
y como esto no es un sistema
00:28:32
de colisión pues no se puede
00:28:41
bueno pues esto sería lo bonito
00:28:42
la forma buena de hacer las cosas
00:28:48
si yo echo un list verificarlo con
00:28:50
contains porque contains
00:28:52
recordad que tira del equals
00:28:54
en la lista
00:28:56
o si he hecho un set con el hascode
00:28:57
de equals, ya está
00:29:00
no hace falta que verifique si lo contiene o no
00:29:01
porque ya sé que no lo voy a añadir, esa sería la forma
00:29:03
bonita
00:29:05
que habéis hecho un list, lo habéis añadido
00:29:07
y punto pelota, es decir una línea de código
00:29:09
lo hemos contado también
00:29:11
como si estuviera bien hecho
00:29:12
completo
00:29:16
con lo cual este método no tenía más historia
00:29:16
buscar por rango de masa
00:29:19
pues aquí lo tenemos más fácil todavía
00:29:21
hacemos un for y la partícula
00:29:23
que
00:29:25
cumple esa propiedad se añade aquí
00:29:26
cuidadín
00:29:29
claro, habría que guardarlo en la lista
00:29:30
cuidadín, lógicamente habéis instanciado
00:29:34
aquí la lista
00:29:37
pero bueno, vamos a
00:29:38
guardarlas en la lista que está
00:29:41
arriba y devolverlo, pues ya está
00:29:43
vamos a recorrer
00:29:45
cada partícula
00:29:49
vale, pues
00:30:00
vamos a ver si cumple esa propiedad
00:30:01
Pues si p
00:30:03
Aquí no había get ni set ni había nada
00:30:06
No había get ni set ni nada
00:30:08
Entonces vamos a ponerlo
00:30:13
Vale, si la masa es
00:30:15
Si la masa es mayor o igual
00:30:26
Que la mínima
00:30:31
Y siendo mayor o igual que la mínima
00:30:34
Es menor o igual
00:30:38
Que la máxima
00:30:45
¿Qué hago yo?
00:30:52
no se llama maxMasa, ¿verdad?
00:30:53
He borrado algo, ¿verdad?
00:31:03
Sí, aquí he borrado el
00:31:05
este. Pues ya está.
00:31:06
Se añade a la lista y se acabó.
00:31:17
Lista.add
00:31:23
p. Vale.
00:31:24
Aquí tenemos el riesgo
00:31:27
de añadir una que ya
00:31:29
existe en la posición.
00:31:30
Pues no, porque estas son partículas
00:31:34
que ya estaban en la
00:31:36
colección. Se supone que no estaban en la misma
00:31:38
posición. Bueno, pues
00:31:39
Ya está, este método ya está.
00:31:42
Cuidadín, claro.
00:31:44
Vamos a instanciar la colección,
00:31:46
si no en la primera añadida va a ser un new pointer exception.
00:31:47
Cuidado que a nadie se le olvide instanciarla, lógicamente.
00:31:51
Pues este método ya estaba, muy fácil también.
00:32:03
Vale, eliminar por posición.
00:32:06
Aquí es hacer un mínimo.
00:32:09
Aquella que cumpla que una propiedad,
00:32:12
que es la propiedad distancia, sea mínima.
00:32:14
y esa propiedad distancia
00:32:16
la podemos sacar de este método que ya estaba hecho
00:32:18
entonces no hace falta que nos compliquemos
00:32:20
entonces aquí hay que hacer
00:32:21
un mínimo
00:32:24
dentro de todas las partículas para encontrar
00:32:26
una
00:32:28
que es la que vamos a eliminar
00:32:29
luego tenemos una partícula objetivo
00:32:31
la partícula a eliminar, que es esta
00:32:33
¿vale?
00:32:36
esta es la partícula a eliminar
00:32:41
entonces
00:32:43
esta partícula
00:32:45
la partícula a eliminar
00:32:48
puede ser como tenemos una lista
00:32:50
puede ser la primera de la colección
00:32:52
vale
00:32:53
y ahora ya comprobamos
00:32:55
todas ellas a ver si alguna tiene
00:32:58
como distancia menor que la distancia
00:33:00
que tiene esta
00:33:02
entonces esta puede ser
00:33:03
partículas.get
00:33:05
vale
00:33:09
esto es hacer un mínimo
00:33:10
que es de la primera evaluación como veis
00:33:11
igual que preguntamos ahora cosas
00:33:14
de la primera evaluación todo el rato pues en la tercera también
00:33:16
de colecciones de hash map
00:33:18
aquí no ha caído nada, pero caerá en otros
00:33:20
exámenes, los map
00:33:22
¿vale?
00:33:24
vale, pues esta es la partícula eliminada
00:33:26
pues porque como se vio con tan poco
00:33:27
tiempo de antelación, pues para que no
00:33:34
pusierais ahí mi...
00:33:36
te hubiera gustado
00:33:38
venga, pues vamos a recorrer todo
00:33:40
para cada partícula
00:33:44
P en partículas
00:33:46
vamos a ir una por una
00:33:47
a ver si encontramos alguna
00:33:50
cuya distancia a este punto
00:33:52
sea menor que esta
00:33:55
que es la primera que hemos cogido
00:33:57
puede ser una cualquiera
00:33:59
puede ser una cualquiera
00:34:00
pues venga, aquí ya hacemos
00:34:01
si, y como calculo yo
00:34:04
la distancia entre
00:34:07
esta partícula y el punto
00:34:08
pues la podría hacer
00:34:11
o tengo el método, pues tengo un método
00:34:12
si la distancia
00:34:14
calcular distancia
00:34:16
entre
00:34:20
la posición de mi partícula P
00:34:25
que la saco con get punto
00:34:28
cuando me haga mi get
00:34:30
set de
00:34:32
ya lo tengo, ¿no?
00:34:35
get set de
00:34:38
ah, es que es posición
00:34:39
vale
00:34:39
sí, eso
00:34:40
vale
00:34:43
get posición
00:34:44
y en la posición que me han dado
00:34:47
vale
00:34:50
si la distancia de esta partícula P
00:34:50
es menor
00:34:53
que la que es mínima
00:34:55
hasta ese momento
00:34:58
es menor que
00:34:59
que con un zoom tan grande
00:35:01
es todo muy complicado
00:35:04
es menor que
00:35:05
no, que calcular distancia
00:35:06
eliminar
00:35:10
punto get
00:35:19
posición
00:35:21
Posición
00:35:22
Si es menor, ala, tengo nueva partícula
00:35:24
Mínima
00:35:27
Eliminar igual a p
00:35:28
Y ya está
00:35:30
Bueno, ya está
00:35:33
Ya he encontrado la partícula eliminar
00:35:35
Vale, pues ya está
00:35:36
Es un for para hacer el mínimo
00:35:38
Cojo cualquiera de la colección
00:35:39
Cualquiera, he cogido la primera
00:35:42
Y ahora me pongo a recorrer toda la colección
00:35:44
Voy una por una
00:35:46
Sí, se puede hacer de muchas maneras, pero bueno, podemos coger una cualquiera, ya recorremos toda la colección, para cada una de ellas, cumple que es menor que la otra en la propiedad que sea, en este caso es en la distancia, silencio, esta partícula P, cumple que su distancia es menor que la que es mínima hasta ese momento, pues sí, cumple que es menor, pues tengo nuevo mínimo, y así todo el rato.
00:35:47
cuando ya mi for ha terminado
00:36:14
que ha terminado en este punto
00:36:16
ya puedo eliminarla de la colección
00:36:17
partículas
00:36:20
para eso tengo un remove
00:36:22
¿vale?
00:36:24
pero insisto
00:36:27
este remove que va a hacer
00:36:28
va a eliminar
00:36:30
la primera partícula
00:36:32
que encuentre igual a esta
00:36:34
igual
00:36:37
según su método equals
00:36:38
¿vale?
00:36:40
claro, en este caso
00:36:42
perdón, eliminar
00:36:43
¿qué hago yo? eliminar
00:36:45
vale
00:36:47
igual a esta
00:36:48
¿vale? igual su método
00:36:51
igual, pero es que eliminar
00:36:53
es directamente una copia de p
00:36:54
que está en la colección, es directamente
00:36:57
una copia, luego ya va a tener su posición
00:36:59
el equals de la posición lo va a tener
00:37:01
entonces con esto ya lo tengo
00:37:02
si yo no hubiera puesto
00:37:04
un equals
00:37:11
en partícula
00:37:14
cuidado porque esto
00:37:16
falla
00:37:19
porque esto es un for each
00:37:20
con lo cual esto es un for each
00:37:22
con lo cual esto es una copia
00:37:24
de la partícula real, está en otra
00:37:27
dirección de memoria
00:37:29
su contenido es el mismo
00:37:30
masa, carga eléctrica y posición
00:37:32
idéntica, su contenido es el mismo
00:37:35
pero P tiene una dirección de memoria
00:37:37
y la partícula real tiene otra
00:37:39
¿vale?
00:37:41
con lo cual en eliminar
00:37:42
yo estoy poniendo la dirección
00:37:44
de la copia
00:37:47
¿vale? su contenido es el mismo
00:37:48
su contenido es el mismo
00:37:50
pero la dirección no es la dirección de la partícula real
00:37:52
es otra dirección
00:37:54
aunque el contenido es el mismo
00:37:56
luego si yo aquí no he puesto un equals
00:37:57
en partícula
00:38:00
él va a usar el equals de object
00:38:01
y el equals de object va por dirección
00:38:03
con lo cual no va a borrar la partícula original
00:38:06
no la va a borrar
00:38:08
porque su dirección no es la dirección de esta
00:38:09
¿vale?
00:38:11
estos son los detalles en los que no perdáis
00:38:14
efectivamente, porque luego las aplicaciones
00:38:16
simplemente no funcionan
00:38:19
y hay veces que aplicaciones muy gordas
00:38:21
muy grandes, de mil cosas
00:38:23
no funcionan por cosas como estas
00:38:25
simplemente por cosas como estas, nada más
00:38:27
y uno se va a mirar a otra parte, se va a mirar
00:38:29
a los datos, se va a la base de datos, se va a mirar no sé qué
00:38:31
cuando es esto, ¿vale?
00:38:33
bueno, pues ya está
00:38:37
calcular por posiciones, hacer un mínimo
00:38:38
y partícula de mayor masa, pues hacer un máximo
00:38:43
pues venga, mostrar la partícula
00:38:45
con mayor masa, pues ya está
00:38:49
cogemos como una
00:38:50
partícula de mayor masa
00:38:53
pues cualquiera de ellas
00:38:55
la primera de todas
00:38:56
como es una lista
00:38:59
pues tengo la suerte de que puedo coger
00:39:01
la que me dé la gana, si fuera un set
00:39:04
no puedo coger una cualquiera, no es tan fácil
00:39:05
tengo que iterar siempre
00:39:07
y ahora ya me hago el máximo
00:39:08
pues para cada
00:39:11
partícula
00:39:14
P en partículas, ahora ya, esta partícula, su masa es mayor que esta primera, que la que tenga la mayor masa hasta ese momento, inicialmente la primera de todas, pues sí, es mayor, pues tengo una nueva partícula de mayor masa.
00:39:15
hala, ya está
00:39:38
sa igual a
00:39:39
ap
00:39:47
y como aquí lo único que tengo que hacer es mostrar
00:39:48
no eliminar ni nada
00:39:51
el equals aquí en realidad me da igual
00:39:53
el equals me da igual
00:39:55
aquí lo único que tengo que hacer es mostrar
00:39:56
sí, pero ya lo tenía
00:39:58
tenía un twistring
00:40:02
en partícula, y si no se pone y ya está
00:40:03
ahí tiene un twistring
00:40:05
vale
00:40:08
y si no se pone y listo, y de nuevo no es pelo
00:40:08
que tengo que mostrar, sino mayor
00:40:12
más
00:40:13
vale, pues este era
00:40:14
el cuarto método, hacer un máximo
00:40:18
entonces eso tiene que estar claro
00:40:21
hacer un mínimo, saber
00:40:22
usar métodos, llamar a un método
00:40:25
desde otro lado
00:40:27
todos los matices de colecciones con los
00:40:28
IQUA, los HASCO, los métodos
00:40:31
que se usan, todo eso
00:40:33
y ya está, y eso es lo que tenía que
00:40:35
estar claro en este ejercicio, por eso
00:40:37
este ejercicio tenía peso en el resto de las RAs
00:40:38
porque incorporaba varias cosas
00:40:41
Aquí algunos
00:40:43
Me mostrabais no la partícula
00:40:46
Sino la mayor masa
00:40:49
Sin más
00:40:50
Entonces eso tampoco
00:40:51
Eso no es lo que se pide
00:40:54
Hay que hacer lo que se pide
00:40:57
Otra cosa es que al final damos puntos por casi cualquier cosa
00:40:58
Pero
00:41:02
No se puede dar todo lógicamente
00:41:03
Vale
00:41:06
Y
00:41:09
Y este ya está
00:41:11
Y aquí no sé
00:41:13
Ah es que me falta un paréntesis
00:41:14
tercer ejercicio
00:41:16
más corto y rápido
00:41:21
imposible
00:41:24
y de hecho este de aquí como veis
00:41:24
es escribir cuatro líneas
00:41:29
en cada método
00:41:31
la más cercana
00:41:32
la más cercana es la que más tenía
00:41:35
claro, la más cercana
00:41:38
es la que más tenía
00:41:40
pero bueno, era hacer el mínimo
00:41:41
y darse cuenta de que tienes que usar ese método
00:41:43
pero nada más
00:41:45
y de añadir ya digo
00:41:46
lo de distinguir si ya está o no está
00:41:48
pues ya dijimos que eso ni lo contábamos
00:41:51
ni lo habíamos tenido en cuenta
00:41:53
vale, entonces el tercer ejercicio
00:41:54
una plantita
00:41:59
o varias
00:42:10
pues nada, una planta con nombre
00:42:12
y altura
00:42:15
hacer esta clase
00:42:16
ya por hacer la clase que no tenía nada
00:42:18
ya dábamos algo
00:42:21
si encima lo hacías bien implementando
00:42:22
comparable y todo eso ya
00:42:24
el colmo
00:42:26
venga
00:42:27
clase planta
00:42:29
bueno pues no sé cómo se llaman
00:42:31
las propiedades o cómo pero nos da igual
00:42:46
y si era dave lo era en la altura
00:42:48
pero me da igual también
00:42:50
altura
00:42:52
venga vamos a poner
00:42:54
un constructor
00:42:56
vale
00:42:57
solo por hacer esto ya dábamos algo
00:43:12
y esto no es lo que había que hacer
00:43:14
claro, pero
00:43:16
haz una planta con dos propiedades
00:43:18
planta, dos propiedades
00:43:21
vale, ahora
00:43:22
una aplicación
00:43:24
con tres
00:43:27
y mostrarlo por orden ascendente
00:43:28
solicitados al usuario
00:43:31
porque si no sois capaces de dárselos a Capone
00:43:33
y luego mostrarlo por orden ascendente según lo habéis
00:43:35
pues venga
00:43:37
el main, ya está
00:43:39
una colección
00:43:40
pues que colección
00:44:02
como vamos a implementar por orden
00:44:04
aquí la opción natural es
00:44:06
jolines lo único que yo voy a necesitar
00:44:08
va a ser un listado ordenado
00:44:10
de la colección
00:44:12
es mi único requisito
00:44:14
un listado ordenado
00:44:15
pues si tu único requisito es un listado ordenado
00:44:16
para eso está el triset
00:44:19
que directamente cuando tu iteras
00:44:20
te itera siempre de forma ordenada
00:44:23
¿según qué criterio? el que tú elijas
00:44:25
pues es justo lo que se adapta a lo que nos han dicho
00:44:28
una aplicación cuya única funcionalidad es un listado ordenado
00:44:31
pues ya está, si yo quiero un listado ordenado
00:44:34
vamos a hacer que planta
00:44:37
implemente comparable
00:44:39
de planta y ahora
00:44:47
¿qué orden es el que nos gusta?
00:44:50
si implementa comparable pues tiene que
00:44:53
implementar el método y ahora
00:44:56
¿qué orden es el que me interesa a mí?
00:44:59
pues orden ascendente
00:45:02
de menor a mayor
00:45:03
con lo cual el compare tú tiene que estar
00:45:04
en función de la altura
00:45:07
es decir, si la planta
00:45:08
dis que llama al método
00:45:11
su altura es menor
00:45:12
que esta planta o, me tiene que devolver
00:45:15
negativo, si la altura
00:45:17
de la que llama compare tú es la misma
00:45:19
que o, me tiene que devolver cero
00:45:21
y si la altura de la que llama compare tú
00:45:22
es mayor que o, me tiene que devolver positivo
00:45:25
con lo cual, hombre, la forma fácil de hacer esto es
00:45:27
return altura
00:45:30
menos o punto
00:45:32
altura
00:45:34
y ya está, como lo he puesto como dable
00:45:34
pues voy a tener que hacer un casting
00:45:38
entero, pero no pasa nada
00:45:40
¿vale? aquí lo único
00:45:41
hay un detalle
00:45:55
que aquí fallaría
00:45:57
en esta solución y tendríamos que optar por otra
00:46:00
que es, como yo he puesto
00:46:02
como la altura dable, si tengo una planta
00:46:04
que mide 1,3
00:46:06
y otro que mide 1,2
00:46:08
claro, me van a salir que son iguales
00:46:10
con lo cual cuando yo las añada
00:46:13
en el triset no la va a añadir
00:46:15
entonces las plantas
00:46:16
cuya diferencia es en decimales
00:46:18
esta aplicación no las consideraría
00:46:20
con lo cual usar un
00:46:23
dabble es un poco estúpido
00:46:24
porque va a considerar como iguales
00:46:26
si, yo he puesto
00:46:29
dabble porque no quería, me daba pereza
00:46:31
me había denunciado
00:46:32
altura máxima en metros
00:46:33
a ver, no lo dice, uno podría haber elegido
00:46:36
dabel y entonces esta opción no sería buena
00:46:39
pero a ver, daba igual, si lo hacía
00:46:40
no teníamos en cuenta eso
00:46:42
pero lo que me importa es que entendáis
00:46:44
que el método compare tú
00:46:46
te tiene que volver un entero, con lo cual si yo me baso
00:46:48
en esto, sin más
00:46:50
no va a distinguir plantas que se diferencian
00:46:52
solo en decimales
00:46:55
cuando yo haga el add
00:46:56
les va a parecer igual, no las va a añadir
00:46:58
en el add, entonces si me importa
00:47:01
esa situación, pues no me valdría
00:47:03
un tríceps. Tendría que hacer
00:47:05
una lista y luego
00:47:07
ordenar con sort. Eso ya sí.
00:47:08
Bueno, no tampoco. Tendría que hacer un comparator.
00:47:11
Bueno. En fin.
00:47:13
Estarían las mismas y luego en el
00:47:15
sort tiro de este. Estarían las mismas.
00:47:16
Pero a ver,
00:47:19
lo que quiero decir es que esto no nos importa ahora.
00:47:20
De hecho, nos importa
00:47:23
tampoco que en la solución
00:47:24
que vamos a subir, para no volvernos locos,
00:47:26
vamos a poner que es entero y se acabó la altura.
00:47:28
Y así no hay ningún
00:47:31
problema. Plantas con la misma
00:47:32
altura son la misma.
00:47:34
Entonces, yo no puedo meter dos plantas
00:47:38
con la misma altura en el
00:47:40
tríset.
00:47:42
¿Y aquí qué pasa?
00:47:47
Ah, claro, que al cambiar el
00:47:48
int e int
00:47:49
y sigue habiendo algo rojo aquí.
00:47:54
Y ahora ya sí.
00:48:04
Pues ya está. Hacemos un tríset
00:48:05
y apañao.
00:48:07
Uy.
00:48:17
ala, se piden los datos por teclado
00:48:17
el escáner, etc
00:48:34
pero bueno, da igual
00:48:36
vale
00:48:38
repito, se pedirían por teclado
00:49:00
en realidad, pero vamos, aquí para comprobar
00:49:03
simplemente que esto funciona
00:49:05
las pongo
00:49:07
así se acabó
00:49:09
7
00:49:10
4
00:49:14
y 6, por ejemplo
00:49:16
vamos a poner
00:49:18
y voy a poner un toString
00:49:19
en planta, un toString para cuando lo muestre
00:49:21
y ahora ya como es un triset
00:49:24
ya sabemos que cualquier
00:49:34
iteración que hagamos los va a mostrar
00:49:35
por el orden del compareTo
00:49:38
pues ya está
00:49:39
y ya está el ejercicio
00:49:41
a falta de que esto se lee por teclado en realidad
00:49:51
pero bueno
00:49:53
vale, pues aquí están ordenadas
00:49:54
4, 6 y 7
00:49:58
Pues igual
00:49:59
Vale, pues completo
00:50:04
Que uno se hace una lista
00:50:06
Y luego ordena
00:50:09
El comparado lo tiene que hacer igualmente
00:50:10
Por lo que hemos visto nosotros
00:50:12
El comparado lo tiene que hacer igualmente
00:50:14
Los pequeños flecos que se nos han quedado colgando
00:50:15
Del comparado y todo no sé qué
00:50:19
Ya los vamos incorporando en diferentes aplicaciones
00:50:20
Que vayamos haciendo
00:50:23
Bueno, pues examen completo
00:50:24
- 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:
- 7
- Fecha:
- 26 de febrero de 2025 - 12:55
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 50′ 33″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 252.38 MBytes