Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Ejercicio Agenda - 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. Este código que estoy mostrando es de Antonio y lo voy a modificar.
00:00:00
¿Por qué el de Antonio? Porque es el primero que he cogido y está bastante bien hecho.
00:00:05
Así que no pongo su nombre como autor porque lo estoy cambiando.
00:00:09
Lo primero que quiero cambiar del código de Antonio es algo que decido yo por elegancia, ¿de acuerdo?
00:00:17
Ver enunciado, creo que no lo dice en ningún sitio. Voy a mirarlo.
00:00:26
Aquí tengo el enunciado. Dice que hay un programa que funcione como una agenda telefónica de contactos y la agenda dice que está formada por un conjunto de contactos y debe permitir las siguientes operaciones y luego que implementen las clases contacto y agenda.
00:00:30
y luego el programa agenda
00:00:51
con el main
00:00:53
bien, no lo dice
00:00:55
en ningún sitio
00:00:56
lo único que dice aquí en la ampliación
00:00:59
que cuando amplía la agenda
00:01:08
solo tiene una lista de contactos
00:01:09
¿cuál es mi propuesta?
00:01:11
mi propuesta es
00:01:15
Antonio ha puesto la lista
00:01:17
de contactos
00:01:19
pública
00:01:21
así que cualquiera podría ver y usar
00:01:23
las funciones de lo que es el ArrayList
00:01:26
y la he puesto
00:01:28
estática, quiere decir que
00:01:30
solo voy a poder tener una agenda
00:01:31
a mi me interesa más poder tener
00:01:34
más agendas y utilizarla en otros
00:01:35
programas, entonces para eso
00:01:38
en vez de hacerlo estática
00:01:39
voy a permitir que se instancien
00:01:41
y no va a ser una variable
00:01:43
estática, quiero decir
00:01:46
error, que me explico mal
00:01:47
no va a ser un atributo estático de la clase
00:01:48
agenda, porque voy a permitir
00:01:51
que cuando se instancie
00:01:53
la clase agenda, que se puede instanciar de todas las maneras, tanto si la lista es estaría
00:01:55
como si no, ¿de acuerdo? Cada una de las agendas tenga su propia lista de contactos.
00:02:00
Poniendo la estática, cuando tú haces un new de agenda, todas comparten la misma lista
00:02:05
de contacto, lo que no sería adecuado. Así que yo voy a quitar el estático y en vez
00:02:10
de public la voy a hacer privada ahora yo quiero quiero que cada vez que
00:02:18
alguien me cree una
00:02:25
me crea una agenda
00:02:29
voy a trabajar con agendas diferentes y para eso necesito un constructor que no
00:02:33
tiene antonio como lo hago yo con el botón derecho que me explica marcos
00:02:36
insert code y yo lo que voy a hacer
00:02:42
Si responde, aquí está. Es crear un constructor. Podría hacer un getter o un setter que ya conocéis, las dos cosas y otras opciones que no hemos visto y yo voy a crear un constructor.
00:02:46
Así que me va a crear el constructor para clase agenda y en principio lo va a crear con... Ah, mira, muy bien. Ahora mismo me lo ha creado un constructor sin argumentos. Antes de grabar el vídeo me lo creaba con argumentos.
00:02:58
Ahora, en este constructor yo quiero que cualquiera que cree una agenda tenga una lista de contactos
00:03:13
Y que esa lista de contactos sea nueva, así que no quiero que se haga siempre aquí fuera
00:03:23
Prefiero hacerlo dentro, sí, podría ser dentro o fuera, no importa, es verdad, está bien
00:03:29
Pues fíjate, en este caso no haría falta el constructor, podría valer así y hace
00:03:35
un new ArrayList.
00:03:43
Aún así me gusta más hacerlo elegante.
00:03:44
Entonces aquí, esto, control-C por ahora, control-V, inicio, lo tabulo bien, pongo un
00:03:47
se me ha quedado atontado el programa
00:04:02
ahora estoy grabando
00:04:09
y antes no estaba grabando, muy bonito
00:04:27
mientras no grababa
00:04:28
he hecho un
00:04:30
refactor
00:04:32
no sé si lo puedo deshacer
00:04:35
vale
00:04:38
cuando quería grabar y no grababa
00:04:39
he dicho que no me gustaba el nombre de este atributo
00:04:45
¿por qué?
00:04:47
porque es singular y es una lista de contactos
00:04:48
va a tener varios contactos, entonces voy a hacer
00:04:51
un refactor
00:04:53
voy a refactor, voy a hacer un rename
00:04:54
le voy a cambiar el nombre
00:04:57
y le voy a llamar lista de contactos
00:04:58
en plural
00:05:01
me lo ha cambiado en todo el programa
00:05:02
en todas las apariciones del programa
00:05:05
de Antonio
00:05:07
como lo he dejado
00:05:08
que tengo un constructor que me creará
00:05:11
el atributo lista
00:05:13
de contactos para cualquier agenda que yo
00:05:15
instancie y me hará un new
00:05:17
y me devolverá una agenda con el
00:05:19
la lista de contactos vacía. Por ahora, pauso.
00:05:21
Hemos explicado algunas cosas. Nos quedamos en que había añadido el constructor y la
00:05:39
lista de contactos, y que era privada la lista de contactos, lo que ha afectado al
00:05:45
código que tenía Antonio, y el resto
00:05:49
están bien, porque aquí lo que hace es que si para añadir un contacto que le
00:05:55
viene como contacto, si no existe, le pide el nombre y, perdón, hace un getNombre para
00:05:59
ver el nombre de ese contacto y si no existe, entonces lo añade a la lista de contactos
00:06:09
y luego devuelve un true. Eliminar contacto está bien, porque lo que hace es comprueba
00:06:15
si existe el contacto y si existe lo va buscando. Realmente para eso podría hacer otra cosa.
00:06:24
¿Qué podría hacer? Antonio ya tiene una función que se llama busca contacto, entonces
00:06:39
yo puedo, como sé que existe, lo busco y luego lo borro, porque aquí lo que está
00:06:44
haciendo en este bucle antonio es buscarlo lo recorre hasta que lo
00:06:49
encuentra y lo borra pero él ya tiene esa función la hace justo debajo aquí
00:06:54
no perdón estoy buscando aquí abajo se llama busca contacto devuelve un entero
00:07:01
recibe un string le da vueltas hasta que lo encuentra y devuelve el número si no
00:07:08
devuelve menos 1. Pues aquí, él ya ha preguntado si existe, así que el contacto
00:07:13
existe. Entonces, ¿qué hago? Me defino una variable y que se entera y le
00:07:19
devuelvo ahí, en ese valor, la posición de buscar el contacto y
00:07:25
luego simplemente la borro. Hago un listacontactos.remove esa posición, que
00:07:31
que es la posición y, y luego devuelvo true. Así que todo esto me sobraría.
00:07:38
Y a ver, me sobra un paréntesis, una llave, perdón.
00:07:45
Pregunta si existe el contacto, si existe lo busca y lo remueve, lo borra, devuelve true.
00:07:55
Y si llega aquí es que no existe y devuelve false. Eso es un cambio
00:08:03
que yo quería hacer. Y luego aquí hay otra cosa que, en esta parte, Antonio Paracano
00:08:08
a uno de los contactos le pregunta el nombre y el teléfono. Y resulta que ya existe ese
00:08:21
método y se llama mostrar contacto. Entonces, ¿qué tengo que hacer en esta agenda? En
00:08:30
Voy a hacer eso para cada uno de los contactos, en ese punto estoy en lista contactos, punto
00:08:37
Hago un get y obtengo la i y a ese le digo que se muestre, que tiene mostrar contactos.
00:09:04
Entonces, para el contacto de la lista, primero pregunto si la lista tiene tamaño 0, está comprobando que existen contactos, si existe la va a recorrer.
00:09:14
Y para cada uno de ellos
00:09:30
Hace lista contactos
00:09:33
Y a cada uno de ellos le pide que se muestre
00:09:35
Así que obtiene el contacto
00:09:38
Y le dice muéstrate
00:09:39
Y luego un salto de línea
00:09:41
Y así para cada uno de los contactos
00:09:42
Ya existe, no necesito imprimirlo yo
00:09:45
Y lo demás
00:09:47
Está bien
00:09:50
Entonces, ¿qué otra cosa he cambiado?
00:09:52
En el programa principal
00:09:55
En el programa principal
00:09:56
Vale, como he cambiado cosas
00:09:58
Ay, se me ha quedado tonta
00:10:01
Había cambiado cosas en el autor
00:10:09
Y ahora no lo veo
00:10:15
Autor, aquí
00:10:16
Yo el de contacto no lo he cambiado
00:10:18
Así que ese es entero de Antonio
00:10:22
Este he cambiado cosas
00:10:24
Es de Antonio y mío
00:10:26
Antonio ha puesto el menú
00:10:30
Ha puesto pedir la opción
00:10:32
y luego ha creado la agenda
00:10:36
que ahora tiene una lista privada
00:10:38
entonces viene con la lista privada vacía
00:10:41
y luego crea los contactos
00:10:43
y luego para cada uno de ellos lo añade
00:10:45
muestra el menú, pide la opción
00:10:48
y todas las soluciones funcionan bien
00:10:51
pero ¿qué he cambiado yo?
00:10:53
pues primero, en esta línea
00:10:55
Antonio cuando le buscaba un contacto
00:10:57
llamaba al lista.getContacto.get y getNombre, pero no hace falta, vale con llamar al mostrar
00:11:01
contacto, no hace falta llamar al getNombre y al getTeléfono porque existe el método
00:11:09
mostrar contacto. Entonces, y aquí, Antonio está probando a añadir un contacto que ya
00:11:14
existía. Yo simplemente intentaba añadir el c1 y decía contacto añadido y luego decía
00:11:23
que no se podía. Si le eliminabas y le volvías a añadir, se podía para hacer la prueba.
00:11:29
Y yo he cambiado el código. Entonces, este es mi código, unshift, no, aquí lo descomento
00:11:34
y comento esto
00:11:50
y aquí me he comido
00:11:53
next
00:11:57
es next directamente
00:12:06
next line
00:12:08
quería que te diera la línea
00:12:10
esto
00:12:12
¿qué hago?
00:12:12
el código dice, escríbenme el contacto que quieres añadir
00:12:16
y lo lee
00:12:19
ahora, entonces, voy a ponerlo más grande
00:12:20
perdón, no me da cuenta de esto
00:12:22
entonces le pregunta a la agenda si existe el contacto
00:12:24
si el contacto existe no puede añadirlo
00:12:32
ahora si no le pregunta al usuario que escriba el teléfono del contacto
00:12:34
lee el entero, lo guarda en la variable teléfono
00:12:39
y luego ha puesto un next line para que lea el salto de línea
00:12:44
como el entero no lo lee para que no se quedara colgado
00:12:49
y luego simplemente le digo a la agenda que añade el contacto
00:12:51
y directamente hago un new
00:12:54
con el nombre que acabo de leer
00:12:55
aquí
00:12:58
y con el teléfono que acabo de leer
00:12:59
aquí
00:13:02
vale, pues lo vamos a ejecutar
00:13:03
ah, y aquí tengo un cambio
00:13:06
Antonio le preguntaba a cada uno
00:13:09
de los contactos que se mostrara
00:13:10
cuando quiere mostrar la agenda
00:13:13
y yo lo que he hecho
00:13:14
es que he utilizado su método
00:13:16
de listar contactos
00:13:18
porque el método ya existía
00:13:20
era este
00:13:21
Este es el método que ya tenía Antonio
00:13:23
Que es listar contactos
00:13:26
Que lo recorre entero
00:13:27
Y a cada uno de ellos le pide que se muestre
00:13:28
Vale
00:13:31
Entonces
00:13:32
Yo creo que ya
00:13:33
A ver si funciona
00:13:50
Porque no lo he probado
00:13:51
Lo estoy probando en directo
00:13:56
Entonces la agenda se me muestra
00:13:57
Aquí está
00:14:05
Con un salto de línea para cada uno
00:14:08
Si quiero buscar el contacto, por ejemplo, PP3, aunque lo ponga en minúscula, lo ha encontrado
00:14:11
Puedo eliminar un... bueno, si pongo... buscar un contacto que no existe, como PP8
00:14:19
El contacto no existe
00:14:27
Si le digo que eliminar un contacto y elimino a PP3
00:14:33
Contacto eliminado
00:14:39
Si quiero eliminar otro contacto que sea PP34 que no existe, me dice que el contacto que intento eliminar no existe.
00:14:43
Voy a mostrar los contactos para que lo veáis.
00:14:53
El 1, 2, 4, 5, 6, 7.
00:14:56
Ha desaparecido el 3.
00:14:58
¿Y qué me quedaba por hacer?
00:15:01
He añadido eliminado...
00:15:06
No sé si he añadido uno que ya existiera.
00:15:09
a ver, ya, eliminar, vale, voy a intentar añadir uno que no exista, o sea, uno que ya exista, tres, añadir contacto,
00:15:13
y voy a decir, por ejemplo, pp1 con minúsculas, y me dice contacto ya existe, no puedo añadirlo, y 7, salir, vale,
00:15:26
Entonces, ¿qué cosas importantes? Usar los métodos de cada clase. Si la agenda tiene que mostrar sus contactos, lo hago con la agenda, alistar contactos.
00:15:38
Y si necesito que se muestre un contacto dentro de la agenda, como por ejemplo en esta opción, que quiere imprimir un contacto, que es la 2, pues no llamo a los métodos del contacto,
00:15:50
perdón, no llamo al getNombre
00:16:04
y al getTeléfono
00:16:07
porque para algo existe un método
00:16:09
que es mostrar contacto
00:16:10
tengo que utilizar los métodos que existen
00:16:12
y de lo que ha hecho
00:16:16
de la ampliación
00:16:20
lo que ha hecho en la ampliación es una clase
00:16:24
contacto de empresa que extiende
00:16:26
a contacto
00:16:28
Y que tiene los métodos, los getter y los setter de 10.
00:16:30
Ahora, contacto a personas es lo mismo, solo que tiene el cumpleaños, que lo he definido como string.
00:16:36
Y extiende a contacto.
00:16:41
Y lo único que no es correcto es que creo que en el ejercicio se pedía que contacto fuese abstracto.
00:16:43
Voy a buscarlo.
00:16:53
Lo he buscado para comprobarlo.
00:16:58
Aquí estaba.
00:17:00
la clase al contacto tiene que ser abstracta. Así que me he venido al NetBeans y le he dicho a
00:17:00
class que sea abstract y entonces inmediatamente hay errores en el programa principal porque están
00:17:10
aquí los errores. Primero los que tenía antes Antonio, esto no se puede hacer un new de
00:17:16
contacto porque ya es una clase abstracta y cuando me lo pongo encima me lo dice. El contacto es
00:17:24
es abstract, cannot be instantiated. Entonces, esto los voy a quitar, que no me hacen falta
00:17:29
tantos. Y ahora, las empresas, tengo que hacer un nido de contacto de empresa, he puesto
00:17:34
la página web por delante, porque Antonio la ha puesto por delante. Ha puesto página,
00:17:44
nombre y teléfono. Y ahora, las personas, si os fijáis, tienen que tener un stream
00:17:48
del cumpleaños. Por eso me da error, porque no viene el stream del cumpleaños. Entonces,
00:17:53
Les voy a poner aquí y voy a poner solo el año para no escribir tanto y aquí, dos,
00:17:57
tres.
00:18:16
Vale, ahora veis que ya no dan errores los tres y creo que está bien hecho porque contacto
00:18:17
persona llega el nombre teléfono y el cumpleaños en ese orden y yo aquí lo he puesto como
00:18:25
nombre teléfono y cumpleaños y en cambio el contacto de empresa está puesto como
00:18:33
página web nombre y teléfono es el orden entonces tengo que hacerlo en el mismo
00:18:38
orden página web nombre
00:18:44
estos no existen por eso me da error
00:18:48
y creo que por aquí había un new que va a dar error ahora mismo porque no puedo
00:18:52
crear un contacto cuando lo añado este aquí creo que lo explicó lucía que le
00:18:56
preguntan que ahora no lo voy a hacer en directo tienes que preguntarle si quieres
00:19:05
añadir una persona o una empresa y dependiendo de lo que
00:19:09
quieras añadirle le tendrás que crear la página web o
00:19:14
Cumpleaños
00:19:20
Y entonces haría un new de una cosa
00:19:22
O un new de otra cosa
00:19:24
¿De acuerdo?
00:19:25
Y aquí lo voy a dejar
00:19:30
Hasta luego
00:19:31
- 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:
- 71
- Fecha:
- 22 de febrero de 2022 - 14:53
- Visibilidad:
- Público
- Centro:
- IES LOPE DE VEGA
- Duración:
- 19′ 34″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1148x646 píxeles
- Tamaño:
- 148.31 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.