Saltar navegación

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

Ejercicio Agenda - 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 22 de febrero de 2022 por Cristina M.

71 visualizaciones

Descargar la transcripción

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:
  • 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:
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

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