Saltar navegación

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

Ejercicio 3 Mascotas - 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 14 de febrero de 2022 por Cristina M.

37 visualizaciones

Ejercicio 3 Mascotas Unidad 9 Objetos en Java

Descargar la transcripción

Hola a todos. Siento la desincronización entre mi voz y la imagen, pero no puedo hacer nada, mi ordenador es antiguo. 00:00:02
Ejercicio 3 de mascotas. Estamos viendo el enunciado. Parte es importante del enunciado, que me está ayudando a construir la jerarquía de clases. 00:00:10
Me dice que tengo una clase abstracta de la que salen tres clases que heredan de esa clase, los perros, los gatos y las aves. 00:00:19
además añade que la clase aves es abstracta y que de aves se heredan loro y canario 00:00:26
me indica los atributos que tienen cada una de las clases 00:00:33
que en el caso de las abstractas, bueno en el caso de las super clases que van a heredar sus hijos 00:00:37
independientemente que sean abstractas o no 00:00:43
y los que tienen los hijos de los que no hereda nadie 00:00:46
como perro que tiene que tener raza de pulgas 00:00:51
o gato que tiene que tener 00:00:53
color y pelo largo 00:00:55
todos tienen 00:00:57
un atributo, por ejemplo, aquí que se llama 00:00:58
habla 00:01:01
en cambio el oro y 00:01:01
canario 00:01:05
sí que también lo tienen ahí 00:01:06
ah, lo mismo, es posible que solo lo tengas 00:01:09
importante, que hay cuatro tipos de animales 00:01:11
que hay que hacer una clase inventario 00:01:13
que es para guardar todos los animales 00:01:15
y que 00:01:17
ese inventario tiene que ser una raíz privado y que tengo que hacer las 00:01:19
siguientes cosas que no tienen por qué estar en un menú yo voy a hacer del 00:01:25
tirón así que voy a empezar con mis clases 00:01:29
mi programa en java tiene 336 28 clases los 00:01:36
las clases que hemos visto aquí 1 2 3 4 5 6 que son ave canario gato 00:01:43
inventario, loro y mascota, que son seis. Perdón, que me he cuidado una perro. Inventario 00:01:49
sería la séptima clase y el programa la octava. Voy a empezar, cierro esto y empiezo 00:01:55
por mascota. Mascota me está diciendo que es una clase abstracta, así que la defino 00:02:01
como abstracta. Y para que sea abstracta tiene que tener al menos un método abstracto. Tiene 00:02:07
dos, tiene muestra y habla. Son métodos en los que no están las llaves y no hemos definido 00:02:13
la implementación y lo van a tener que hacer que hacer los hijos o hijas que hereden de mascota 00:02:18
tiene todos estos atributos que son privados para que no se puedan ver en sus hijas o fuera de la 00:02:24
clase mascota para que para usarlos haya que utilizar los getter y los setter y luego tiene 00:02:33
el constructor. El constructor recibe los cuatro atributos. El nombre que es un string, 00:02:40
la edad, el estado que es un string y la fecha de nacimiento que por ahora es un string. 00:02:48
Y además yo he definido otros métodos como el cumpleaños o morir. El cumpleaños simplemente 00:02:54
es un método que le aumenta uno cada vez que le llamas, aunque no lo hemos usado. Y 00:03:00
Y morir, simplemente lo cambia a muerto el estado que es un string. 00:03:05
Si me voy al enunciado, miren, aquí está el método muestra, el cumpleaños, morir y habla. 00:03:11
Yo he definido así morir y cumpleaños, y muestra y habla están aquí que son abstractos. 00:03:17
Y luego están los getter y los setter para que las hijas o desde fuera se puedan utilizar los atributos que son privados. 00:03:21
Y no tiene ninguna importancia. 00:03:32
Vale, seguimos. 00:03:34
AVE, que la tenemos aquí a la derecha, hereda de la clase abstracta mascota y a su vez es abstracta. 00:03:35
Entonces aquí viene abstract, es una clase, se llama AVE y hereda, así que extiende mascota. 00:03:43
¿Qué atributos tiene? Tiene dos, pico y vuela. 00:03:50
Aquí está pico y aquí está vuela, que venían aquí indicados en el UML. 00:03:54
además cualquier objeto que sea de la clase AB tendría estos cuatro atributos 00:03:57
que estoy marcando en la derecha 00:04:07
el nombre, la edad, el estado y la fecha de nacimiento de mascota 00:04:08
porque lo extiende, lo hereda 00:04:12
pero como es abstracta nunca vamos a poder crear objetos de tipo mascota 00:04:14
lo heredarán sus hijos, el loro, la clase loro y la clase canario 00:04:18
¿cómo funciona? 00:04:22
El constructor de abe recibe todos los argumentos y llama a super, que es el de mascota. 00:04:27
Así que llama con los cuatro primeros, nombre, edad, estado y fecha de nacimiento. 00:04:36
Muy importante que seáis ordenados y que igual que ven en un orden, sigan en un orden al superior, al super. 00:04:41
Y dis.pico le asigna pico. 00:04:48
Pero aquí se usa dis para distinguir entre el atributo del objeto de la clase mascota y el nombre de la variable que llega como argumento, que es pico también. 00:04:51
Luego están los métodos abstractos que van a tener que definir sus hijos. 00:05:05
Lo van a tener que definir loro y canario, que son los que extienden a aves. 00:05:10
Esta muestra, hablar y volar. 00:05:16
Y tiene getter y setter para todos los atributos nuevos como pico y vuela que están aquí. 00:05:17
Bien, entonces voy a por el loro. 00:05:25
El loro además tiene el atributo origen y habla. 00:05:27
Así que cuando llamamos al constructor del loro, que recibe bastantes argumentos, 00:05:34
los primeros cuatro son los que va a recibir la mascota. 00:05:39
porque los he agregado de mascota, y los siguientes dos, como pico y vuela, los que tienen las aves. 00:05:47
Entonces cuando llamamos al super, estamos llamando al super de aves, que recibe 1, 2, 3, 4, 5, 6, hasta pico y vuela. 00:05:53
Y luego 10.origen a lo que venga aquí en origen, y 10.habla al habla que venga aquí como atributo. 00:06:01
Cuando llamamos a este super, estamos llamando al super de aves, que si os fijáis, repito, tiene 6 argumentos. 00:06:08
Si yo me voy a aves, el constructor de aves tiene, aquí los tenéis, nombre, edad, es el segundo, estado, fecha de nacimiento, el cuarto, pico y huela, el sexto. 00:06:17
Y luego este llama al constructor de mascotas, que es de cuatro. 00:06:29
Les vuelvo a Loro. 00:06:34
Loro tiene origen y habla y él es la primera clase que os estoy enseñando donde define cómo se implementa el método muestra. 00:06:35
entonces el método muestra va a mostrar por pantalla 00:06:45
en este caso no devuelve un string 00:06:48
simplemente lo saca por pantalla 00:06:49
así que para 00:06:51
cada uno de ellos pone 00:06:52
nombre, edad, estado 00:06:55
si yo aquí intentara hacer 00:06:56
dis.nombre 00:06:59
me da un error 00:07:00
¿por qué? porque la variable nombre 00:07:07
que es de mascota es privada 00:07:09
entonces yo aunque heredo de mascota no lo puedo usar 00:07:10
si me pongo aquí encima 00:07:13
me lo dice, fijaros acerca del ratón 00:07:14
No puedo acceder a nombre 00:07:18
Porque está privado en mascota 00:07:22
Entonces para hacerlo 00:07:25
Tengo que llamar a getNombre 00:07:26
Tengo otra que es getPico 00:07:27
Que es de aves 00:07:29
Voy a poner en vez de getPico 00:07:31
Voy a poner la variable pico 00:07:33
Que la tiene aves 00:07:34
Y me dice exactamente lo mismo pero para aves 00:07:35
Que pico tiene un acceso privado 00:07:38
En ave 00:07:42
Porque es una variable privada 00:07:42
Entonces por eso tengo que usar 00:07:44
El constructor 00:07:46
Lo dejo como estaba, con el getter de nombre y el getter de pico. Eso quería contarlo, sí. 00:07:47
¿Cómo implementa habla que no lo había hecho nadie hasta ahora? El loro dice hola hola y saluda, 00:07:56
dice buenos días y volar convierte su estado a volando. Luego los getter y los setter son comunes. 00:08:02
Bien, voy a canario, es muy parecido al loro porque extiende ave, tiene un atributo coloricante, 00:08:10
por lo tanto cuando hace, cuando el constructor al final recibe el color que es un string y canta 00:08:18
que es un boolean, igual que el loro llama al super de ave con sus seis variables hasta el pijo y 00:08:26
Y luego asigna a su color, que se llama el atributo color, igual que el argumento que llega aquí. 00:08:34
Entonces, para distinguir, el suyo propio del objeto es dis.color. 00:08:42
Y el que llega como en un momento es color. 00:08:46
Y aquí lo que hace es imprimir. 00:08:49
Y el habla es diferente del loro, dice pio pio. 00:08:52
Y el saluda dice hola, ¿cómo estás? 00:08:55
Y luego éter y éter. 00:08:58
Bien hecho, loro y canario. 00:09:00
Me voy al perro. 00:09:01
el perro extiende mascota 00:09:02
y ya no es hasta esto, así que tiene que definir 00:09:04
implementar los métodos 00:09:07
que mascota no había hecho 00:09:09
los métodos que no había hecho mascota 00:09:10
era el muestra 00:09:13
que lo hace específico para 00:09:14
perro y 00:09:16
el habla, que dice guau guau 00:09:18
y lo que digo, el constructor 00:09:20
le llega, aparte 00:09:22
de los habituales, llega raza y 00:09:25
pulgas, así que 00:09:27
llama el super de mascota con los cuatro 00:09:28
primeros y luego llama a raza y a pulgas no tiene más y el gato igual extiende a 00:09:31
mascota tiene el color y el pelo largo que lo podemos ver aquí 00:09:37
el gato color y pelo largo y tiene que definir muestra y habla 00:09:42
y los define tiene su muestra y su habla que dice miau miau 00:09:48
y ya sólo me queda el inventario que es el inventario es una raíz así que tiene 00:09:54
que importar la librería para usar los ArrayList. Es una clase pública porque se va a usar 00:09:58
luego en el programa de inventario y tiene una variable privada, un ArrayList. Así que 00:10:05
para poder utilizarla hay que usar los métodos del inventario. Ahora, ¿qué tipo de mascota? 00:10:09
Recibe una mascota y si es instancia de perro devuelve perro. Si es instancia de gato devuelve 00:10:18
el string gato si la mascota es instancia del oro devuelve el oro y si es instancia del canario 00:10:24
devuelve canario y aquí es como hace la lista de animales recorre todo el bucle desde cero hasta 00:10:30
el tamaño del animal por debajo sin cogerlo y para cada una de las mascotas 00:10:40
hace animales.get 00:10:45
y puede 00:10:49
no hacer el casting porque 00:10:51
cuando se define, se define como 00:10:53
una raíz 00:10:55
de mascota 00:10:57
vale, y para, guarda en un 00:10:58
string que llamamos 00:11:03
tipo, el tipo de mascota 00:11:05
para cada m y el 00:11:07
nombre, el nombre de la mascota, así que 00:11:09
imprime el número de la mascota 00:11:11
en la lista, dos puntos 00:11:13
de qué tipo es y cuál es su nombre. Y luego, para mostrar un animal, recorre todo el índice y va poniendo mascota y el número del índice. 00:11:15
Y luego obtiene el número de la mascota. La mascota sabe qué número ocupa de la lista. 00:11:30
Entonces yo a una mascota, que es la mascota i, le pregunto get y el índice y me dice qué índice está ocupando. 00:11:38
¿A qué le he dicho mal? Un momento, que paro. 00:11:50
Yo recorro el índice de 0 hasta el tamaño de la raíz y lo primero que hago es simplemente escribo mascota y el índice. 00:11:53
Mascota 0, mascota 1, mascota 2. La primera vez hago mascota 0 y guardo en m la mascota que ocupa la posición 0. 00:12:00
y luego le pido a esa mascota que se muestre 00:12:07
y se va a mostrar independientemente de si es un loro, un canario, un gato o un perro 00:12:10
cada uno se muestra de manera diferente 00:12:16
aquí solo muestra cada uno de los animales 00:12:18
y en cambio cuando llama a mostrar todos los animales 00:12:23
llama a mostrar un animal de ese índice 00:12:27
un poco raro, pero ahora lo veremos 00:12:31
y luego como inserto un animal, retiro una mascota 00:12:34
y lo añade 00:12:37
y eliminar a un animal 00:12:39
recibe el índice 00:12:42
si el índice es mayor que 0 00:12:45
y el índice está dentro del array 00:12:50
entonces utiliza 00:12:52
el método remove del array list 00:12:54
con el índice que le hemos dado 00:12:56
entonces por ejemplo le llevo un 5 00:12:58
y diría animales.remove 5 00:13:00
siempre y cuando 5 00:13:03
es mayor que 0 que lo es 00:13:04
y 5 sean menor que el tamaño 00:13:06
de la array, si la array tiene 00:13:08
3 y le decimos remove 7 00:13:10
no lo va a hacer, me devolvería un false 00:13:12
y después de borrar devuelvo un true 00:13:14
y lo último es 00:13:16
animales.clear que elimina el inventario 00:13:18
entonces vamos a ver como funciona 00:13:20
yo aquí 00:13:21
hago un new para perros 00:13:24
gatos, loros y canarios 00:13:26
y luego creo un inventario 00:13:28
y añado cada uno de los 00:13:30
inventarios, perdón, cada uno de los 00:13:32
animales P1, P2, G1, G2, que son el perro 1, el perro 2, el gato 1, el gato 2. Luego muestro los 00:13:34
animales que hay como lista y luego muestro un animal en concreto. En este caso yo he cogido 00:13:41
el animal G1, que es el gato 1, y le pido al gato 1 muestra. Luego muestra todos los animales que... 00:13:48
Ah, ¿por qué? Voy al enunciado, voy muy acelerada. Porque primero, el enunciado me pedía mostrar la 00:13:56
lista de animales, solo tipo y nombre. Y eso lo hace con este método, mostrar lista de 00:14:02
animales. Luego, mostrar todos los datos de un animal concreto. Y yo lo que hago es llamar 00:14:07
a Luna, que es G1, y o G1, punta muestra. Luego, mostrar todos los datos de todos los 00:14:13
animales. Eso lo hago con, llamando al inventario, mostrar todos los animales. Luego, inserto 00:14:19
animales en el inventario. Para eso me he creado un loro, que es Ruby, que era el loro de mi hermano, 00:14:27
que lo robaron y ahora tendría 41 años, y le hago inventario punto insertar animal. 00:14:33
Y luego, tras añadir a Ruby, muestro la lista de animales para que veáis que lo he insertado. 00:14:39
Lo penúltimo que hace es eliminar animales, que elimino el 1 y el 2, que ahora lo veremos. Muestro 00:14:45
cómo queda la lista de animales para eliminar el 1 y el 2, y por último me dice vacía el inventario. 00:14:51
Así que le llamo a vaciar inventario y muestro la lista tras vaciar inventario. 00:14:57
Lo voy a ejecutar. 00:15:02
Fijaros, he creado los animales, he creado el inventario, los he añadido y muestro la lista de animales. 00:15:09
Era lo que me pedían en el enunciado, mostrar la lista de animales, solo tipo y nombre. 00:15:19
Así que pone perro Bobby, perro Lulu, así imprime todos. 00:15:24
Luego pide que mostremos los datos de un animal en concreto. 00:15:28
Y yo lo que hago es G1.muestra 00:15:31
Llamo a muestra de G1 que es el gato Luna 00:15:34
Entonces cuando llamo a G1.muestra lo hace aquí 00:15:39
Un animal en concreto, como he dicho aquí 00:15:42
Es G1.muestra y es Luna 00:15:44
Y pone sus datos 00:15:47
Luego mostrar todos los animales 00:15:48
Entonces mascota 0, mascota 1 00:15:51
Y para cada uno lo muestra todos sus datos 00:15:54
Ahí muestra todos 00:15:56
y me piden 00:15:58
que inserte animales 00:16:00
así que yo voy a crear otra mascota 00:16:03
que se llama Ruby 00:16:05
y la inserto 00:16:06
le he llamado L2 y la inserto 00:16:09
como animal L2 00:16:11
y saco un mensaje 00:16:12
que pone, tras añadir a Ruby 00:16:15
mostrar lista de animales 00:16:17
llamo a insertar y luego 00:16:18
se imprime tras añadir 00:16:21
entonces tras añadir a Ruby, fijaros que 00:16:22
Ruby es el último, lo he insertado por el final 00:16:25
Loro, Rubik 00:16:27
Ahora voy a eliminar un par de mascotas 00:16:29
El 1 y el 2 00:16:31
La primera vez que elimina, elimina el 1 que es Lulu 00:16:32
Así que pasa de Bobby a Luna 00:16:35
Ahora fijaros que el 2 ya no es Luna 00:16:37
Sería Pecas que ha pasado de 3 a 2 00:16:40
Así que no está Pecas 00:16:42
Y luego fijaros que Rubik era el 6 00:16:43
Cuando termino de borrar el 1 y el 2 00:16:46
Ha pasado a ser el 4 00:16:49
Y por último 00:16:50
Voy a vaciar el inventario 00:16:52
y tras vaciar el inventario 00:16:55
la lista de animales está vacía 00:16:57
y creo que ya está 00:16:59
importante que en las clases abstractas 00:17:03
no se pueda hacer un new 00:17:06
si yo aquí intentara 00:17:07
si yo intento hacer 00:17:09
mascota 00:17:18
la voy a llamar m1 00:17:23
y voy a hacer un new 00:17:25
de mascota 00:17:27
me está dando un error 00:17:31
si me pongo encima 00:17:36
bueno, aparentemente no he puesto el punto y coma 00:17:37
pero ahora me debe de dar un error 00:17:40
fijaros, me dice que mascota es abstracta 00:17:41
y que no puede ser instancial 00:17:45
no puedo crear objetos de tipo mascota 00:17:46
y tampoco lo voy a poder crear 00:17:48
de aves 00:17:50
que por cierto 00:17:51
ave, ave, ave, eso es singular 00:17:55
un error muy grande es ponerlo en plural 00:17:58
y ya estaba haciéndolo en plural 00:17:59
las clases se hacen singular 00:18:01
intento crear un ave 00:18:03
la voy a llamar a1 00:18:05
con un new ave, aunque no he puesto todavía los valores 00:18:07
y fijaros que cuando me pongo encima de la pista 00:18:09
que me da el error, me dice que es abstracto 00:18:11
y que no puede ser instanciada 00:18:13
así que no podía crear 00:18:15
ni un ave, ni una 00:18:17
mascota 00:18:19
pero si puedo 00:18:20
una cosa interesante 00:18:23
Yo puedo decir que tengo una mascota que es M1 y decirle que apunte al canario 1. 00:18:26
Y eso sí puedo hacerlo. 00:18:36
No he creado una mascota, sino que he definido una variable M1 de tipo mascota y le he dicho que apunte a canario, que es una mascota. 00:18:38
Eso sí lo puedo hacer. 00:18:47
Y de hecho eso lo estamos haciendo en el inventario cuando yo le digo que quiero mostrar todos los animales, me hace un bucle y dice mostrar un animal y le escribo un índice. 00:18:48
en este caso el índice es 7 00:19:16
entonces si el índice es 00:19:19
por ejemplo 5 o lo que sea 00:19:21
si el índice está dentro del rango 00:19:22
imprime la palabra mascota 00:19:24
el número del índice y luego 00:19:26
en la variable m que es de tipo mascota 00:19:28
guarda 00:19:31
el objeto 00:19:32
que está en la posición índice 00:19:35
dentro del array 00:19:37
puede ser un canario, un loro, un perro 00:19:38
o un gato porque es lo único que tenemos 00:19:41
y fijaros como lo guarda en mascota 00:19:42
entonces no puedo hacer un nido de mascota 00:19:44
pero si puedo guardar en mascota 00:19:46
objetos 00:19:48
que heredan de mascota 00:19:49
y ya está todo 00:19:53
gracias 00:19:56
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 - Compartir igual
Visualizaciones:
37
Fecha:
14 de febrero de 2022 - 15:05
Visibilidad:
Público
Centro:
IES LOPE DE VEGA
Duración:
19′ 59″
Relación de aspecto:
1.78:1
Resolución:
1148x646 píxeles
Tamaño:
148.89 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