Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Solución a ejercicio Astros (POO Java) - 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:
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
y
00:16:05
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:
- Eres el primero. Inicia sesión para valorar el vídeo.
- 1
- 2
- 3
- 4
- 5
- Idioma/s:
- 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
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.