Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Ejercicio 3 Mascotas - 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:
Ejercicio 3 Mascotas Unidad 9 Objetos en Java
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
y
00:12:43
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:
- 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 - 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
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.