Saltar navegación

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

TFG

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 18 de mayo de 2026 por Dayana Estefanía B.

15 visualizaciones

Presentación del Trabajo Fin de Grado de Formación Profesional

Descargar la transcripción

Buenos días, voy a presentar mi TFG, que es sobre un supermercado que contiene varios alimentos con sus categorías, una cuenta, la cesta, favoritos, un buscador con sus diferentes categorías y descuentos. 00:00:01
Entonces, hay cinco secciones, cinco materias que yo escogí, que es dispositivos móviles, entornos de desarrollo, asesoratos, bases de datos y programación de procesos. 00:00:19
Entonces, la primera categoría, programación de dispositivos móviles. 00:00:31
Gestión de desplazos. 00:00:37
La primera interacción debe ser fluida e implementar una gestión asíncrona para la transición inicial. 00:00:38
En las diferentes diapositivas, yo voy poniendo ejemplos con sus códigos que están dentro de las carpetas de proyecto y en GitHub. 00:00:47
Los flujos de pantallas, yo tengo diferentes pantallas que cuando yo voy a mi página principal y voy a un buscador 00:00:57
Cuando yo selecciono un alimento me muestra la información por ejemplo de una manzana 00:01:06
Me muestra cuantos kilos me van a vender aquella manzana 00:01:14
Y en relación con ellas también me aparecen sugerencias de diferentes alimentos 00:01:17
Vale, otro ejemplo de código es el método que permite que el checkout reconstruya el estado financiero de la compra sin volver a consultar la base de datos. 00:01:28
Eficiencias en listas. ¿Qué pasa? Que cuando yo selecciono diferentes alimentos no tienen 00:01:43
que estar duplicados. Si yo selecciono una manzana y vuelvo a seleccionar otra porque 00:01:52
yo quiero, no tiene que estar duplicado y me mostraría aquí que he comprado dos manzanas. 00:01:57
El adaptador vincula los datos de los modelos con la UIR de forma reactiva. 00:02:05
Y la librería, ¿qué pasa? Que yo al tener mi carpeta con diferentes imágenes para las diferentes categorías que tienen los alimentos, en vez de utilizar URL, yo he utilizado Glide para gestionar el trabajo para que no sea tan pesado. 00:02:13
La descarga ocurre en un hilo separado de la interfaz, y las imágenes ya descargadas se guardan en el disco del móvil para no consumir datos. 00:02:32
En un principio tuve problemas con ello porque hay algunas imágenes que se me cargaban y otras no. 00:02:40
Pero la mayoría sí estuvo funcionando. 00:02:49
Vale, la búsqueda reactiva. ¿Qué pasa con ello? 00:02:53
Que en la sección de categorías, cuando yo busco un plátano, una manzana, agua, una botella de agua, lo que sea, 00:02:56
Me salta un sistema de filtrado que responde a cada pulsación detectada del usuario 00:03:05
Dispara un algoritmo con su búsqueda y actualiza de forma automática con la nueva lista filtrada 00:03:15
El filtrado se realiza sobre la lista original en memoria para asegurar velocidad máxima 00:03:24
Siempre actualiza la vista con los resultados 00:03:33
vale la gestión de inputs 00:03:36
que pasa con esto 00:03:39
que yo al iniciar sesión 00:03:40
me tiene que dar 00:03:43
un mensaje 00:03:45
si yo no tengo registrado 00:03:46
una cuenta de correo 00:03:49
igual con la contraseña 00:03:51
que pasa con ello que la pantalla que yo 00:03:54
les voy a mostrar después tiene 00:03:56
inicio de sesión y si yo no tengo 00:03:58
ninguna cuenta vinculada en su momento 00:04:00
pues puedo 00:04:02
registrarlo con otro. Vale, otra categoría que es desarrollo de 00:04:04
interfaz. Sistema de diseño, arquitectura, experiencia. 00:04:12
Vale, el concepto de flashback. ¿Qué pasa con ello? Que yo he utilizado diferentes 00:04:18
fondos y componentes para generar capas visuales que se vean en link. 00:04:22
Uso el comparativo de diferentes diseños para captar la atención del usuario. 00:04:28
La jerarquía plana XML. ¿Qué pasa con ello? Que tiene 21 archivos de diseño XML y ha priorizado arquitectura sin vista sanidad. 00:04:35
Los elementos se posicionan de forma relativa entre ellos y elimina necesidad de capas extra. 00:04:47
La tarjeta de producto. ¿Qué pasa con ello? Que cada ítem del catálogo es un componente desacoplado diseñado con bordes suaves que transmiten modernidad. 00:04:55
Cada una de ellas tiene su diferente tamaño, pero que se acopla al tamaño de diferentes dispositivos que pueden abrirlo en tablets, ordenadores, móviles, se acopla. 00:05:05
acopla. Distribución en el grid, es lo que expliqué 00:05:19
antes. Configurado en las columnas, las categorías que están en la tercera lista, es completa 00:05:23
la pantalla. Y cuando yo selecciono, que cuando ven aquí alimentos tienen más, los kilos 00:05:31
y cuánto vale cada alimento. El feedback, manejo nativo de estados de error 00:05:38
visual en campos de login, mostrando 00:05:45
advertencias directas en rojo 00:05:47
sin romper el diseño o uso 00:05:49
de layouts específicos o 00:05:52
ilustraciones. Ayuda 00:05:53
con el carrito no posee ítems 00:05:55
evita pantalla espacía 00:05:57
como había explicado anteriormente. 00:05:59
Otra categoría que sería 00:06:03
acceso a datos. 00:06:05
Vale. 00:06:11
He sustituido 00:06:11
SQLite clásico 00:06:13
por la librería oficial Room. 00:06:15
me pareció mucho más fácil 00:06:18
para brindar la base de datos local. 00:06:20
No hay SQL, hay seguridad, 00:06:24
es asíncrono, hay GreenCode. 00:06:25
Interfaz DAO. 00:06:30
Esta interfaz actúa como traductor automático 00:06:32
entre Kotlin y SQL. 00:06:35
Si el usuario añade un producto 00:06:37
que ya está en el carrito, 00:06:39
actualiza los datos automáticamente 00:06:41
sin bloquear la base de datos. 00:06:43
¿Qué pasó con ello? 00:06:44
porque en un principio cuando yo quería añadir datos era como que no me sobrescribía, 00:06:45
sino que me duplicaba y me daba muchos errores. 00:06:51
Concurrencia con corrutinas. 00:06:55
Las operaciones de disco son lentas. 00:06:58
Si las ejecutamos en el video principal, que sería en el mail, la app se congela. 00:07:01
Control de conexiones. 00:07:08
Instanciar repetidamente una base de datos local genera fugas de memoria 00:07:09
bloqueos críticos de archivos 00:07:13
¿qué pasa? que yo he utilizado 00:07:15
el patrón siglento 00:07:18
toda la aplicación comparte de forma segura 00:07:19
la misma conexión 00:07:22
patrón data mapper 00:07:23
mapeo de tipos 00:07:26
¿qué pasó con ello? que yo también utilicé 00:07:27
en la búsqueda de 00:07:30
alimentos, también puse para filtrar 00:07:33
si yo pongo una B me filtra 00:07:36
todos los alimentos que empiezan por B 00:07:38
si pongo una M 00:07:39
pues en fin, trae todos los elementos que empiezan por M. 00:07:42
Otra categoría que sería las bases de datos, diseño del modelo relacional, 00:07:45
SQL, motores de integridad física y optimización. 00:07:50
Vale, otra categoría, el esquema relacional relativo. 00:07:59
Aquí están diferentes esquemas que se relacionan de finalidad. 00:08:04
En finalidad, un producto de alimentación del catálogo de Day Market puede estar incluido en múltiples líneas de carritos de compra. 00:08:09
El ID, el cart ID, el name, el price. 00:08:17
Vale, estructuras de datos física. 00:08:22
¿Qué pasa con esto? Que yo creé una tabla de productos que tiene su ID, un nombre, el precio, la imagen. 00:08:25
tiene tipado restringido 00:08:31
campos críticos protegidos 00:08:34
a nivel del motor de datos 00:08:36
para impedir que registros vacíos rompan 00:08:37
la lógica de la 00:08:39
antes de todo esto 00:08:40
está metido 00:08:46
en el github en todo el 00:08:46
trabajo, tiene el sql 00:08:49
tiene sus diferentes carpetas 00:08:51
y claves foráneas de integridad 00:08:53
también crea 00:08:56
una tabla que tiene 00:08:58
el producto id 00:08:59
lo que expliqué en un principio con esas dos tablas 00:09:00
también se juntan 00:09:03
tienen una relación 00:09:05
se vincula de manera estricta 00:09:06
con la columna 00:09:09
garantía automatizada 00:09:10
si eliminamos un producto del supermercado 00:09:13
se pulga de forma inmediata y automática 00:09:15
de todos los carritos de compra existentes 00:09:17
¿qué pasa también con ello? 00:09:20
que en un principio lo que me daba 00:09:21
el problema era que yo al seleccionar 00:09:23
diferentes alimentos 00:09:25
y al meterme yo 00:09:27
en la aplicación 00:09:29
se borraba 00:09:32
entonces tuve que 00:09:33
actualizar y tuve que 00:09:36
guardar esos datos por medio de 00:09:38
de las tablas 00:09:40
búsquedas en tiempo constante 00:09:41
¿qué pasa con ello? que las aplicaciones 00:09:45
móviles realizan un escáner completo 00:09:47
de la tabla, ralentiza las 00:09:49
búsquedas cuando el volumen 00:09:51
de esto crece 00:09:53
diferentes personas cuando se unen a la 00:09:54
aplicación 00:09:57
crean un problema 00:09:58
y ralentiza la aplicación. 00:10:01
Y automatización con triggers. 00:10:04
Asegurar que la base de datos 00:10:08
se defienda sola 00:10:09
entre corrupciones de datos 00:10:10
o fallos de código externo. 00:10:13
Implementando triggers. 00:10:15
Vale, y otra categoría 00:10:19
que sería la programación 00:10:20
de procesos y servicios. 00:10:21
Esto es concurrencia avanzada, 00:10:23
sincronización, 00:10:25
comunicación asíncrona, 00:10:26
eficiente. Vale, condiciones de carrera. ¿Qué significa 00:10:27
ello? Es con ello que también crea problemas si otra persona 00:10:33
accede a la aplicación y yo cuando, por ejemplo, señalo la 00:10:38
manzana y esa misma persona señala ese alimento, crea y 00:10:45
ralentiza la aplicación. El peligro en D-Market radica en 00:10:50
los usuarios intentan decrementar la última unidad disponible de un producto de alimentación 00:10:55
exactamente al mismo milisegundo. Y claro, con ello solucionamos el problema. 00:11:01
Sección crítica segura. Implementación de un cerrojo de exclusivo mutuo para reserializar 00:11:09
el acceso a la sección crítica de datos. ¿Qué pasa con ello? Que yo cuando realizo 00:11:17
la compra, me aparece una notificación 00:11:22
en el móvil de que me dice compra 00:11:24
procesada. 00:11:26
Planificación, 00:11:29
que sería con 00:11:30
asignación inteligente de hardware 00:11:31
del dispositivo móvil, dividiendo 00:11:34
los flujos en torno a la ejecución 00:11:36
aislada. Sonexión 00:11:38
por sockets. 00:11:42
Establecimiento de canales 00:11:44
bidireccionales permanentes para mantener 00:11:45
la sincronía del mercado. 00:11:47
Flujos de datos flow. 00:11:55
Sustituye. 00:11:56
sustitución a las perjudiciales 00:11:57
de esperas activas por suscripciones 00:12:00
pasivas o sincronas basadas 00:12:02
en el patrón 00:12:04
transmisión en suspensión 00:12:05
vale aquí son en que en el libro de datos 00:12:07
se emite resultados parciales 00:12:10
del filtrado de búsqueda a medida 00:12:12
que el usuario escribe refrescando 00:12:14
la OI sin parpadear 00:12:16
mensajería en segundo plano 00:12:17
¿qué pasa con ello? 00:12:22
que yo cuando realizo la compra 00:12:24
me van a aparecer notificaciones 00:12:26
de cuánto tiempo me toca esperar para que llegue a la dirección que yo puse en la cuenta 00:12:27
cuando se registra con su cuenta personal. 00:12:38
Vale, implementación de servicios independientes del ciclo de vida de la interfaz visual mediante 00:12:44
de intervención de interbloqueos 00:12:50
¿qué pasa con ello? que el mayor peligro 00:12:56
de la concurrencia es el 00:12:58
bloqueado recíprocamente 00:12:59
internamente 00:13:02
riesgo mediante políticas drásticas 00:13:03
toda petición crítica 00:13:07
de adquisición del multa está gobernada 00:13:08
por un gran de los mil 00:13:10
milisegundos 00:13:12
aunque sea tan poco tiempo 00:13:13
si han habido un montón de 00:13:16
problemas que 00:13:18
cuando seleccionas algún alimento 00:13:19
porque intenté con dos móviles 00:13:24
cuando yo seleccionaba un alimento 00:13:27
que sigo poniendo el mismo ejemplo 00:13:30
es la manzana 00:13:32
y otra persona selecciona a la misma vez 00:13:33
y queda bloqueado por milisegundos 00:13:36
pero en comparación de que pueda ir 00:13:37
más rápido el dispositivo móvil 00:13:39
estaría mejor 00:13:41
seguridad extremo a extremo 00:13:43
¿Qué pasa con ello? 00:13:47
Que cuando se crea una cuenta personal 00:13:51
Ese mensaje llega al dispositivo móvil 00:13:54
Al correo electrónico 00:14:00
Cuando yo también quiero cambiar una contraseña 00:14:01
Me llega un código 00:14:04
Ese código tengo que ponerlo en la aplicación 00:14:05
Y entra para ver la categoría 00:14:08
El menú principal 00:14:11
Y ya está ya 00:14:12
vale, entro a la aplicación 00:14:15
esto es una cuenta ya creada 00:14:19
entonces me meto directamente 00:14:24
es una cuenta que ya está registrada 00:14:26
pero para explicarles y crearme otra cuenta 00:14:36
cierro, la creo 00:14:40
otro nuevo usuario, pongo Dayana145 00:14:43
sigo rellenando los datos 00:14:49
y entro ¿qué pasa con ello? que aquí en la parte de arriba donde está el muñequito 00:14:59
me pone mi nombre de usuario y mi nombre de correo electrónico en detalles es que yo 00:15:05
puedo cambiar mi usuario y pongo 198 y aquí igual en el correo 198 guardo mis cambios 00:15:14
voy a una diferente categoría que es el más o cuando voy a comprar y se me 00:15:24
cambia el usuario y el correo electrónico 00:15:31
vale ahora con una cuenta eso lo explicaré después en un principio la 00:15:35
página principal sería buscando productos de lo que quiera una manzana 00:15:40
en un plátano lo que sea vale qué pasa con la 00:15:46
categoría de después para obtener un 20 por ciento tiene que ser una compra que 00:15:53
sea elevada a 15 dólares entonces para obtener mi código de 00:15:58
promoción de descuento es guardando pero yo tengo que añadir varios alimentos 00:16:04
entonces voy a añadir pollo que sería como tres de estos 00:16:11
y van a estar en mi categoría de la sexta a ella sería 17 con 97 en total le daría 00:16:17
check out qué pasa con ello que también me pone en un principio mi tarjeta en mi 00:16:25
tarjeta bancaria y el código de descuento yo lo aplico por 00:16:31
el momento todo bien y se ha realizado la compra qué pasa que en esta 00:16:39
categoría donde pone la cuenta mis órdenes 00:16:43
ya se han realizado en los diferentes pedidos 00:16:46
también que puedo hacer con ello cancelar me va a preguntar si realmente 00:16:52
quiero cancelar la orden que yo realicé y le pongo cancelar salgo de la página y 00:16:57
otra vez pongo el orden y me sale cancelado cada uno tiene su id 00:17:03
y voy a realizar otra compra pero con las ofertas exclusivas que tienen 00:17:09
descuentos y tienen la parte de arriba un 00:17:14
un descuento por cada alimento entonces voy a añadir 00:17:18
un zumo bueno 4 y le doy a checa no hace falta que yo añada el código de 00:17:24
promoción porque no es elevado a 15 confirmar 00:17:32
la compra y me voy a las órdenes entonces ahí está realizada después vamos a la sección de 00:17:37
la cuenta las notificaciones realmente cuando me llega si tengo internet si tengo nuevas 00:17:47
promociones me llegaría en la parte de arriba vale después en la parte de best selling me 00:17:53
aparece diferentes alimentos en los que son los que se compran normalmente 00:18:06
y hay diferentes sus diferentes imágenes que son remotas y se van cargando a 00:18:15
añadir al buscar que esta es otra sección nueva que son las categorías de 00:18:32
cada alimento pues también puedo buscarlo aquí ve vegeta bols 00:18:36
y me saldría aquí 00:18:41
Vale, entonces me voy a meter en cada sección 00:18:45
Me salen todas completas 00:18:49
Como pueden ver cuando yo tengo un descuento 00:18:51
Que es por ejemplo la manzana o la banana 00:18:53
Tiene tachada los precios en la parte de arriba 00:18:55
Yo puedo seleccionar, puedo hacer lo que sea 00:18:59
Y al tener mi código de promoción 00:19:03
Pues se va quitando por el descuento 00:19:06
Puedo eliminar mis alimentos si no los quiero 00:19:12
Sus diferentes categorías con las diferentes fotos 00:19:18
Y no mucho más, después de una categoría de la cuenta 00:19:22
Puedo meterme en el GPS donde estoy localizada 00:19:35
Y abajo pone los días en los que está abierta la tienda 00:19:39
De lunes a viernes de 8 a 9 00:19:48
El sábado de 9 a 8 00:19:50
Y los domingos de 10 a 6 00:19:52
Después puede añadir su calle para cuando le llegue el pedido 00:19:54
Y también la puedo cambiar 00:20:07
Puedo poner otra calle distinta 00:20:10
Y la puedo guardar 00:20:14
Después también aquí en mi tarjeta de crédito también puedo cambiarla 00:20:19
Puedo poner 700 y todo eso 00:20:24
Puedo poner 420 y ya ahí se me cambiaría por completo 00:20:26
Y no mucho más la verdad 00:20:33
después cuando yo quito el internet 00:20:37
lo malo de esto es que 00:20:40
no, cuando yo cierro 00:20:55
la aplicación 00:20:57
no se mantiene abierto porque yo puse 00:20:58
permitir notificaciones en mi móvil 00:21:03
y no guardé la contraseña 00:21:05
entonces por eso es que se me cierra manualmente 00:21:06
pero 00:21:09
lo que yo quería indicar es que cuando 00:21:09
no tengo internet no se puede añadir 00:21:13
alimentos, le pone 00:21:15
un mensajito de error 00:21:17
y ya, no mucho más 00:21:18
Idioma/s:
es
Materias:
Programación
Etiquetas:
Trabajo Fin de Grado, Desarrollo de Aplicaciones Multimedia
Autor/es:
Dayana Estefanía Brito Avalos
Subido por:
Dayana Estefanía B.
Moderado por el profesor:
Lucia San Miguel López (lucia.sanmiguel)
Licencia:
Todos los derechos reservados
Visualizaciones:
15
Fecha:
18 de mayo de 2026 - 23:46
Visibilidad:
Público
Enlace Relacionado:
https://mediateca.educa.madrid.org/
Centro:
IES FRANCISCO DE QUEVEDO
Duración:
21′ 23″
Relación de aspecto:
1.78:1
Resolución:
1280x720 píxeles
Tamaño:
810.36 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid