Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Solución a ejercicio Astros (POO Java) - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 15 de febrero de 2023 por Cristina M.

26 visualizaciones

Descargar la transcripción

Hola a todos, no he podido recuperar el vídeo del año pasado explicando el ejercicio de astros, así que esta es una nueva grabación. 00:00:01
El enunciado que estáis viendo está situado, o sea, está en el aula virtual, es en el tema 9 de herencia y polimorfismo, 00:00:09
y lo que propone es hacer una estructura o jerarquía de clases para almacenar datos sobre planetas y lunas. 00:00:19
Habla de los atributos que deben tener, ¿vale? 00:00:27
algunos de ellos, pueden ser otros, y que hay que hacer constructores y métodos para recuperar la información 00:00:31
y almacenar la información, mostrar la información del objeto. 00:00:36
Y pide un método que da a un objeto que imprima toda la información del mismo, 00:00:40
además de su lista de satélites, si los tuviera. 00:00:48
La idea es que haya una clase astros y dos clases, planetas y satélites, 00:00:51
que lo que hacen es extender la clase abstracta astros, 00:00:56
que astro se abstracta quiere decir que no voy a poder hacer un new de astros 00:01:00
y una posible solución que he denunciado es crear una lista de objetos 00:01:04
insertar los planetas y satélites directamente 00:01:09
yo en mi solución están directamente insertados 00:01:13
y luego mostrar un pequeño menú para que el usuario pueda imprimir la información del astro que elija 00:01:17
os voy a mostrar como funciona 00:01:23
Bien, he averiguado, porque esta es la segunda vez que intento grabar, cómo hacer lupa mientras grabo. 00:01:30
Entonces vale, fijaros, aquí arriba, estoy en la zona superior de mi proyecto. 00:01:36
Si os fijáis, tengo cuatro archivos, astro, planeta, programa de astros y satélite. 00:01:41
Las tres clases son astro, planeta y satélite. 00:01:48
Y el programa principal, que está aquí, es el programa de astros, que es el que estáis viendo a la derecha. 00:01:51
voy a ejecutarle 00:01:57
es raro salir del zoom 00:01:59
me sale un menú 00:02:01
me dice que elija 00:02:11
cual astro quiero ver 00:02:12
si le digo la tierra 00:02:13
que es el 0 00:02:16
me da los datos de la tierra 00:02:16
y me dice que tiene satélites 00:02:20
y me los enseña 00:02:21
cuando le doy a enter para continuar 00:02:22
si yo dijera la luna 00:02:25
que es el 3 00:02:26
me enseña los datos de la luna 00:02:27
y no me dice que tiene 00:02:30
como aquí arriba satélites 00:02:32
sino me dice que pertenece a un planeta 00:02:34
y cuando doy a enter 00:02:37
me vuelve a mostrar el menú 00:02:39
y puedo seguir haciéndolo 00:02:40
con cualquiera de ellos, por ejemplo 00:02:42
el 5 de Imus me dice que es un satélite 00:02:44
que pertenece a Marte 00:02:47
vale, si hago menos 1 00:02:49
termino 00:02:51
ahí ejecuta 00:02:52
vale, os voy a enseñar como están hechos 00:02:54
los diferentes clases 00:02:57
primero voy con Astro 00:02:59
bien, Astro 00:03:00
lo primero es que es una clase 00:03:02
abstracta, eso quiere decir 00:03:05
que no voy a poder crear objetos tipo astro 00:03:07
vienen sus atributos 00:03:09
que son todos private 00:03:11
porque no quiero que nadie los use 00:03:13
sin usar los getters o los setters 00:03:15
¿de acuerdo? 00:03:18
casi todos son double 00:03:19
excepto el nombre que es un string 00:03:21
y aquí tengo un 00:03:23
constructor 00:03:26
un constructor en el que 00:03:26
llegan todos los valores 00:03:29
y los pone 00:03:31
Y aquí viene un método abstracto 00:03:32
¿Qué quiere decir un método abstracto? 00:03:35
Que todas sus hijas van a tener que implementarlo 00:03:37
¿Por qué? Porque no tiene cuerpo 00:03:40
Fijaros, después de los dos paréntesis de los argumentos que debería recibir de entrada 00:03:41
No está el cuerpo, no hay una llave que se abre y una llave que se cierra como aquí 00:03:48
Entonces cualquier clase que extienda a astro deberá tener su propia muestra 00:03:53
Luego están todos los Getes y todos los Ethers 00:04:00
De todos los atributos 00:04:03
Que por lo tanto sus hijas no lo van a tener que realizar 00:04:05
Voy a ver planetas 00:04:09
Fijaros, planetas 00:04:11
Aparte de usar ArrayList 00:04:12
Que ahora veremos para qué 00:04:15
Planetas extiende a los astros 00:04:16
Extends astro 00:04:18
Entonces tiene más atributos 00:04:20
Como son estos de aquí 00:04:22
Que son la distancia al Sol 00:04:24
La órbita al Sol 00:04:27
si tiene satélites y cuáles son sus satélites. 00:04:29
Fijaros que tengo dos constructores, el de la línea 15 y el de la línea 24. 00:04:34
En el primer constructor la diferencia es que se le dice si tiene satélites o no 00:04:40
y se le da la lista de satélites. 00:04:47
Y en cambio en el segundo constructor no se le dice si tiene satélites o no 00:04:50
ni se le da aquí lista de satélites. 00:04:54
Por lo tanto, en este, cuando se le dice tiene satélites, se le pone a falso y se le hace una release, pero no se le pone ningún valor. 00:04:56
Y en cambio aquí se le pone tiene satélites con el valor que venga por aquí y con la lista de satélites que llega por aquí. 00:05:07
Y fijaros, en ambos se llama super. 00:05:15
Quiere decir que se está llamando a la clase que está por encima. 00:05:18
Recordad que la clase que está por encima del planeta son los astros. 00:05:21
Entonces, cuando yo llamo a super, estoy llamando al constructor de astros. 00:05:26
Si os fijáis, si me voy a astros, el constructor de astros recibía estos. 00:05:31
Uno, dos, tres, cuatro, cinco y seis argumentos para los seis atributos de astro. 00:05:39
Si me voy a planeta, cuando llamo a super, llamo uno, dos, tres, cuatro, cinco, seis. 00:05:51
y lo mismo en el segundo constructor de planeta. 00:05:55
Así que puedo crear planetas de dos maneras, sin satélites o con satélites. 00:05:58
Bien, luego tengo un método que es añadir satélite, que lo que recibe es un satélite. 00:06:04
Y lo que hace es que llama a la lista de satélites, que llama satélites, y le añade la S. 00:06:09
Y lo pone a true, independientemente de si antes tenía satélites o no, no lo comprueba. 00:06:16
Ahora, ¿cómo funciona el muestra de satélites? 00:06:21
Este muestra es la implementación del muestra abstracto que hay arriba en los astros. 00:06:23
Entonces, ¿qué hace? Hace un sistema de todo, de planeta, de nombre, radio, guerra, todo para cada uno de ellos. 00:06:33
Fijaros, el Mave, Radio, GetRotEje, GetMassa, todos estos son atributos que ha heredado de la clase abstracta a la que extiende a los astros. 00:06:41
Y luego, si tiene satélites, si esto es true, con un bucle desde 0 hasta el tamaño del satélite size, recorre la ArrayList. 00:06:55
Lo ha hecho con un for, pero podría hacer con un for each. 00:07:08
Y luego tiene sus getter y setter 00:07:10
Aquí 00:07:12
Para los atributos que ha añadido 00:07:13
Que no tenían los astros 00:07:16
Que son la distancia al Sol, la órbita 00:07:17
Y tiene SAT 00:07:20
Aquí están 00:07:21
La distancia al Sol, la órbita 00:07:23
Y tiene SAT 00:07:26
Y luego tiene un getter y un setter 00:07:27
Para los satélites, que es el ArrayList 00:07:30
Que tampoco existía antes 00:07:32
Vale, ya hemos visto cómo son los planetas 00:07:34
Vamos a ver cómo son los satélites 00:07:36
Fijaros que la clase satélite también extiende la clase astro 00:07:38
Y que tiene, por arriba, tres atributos que no tenían los astros 00:07:42
Que son la distancia al planeta, la órbita del planeta y cuál es su planeta 00:07:50
Y solo tiene un constructor, que es satélite 00:07:55
Fijaros que el constructor, en la línea 13, llama a Super 00:08:00
que es el que hemos visto antes, el mismo que heredan los planetas, también lo heredan los satélites, es el súper del astro, ¿de acuerdo? 00:08:03
Y lo que llamo es luego, es a los tres atributos que tengo yo como satélite, línea 14, 15 y 16, la distancia al planeta, la órbita al planeta y el planeta en sí mismo, 00:08:13
que me ha llegado a mí como argumento voy a quitar el zoom porque si no me muevo a la derecha aquí 00:08:26
aquí al final me llega un planeta ese planeta que me llega es el que se me mete aquí en la línea 00:08:32
F6 el que me lo guardan en mi atributo planeta que es un planeta fijaros aquí en la línea 9 yo tengo 00:08:38
un planeta que es a quien a quien yo pertenezco tiene el muestra que solo muestra parte de su 00:08:45
su información y luego los getes y los hitters. Voy a salir del zoom y ya está. 00:08:53
Ahora voy a ver el enunciado, a ver si se me ha olvidado algo. Mira, esto se me ha olvidado 00:09:06
porque dado un objeto de sistema solar imprime toda la información que dispone del mismo. 00:09:15
Yo creo que lo está haciendo para todo, a ver, los que tengo son estos tres y distancia, a ver, voy a contar, pauso, he estado contando, tengo seis, uno, dos, tres, cuatro, cinco, seis y los tres, así que me había despistado este comentario porque decía que solo muestra parte de la información del planeta y no es verdad, cuando muestra toda, los seis atributos de arriba y los tres que tiene como satélite y está mirando en planeta y es igual, 00:09:25
Cuando hago muestra, de aquí a aquí, tengo los tres atributos que tiene, que hereda de arriba, 00:09:54
1, 2, 3, 4, 5, 6, que es esta, gris, gravedad, temperatura, media y gravedad. 00:10:03
Si os fijáis en astro, tengo temperatura, media y gravedad. 00:10:09
Así que esta muestra muestra todo, no solo parte. 00:10:12
Aparte muestra los satélites. 00:10:15
Y en satélite, es verdad que solo tengo, solo imprimo el nombre del planeta. 00:10:17
Si quisiera imprimir algo más tendría que llamar a planeta punto que imprimiera el planeta muestra. 00:10:23
Vale, pues me voy al programa de astros y lo único que hago aquí es utilizar la release y el escáner, los importo. 00:10:30
Y tengo un programa principal aquí y un método estático. 00:10:39
¿Por qué es estático? Porque yo no voy a crear ningún objeto en este programa principal, pero necesito llamar a este método que debe estar disponible para cualquier clase ajena o yo misma que llame a este método. 00:10:48
Así que lo primero que hago es que creo un escáner y me creo un ArrayList de Astro. 00:11:03
Me lo puedo crear porque aunque yo estoy en programa Astro, o sea aquí, yo también conozco la clase Astro. 00:11:10
Así que yo en programa Astro, aquí, puedo llamar a un ArrayList, o perdón, definir y crear un ArrayList de Astro. 00:11:18
¿Qué hace luego? 00:11:26
hace los new para los planetas, los satélites 00:11:27
y desde la línea 24 hasta la 32 00:11:32
crea los tres planetas y crea los tres satélites 00:11:36
fijaros que cuando crea los planetas 00:11:41
no le digo cuáles son sus satélites 00:11:45
y cuando creo los satélites 00:11:47
sí que le estoy diciendo a cada uno 00:11:49
quién es su planeta 00:11:51
se lo paso como último argumento 00:11:52
Luego a la Tierra le añado el satélite Luna, a Marte le añado primero el satélite Phobos y luego el satélite Deinus. 00:11:55
Voy a hacer un zoom, se hace aquí, de la línea 35 a la 37. 00:12:03
A la Tierra le añado un satélite, aquí, y aquí a Marte le añado el satélite Phobos y luego el satélite Deinus. 00:12:07
Todos estos los estoy añadiendo a la lista que me creía al principio. 00:12:16
la voy a volver a mostrar aquí 00:12:21
aquí, astros 00:12:23
que es una raíz de astros 00:12:25
fijaros que yo no he hecho ningún 00:12:27
new de astros y no me dejaría 00:12:29
porque es abstracta 00:12:31
y añado cada uno de ellos 00:12:33
tierra, venus y todos los demás 00:12:34
siento 00:12:37
un poco el mareo que os hago cuando 00:12:38
muevo el ratón cuando tengo el zoom 00:12:41
fijaros que aquí estoy añadiendo a una lista 00:12:43
que es una raíz de astros 00:12:45
cada uno de los planetas 00:12:47
y satélites. Todos ellos son astros, aparte de ser planeta y satélite. La Tierra, Venus 00:12:49
y Marte son planetas. Fijaros en la zona superior de la pantalla como he hecho New Planeta para 00:12:56
cada uno de ellos. Y en la zona intermedia de Planeta Antaia he hecho New Satélite para 00:13:02
Luna, Fuegos y Deimos. Pero todos ellos los puedo añadir a una lista de astros. Y luego 00:13:08
aquí, voy a bajar el zoom, tengo un array, vale, tengo un bucle, voy a quitar el zoom del todo, que es un mareo, tengo un do while en el que hago todo el bucle, 00:13:15
que lo primero que hago es mostrar lista de astros. Esta función es la estática que pertenece a mi propia clase, y si vuelvo a ella, lo único que hace, voy a hacer zoom, 00:13:26
Haces un system out con esa mensaje 00:13:41
Lista de astros 00:13:46
Y luego lo recorro en un bucle 00:13:47
Desde el 0 a astros.site 00:13:49
Y para cada uno de ellos 00:13:52
Hago un cast 00:13:54
Fijaros, en la línea 13 00:13:55
Con la palabra astro 00:13:57
Entre paréntesis 00:14:00
Estoy convirtiendo 00:14:01
El astros.get 00:14:04
Que me devuelve un elemento 00:14:06
Porque siempre que a una array list 00:14:07
Le hago un get 00:14:09
Lo que me devuelve es un elemento 00:14:10
que es un objeto de tipo 00:14:11
como muy genérico 00:14:12
de Java, es elemento 00:14:16
lo estoy convirtiendo a un astro 00:14:17
aquí he definido que A 00:14:20
es de tipo astro, entonces le pido 00:14:21
a la lista de astros según el get 00:14:23
que me obtenga el 0, luego el 1, el 2 00:14:25
el 3, el 4 00:14:28
y en cada vuelta 00:14:29
después de guardarlo en astros 00:14:30
imprimo 00:14:34
la palabra astros, el número 00:14:36
el bucle 00:14:37
El mareo este con la lupa 00:14:39
El número que es, por ejemplo el 0, luego el 1, luego el 2 00:14:43
Y le pido a ese astro, que es la A, que me diga cuál es su nombre 00:14:47
Así que imprime la lista de astros cada vez que llamo a mostrar listras astro 00:14:51
Esto lo hago aquí abajo 00:14:57
Cada vez que entro en el bucle, muestro la lista 00:14:58
Me pregunta un número de astros, lo cojo 00:15:04
Y si he cogido un número entre cero y el mayor 00:15:08
Lo obtengo y lo muestro 00:15:11
Y si he cogido menos uno, me voy 00:15:14
Y si cojo cualquier otra cosa, incorrecta 00:15:17
Fijaros que le digo a punto muestra 00:15:20
Astro punto muestra 00:15:23
Si es un planeta, llamará a su muestra de planeta 00:15:25
Y si es un satélite, llamará a su muestra de satélite 00:15:30
Y luego 00:15:33
Pido un salto de línea 00:15:36
Y ya está 00:15:39
Quito el zoom 00:15:41
Y creo que ya lo he contado todo 00:15:44
Si vuelvo 00:15:48
Vale, fijaros 00:15:49
He creado los atributos para cada uno de ellos 00:15:52
He creado constructores para cada clase 00:15:55
He creado métodos de getter y setter 00:15:57
Para almacenar y recuperar atributos 00:15:59
y he creado un método muestra para mostrar la información del objeto 00:16:01
si, el muestra 00:16:07
incluye toda la información del objeto 00:16:10
cumplo todo lo que pide el ejercicio 00:16:13
pues con esto ya me puedo ir 00:16:15
gracias por la atención 00:16:18
pues no me he ido, voy a tener que cambiar de pantalla 00:16:20
y pausar 00:16:29
Valoración:
  • 1
  • 2
  • 3
  • 4
  • 5
Eres el primero. Inicia sesión para valorar el vídeo.
Idioma/s:
es
Autor/es:
Cristina Moreno Ruiz
Subido por:
Cristina M.
Licencia:
Reconocimiento - No comercial - Compartir igual
Visualizaciones:
26
Fecha:
15 de febrero de 2023 - 14:29
Visibilidad:
Público
Centro:
IES LOPE DE VEGA
Duración:
16′ 32″
Relación de aspecto:
1.78:1
Resolución:
1280x720 píxeles
Tamaño:
53.02 MBytes

Del mismo autor…

Ver más del mismo autor

Comentarios

Para publicar comentarios debes entrar con tu nombre de usuario de EducaMadrid.

Comentarios

Este vídeo todavía no tiene comentarios. Sé el primero en comentar.



EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid