SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
Análisis y Diseño
      de Software

Ejemplo
ListaCompra

      Carlos A. Iglesias <cif@gsi.dit.upm.es>
     Departamento de Ingeniería de Sistemas Telemáticos
                                 http://moodle.dit.upm.es
Leyenda
Teoría


Ejercicio práctico en el ordenador


Ampliación de conocimientos


Lectura / Vídeo / Podcast


Práctica libre / Experimentación



                 Ejemplo Lista de la Compra   2
Objetivos
●   Aplicar los conceptos aprendidos en una
    aplicación de ejemplo: una lista de la
    compra
●   Repaso
    –   Patrones Singleton / DAO
    –   AsyncTask
    –   Intenciones para pasar de una actividad a otra


                             Ejemplo Lista de la Compra   3
¿Qué vamos a hacer?




         Ejemplo Lista de la Compra   4
Arquitectura




      Ejemplo Lista de la Compra   5
Producto



               ...
Genero (y reviso getters/setters,
constructor, equals(), toString()




                                    Ejemplo Lista de la Compra   6
Repaso
    Patrón de Diseño Singleton
●   Una clase que tiene sólo un objeto




                        Ejemplo Lista de la Compra   7
Repaso
        Patrón de Diseño DAO
●   DAO (Data Access Object)
●   Un DAO contiene una conexión a una base
    de datos y sus operaciones básicas,
    ocultando su implementación
●   En nuestro caso, StatusData sigue el
    patrón DAO del valor Status de Twitter



                         Ejemplo Lista de la Compra   8
En nuestro problema...
●   Queremos tener sólo una lista... (singleton)
●   Pero realmente queremos un DAO, si
    siguiéramos con la aplicación, tendríamos
    una base de datos de productos
●    Vamos a seguir el patrón singleton, de
    forma que esta clase sea la responsable de
     devolvernos la lista, y de actualizarla


                         Ejemplo Lista de la Compra   9
ListaSingleton




      Ejemplo Lista de la Compra   10
DetalleProductoActivity




Programo clases privadas MiButtonSaveOnClickListener y
   MiButtonCancelOnClickListener que implementan
   View.OnClickLiistener, ahora mismo no hace nada.

                                Ejemplo Lista de la Compra   11
Repaso
Crear Lista Opciones



                      ListView para ver una lista
                      @android:id/list → layout
                        de Android para listas



               @android:id/empty → si la
                   lista está vacía



          Ejemplo Lista de la Compra                12
Repaso
Crear Lista opciones
                                 ListActivity en vez
                                     de Activity


                                 Fuente de datos

                                 Adaptador de lista,
                                 simple_list_item_1
                                  está predefinido




                              Listener de la
                                selección
          Ejemplo Lista de la Compra                   13
ListaCompraActivity




                                         Conmuto a otra actividad




http://developer.android.com/reference/android/widget/ArrayAdapter.html

                            Ejemplo Lista de la Compra                    14
Ejecutamos...




      Ejemplo Lista de la Compra   15
Rellenamos...




      Ejemplo Lista de la Compra   16
Probamos...




     Ejemplo Lista de la Compra   17
Análisis...
●   Ha funcionado que desde
    ListaCompraActivity la intención me lleva
    a DetalleProductoActivity...
●   Tenemos ahora que procesar esa intención
    para rellenar los campos




                        Ejemplo Lista de la Compra   18
DetalleProductoActivity (I)




             Ejemplo Lista de la Compra   19
DetalleProductoActivity (II)




              Ejemplo Lista de la Compra   20
Pruebo...




          ¡No cambia :(!


    Ejemplo Lista de la Compra   21
Repaso
Ciclo vida de Actividad




                             Ejemplo Lista de la Compra             22
 http://developer.android.com/reference/android/app/Activity.html
Repaso
         Estados de actividad
●   onCreate(Bundle saveInstanceState) - al
    crearse
●   onStart() - justo antes de que sea visible
●   onResume() - es visible y 'se reactiva'
●    onPause() - otra actividad va a tomar el
    foco y ésta va a ser pausada
●   onStop() - no es visible, está parada
●   onDestroy() - se va a destruir
                          Ejemplo Lista de la Compra   23
ListaCompraActivity




         Ejemplo Lista de la Compra   24
Pruebo...




           ¡Cambia :)!


    Ejemplo Lista de la Compra   25
Nueva funcionalidad
         ●   Vamos a cargar las
             ofertas del día
             –   Se conecta a varias
                 webs y tarda en
                 analizar las páginas
                 HTML (lo
                 simulamos)
         ●   Y ordenar
             alfabéticamente

         Ejemplo Lista de la Compra     26
Usando AsyncTask
●   Usar las hebras directamente es tedioso
●   Android proporciona AsyncTask
    –   Permite crear una hebra de fondo que publica
        en la hebra UI sin tener que programar
        Threads o Handlers
    –   Definimos una tarea 'asíncrona' que se ejecuta
        de fondo y publica sus resultados en la hebra
        UI


                             Ejemplo Lista de la Compra   27
AsyncTask – Uso básico
● Hebras:UI Thread (UITh) y Background Thread
 (BGTh, la AsyncTask)
●Tipos   genéricos: Params, Progress, Result
● Estados   principales
  –   onPreExecute (UITh)
  –   doInBackground (BGTh)
  –   onProgressUpdate(UITh)
  –   onPostExecutre(UITh)
● Método    auxiliar
  –   publishProgress (BGTh)
                               Ejemplo Lista de la Compra   28
AsyncTask
●   Una AsyncTask tiene 3 tipos genéricos
●   AsyncTask<Params, Progress, Result>
    –   Params – tipo de parámetros enviados a la
        tarea para su ejecución
    –   Progress – tipo de las unidades de progreso
        publicadas durante su ejecución
    –   Result – resultado de la ejecución de la tarea
●   Si no usamos un tipo, lo ponemos Void (con
    V)
                              Ejemplo Lista de la Compra   29
Métodos de AsyncTask
       ● onPreExecute():   invocado por
        UIth justo tras ejecutar la tarea
       ● doInBackground(Params)    –
        invocado por BGTh justo tras
        onPreExecute
       ● onProgressUpdate(Progress)         –
        invocado por UITh tras una
        llamada de BGTh a
        publishProgress(Progress)
       ● onPostExecute(Result)    invocado
        por UITh justo tras terminar BGTh

            Ejemplo Lista de la Compra          30
AsyncTask
●   Puedo saber si está en funcionamiento con
    el método getStatus()




                        Ejemplo Lista de la Compra   31
ListCompraActivity




… métodos




            Ejemplo Lista de la Compra   32
ActualizaCompraTask




         Ejemplo Lista de la Compra   33
ActualizaCompraTask (I)




           Ejemplo Lista de la Compra   34
ActualizaCompraTask (II)




            Ejemplo Lista de la Compra   35
Análisis...
●   Carga varias veces los mismos
    productos...
●   Permite conmutar al detalle aunque
    hayamos lanzado la tarea (no es
    necesariamente malo)




                        Ejemplo Lista de la Compra   36

Weitere ähnliche Inhalte

Ähnlich wie Tema 5 ejemplo_lista_compra

Tema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioTema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioCarlos A. Iglesias
 
A2-Tema4.pdf
A2-Tema4.pdfA2-Tema4.pdf
A2-Tema4.pdfAlMoon5
 
Java8 : Más allá de las Expresiones Lambdas
Java8 :  Más allá de las Expresiones LambdasJava8 :  Más allá de las Expresiones Lambdas
Java8 : Más allá de las Expresiones LambdasEudris Cabrera
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggersLuis Jherry
 
Cómo implementar un sistema de documentación viva (published)
Cómo implementar un sistema de documentación viva (published)Cómo implementar un sistema de documentación viva (published)
Cómo implementar un sistema de documentación viva (published)Fernando Poblete
 
Desarrollando mi primera App para Windows 8 con C#
Desarrollando mi primera App para Windows 8 con C#Desarrollando mi primera App para Windows 8 con C#
Desarrollando mi primera App para Windows 8 con C#Vicente Gerardo Guzman Lucio
 
Taller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoTaller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoJuan Rodríguez
 
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...jaircazarin
 
Tema 4 4_1_intenciones_servicios
Tema 4 4_1_intenciones_serviciosTema 4 4_1_intenciones_servicios
Tema 4 4_1_intenciones_serviciosCarlos A. Iglesias
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggersLuis Jherry
 
Clean Code (Presentacion interna en Virtual Software)
Clean Code (Presentacion interna en Virtual Software)Clean Code (Presentacion interna en Virtual Software)
Clean Code (Presentacion interna en Virtual Software)jmiguel rodriguez
 
02401 04-509376nomivkzutz
02401 04-509376nomivkzutz02401 04-509376nomivkzutz
02401 04-509376nomivkzutzgiomar_alvarezc
 
Desarrollo android - 4 - arquitectura de aplicación
Desarrollo android  - 4 - arquitectura de aplicaciónDesarrollo android  - 4 - arquitectura de aplicación
Desarrollo android - 4 - arquitectura de aplicaciónEmilio Aviles Avila
 

Ähnlich wie Tema 5 ejemplo_lista_compra (20)

Tema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioTema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuario
 
A2-Tema4.pdf
A2-Tema4.pdfA2-Tema4.pdf
A2-Tema4.pdf
 
Java8 : Más allá de las Expresiones Lambdas
Java8 :  Más allá de las Expresiones LambdasJava8 :  Más allá de las Expresiones Lambdas
Java8 : Más allá de las Expresiones Lambdas
 
Sistemas de control de versiones
Sistemas de control de versionesSistemas de control de versiones
Sistemas de control de versiones
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
 
Ajax: introducción
Ajax: introducciónAjax: introducción
Ajax: introducción
 
Cómo implementar un sistema de documentación viva (published)
Cómo implementar un sistema de documentación viva (published)Cómo implementar un sistema de documentación viva (published)
Cómo implementar un sistema de documentación viva (published)
 
Desarrollando mi primera App para Windows 8 con C#
Desarrollando mi primera App para Windows 8 con C#Desarrollando mi primera App para Windows 8 con C#
Desarrollando mi primera App para Windows 8 con C#
 
Taller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoTaller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con Django
 
Introducción a Mongo.pptx
Introducción a Mongo.pptxIntroducción a Mongo.pptx
Introducción a Mongo.pptx
 
Graficas matlab
Graficas matlabGraficas matlab
Graficas matlab
 
Matlab
MatlabMatlab
Matlab
 
Matlab
MatlabMatlab
Matlab
 
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
 
Tema 4 4_1_intenciones_servicios
Tema 4 4_1_intenciones_serviciosTema 4 4_1_intenciones_servicios
Tema 4 4_1_intenciones_servicios
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
 
Operadores poo
Operadores pooOperadores poo
Operadores poo
 
Clean Code (Presentacion interna en Virtual Software)
Clean Code (Presentacion interna en Virtual Software)Clean Code (Presentacion interna en Virtual Software)
Clean Code (Presentacion interna en Virtual Software)
 
02401 04-509376nomivkzutz
02401 04-509376nomivkzutz02401 04-509376nomivkzutz
02401 04-509376nomivkzutz
 
Desarrollo android - 4 - arquitectura de aplicación
Desarrollo android  - 4 - arquitectura de aplicaciónDesarrollo android  - 4 - arquitectura de aplicación
Desarrollo android - 4 - arquitectura de aplicación
 

Mehr von Carlos A. Iglesias (20)

GSI Research Group Presentation
GSI Research Group PresentationGSI Research Group Presentation
GSI Research Group Presentation
 
Entorno PHP
Entorno PHPEntorno PHP
Entorno PHP
 
Bootstrap 3.
Bootstrap 3.Bootstrap 3.
Bootstrap 3.
 
Introducción CSS
Introducción CSSIntroducción CSS
Introducción CSS
 
Introducción HTML
Introducción HTMLIntroducción HTML
Introducción HTML
 
Presentación TEWC
Presentación TEWCPresentación TEWC
Presentación TEWC
 
UPM GSI Presentation
UPM GSI PresentationUPM GSI Presentation
UPM GSI Presentation
 
Introducción Análisis y Diseño
Introducción Análisis y DiseñoIntroducción Análisis y Diseño
Introducción Análisis y Diseño
 
PHP. Bases de Datos
PHP. Bases de DatosPHP. Bases de Datos
PHP. Bases de Datos
 
PHP. Tecnologías Web.
PHP. Tecnologías Web.PHP. Tecnologías Web.
PHP. Tecnologías Web.
 
1 intro php
1 intro php1 intro php
1 intro php
 
0 entorno php
0 entorno php0 entorno php
0 entorno php
 
Introducción TEWC
Introducción TEWCIntroducción TEWC
Introducción TEWC
 
Tema 4.1 Introduccion Android
Tema 4.1 Introduccion AndroidTema 4.1 Introduccion Android
Tema 4.1 Introduccion Android
 
Tema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacionTema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacion
 
Tema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre telecoTema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre teleco
 
Tema 4.4 Actividades
Tema 4.4 ActividadesTema 4.4 Actividades
Tema 4.4 Actividades
 
Tema 4.5 interfaces
Tema 4.5 interfacesTema 4.5 interfaces
Tema 4.5 interfaces
 
Tema 4.6 Intenciones
Tema 4.6 IntencionesTema 4.6 Intenciones
Tema 4.6 Intenciones
 
Tema 4.7 Acceso a datos
Tema 4.7 Acceso a datosTema 4.7 Acceso a datos
Tema 4.7 Acceso a datos
 

Kürzlich hochgeladen

TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 

Kürzlich hochgeladen (20)

TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 

Tema 5 ejemplo_lista_compra

  • 1. Análisis y Diseño de Software Ejemplo ListaCompra Carlos A. Iglesias <cif@gsi.dit.upm.es> Departamento de Ingeniería de Sistemas Telemáticos http://moodle.dit.upm.es
  • 2. Leyenda Teoría Ejercicio práctico en el ordenador Ampliación de conocimientos Lectura / Vídeo / Podcast Práctica libre / Experimentación Ejemplo Lista de la Compra 2
  • 3. Objetivos ● Aplicar los conceptos aprendidos en una aplicación de ejemplo: una lista de la compra ● Repaso – Patrones Singleton / DAO – AsyncTask – Intenciones para pasar de una actividad a otra Ejemplo Lista de la Compra 3
  • 4. ¿Qué vamos a hacer? Ejemplo Lista de la Compra 4
  • 5. Arquitectura Ejemplo Lista de la Compra 5
  • 6. Producto ... Genero (y reviso getters/setters, constructor, equals(), toString() Ejemplo Lista de la Compra 6
  • 7. Repaso Patrón de Diseño Singleton ● Una clase que tiene sólo un objeto Ejemplo Lista de la Compra 7
  • 8. Repaso Patrón de Diseño DAO ● DAO (Data Access Object) ● Un DAO contiene una conexión a una base de datos y sus operaciones básicas, ocultando su implementación ● En nuestro caso, StatusData sigue el patrón DAO del valor Status de Twitter Ejemplo Lista de la Compra 8
  • 9. En nuestro problema... ● Queremos tener sólo una lista... (singleton) ● Pero realmente queremos un DAO, si siguiéramos con la aplicación, tendríamos una base de datos de productos ● Vamos a seguir el patrón singleton, de forma que esta clase sea la responsable de devolvernos la lista, y de actualizarla Ejemplo Lista de la Compra 9
  • 10. ListaSingleton Ejemplo Lista de la Compra 10
  • 11. DetalleProductoActivity Programo clases privadas MiButtonSaveOnClickListener y MiButtonCancelOnClickListener que implementan View.OnClickLiistener, ahora mismo no hace nada. Ejemplo Lista de la Compra 11
  • 12. Repaso Crear Lista Opciones ListView para ver una lista @android:id/list → layout de Android para listas @android:id/empty → si la lista está vacía Ejemplo Lista de la Compra 12
  • 13. Repaso Crear Lista opciones ListActivity en vez de Activity Fuente de datos Adaptador de lista, simple_list_item_1 está predefinido Listener de la selección Ejemplo Lista de la Compra 13
  • 14. ListaCompraActivity Conmuto a otra actividad http://developer.android.com/reference/android/widget/ArrayAdapter.html Ejemplo Lista de la Compra 14
  • 15. Ejecutamos... Ejemplo Lista de la Compra 15
  • 16. Rellenamos... Ejemplo Lista de la Compra 16
  • 17. Probamos... Ejemplo Lista de la Compra 17
  • 18. Análisis... ● Ha funcionado que desde ListaCompraActivity la intención me lleva a DetalleProductoActivity... ● Tenemos ahora que procesar esa intención para rellenar los campos Ejemplo Lista de la Compra 18
  • 19. DetalleProductoActivity (I) Ejemplo Lista de la Compra 19
  • 20. DetalleProductoActivity (II) Ejemplo Lista de la Compra 20
  • 21. Pruebo... ¡No cambia :(! Ejemplo Lista de la Compra 21
  • 22. Repaso Ciclo vida de Actividad Ejemplo Lista de la Compra 22 http://developer.android.com/reference/android/app/Activity.html
  • 23. Repaso Estados de actividad ● onCreate(Bundle saveInstanceState) - al crearse ● onStart() - justo antes de que sea visible ● onResume() - es visible y 'se reactiva' ● onPause() - otra actividad va a tomar el foco y ésta va a ser pausada ● onStop() - no es visible, está parada ● onDestroy() - se va a destruir Ejemplo Lista de la Compra 23
  • 24. ListaCompraActivity Ejemplo Lista de la Compra 24
  • 25. Pruebo... ¡Cambia :)! Ejemplo Lista de la Compra 25
  • 26. Nueva funcionalidad ● Vamos a cargar las ofertas del día – Se conecta a varias webs y tarda en analizar las páginas HTML (lo simulamos) ● Y ordenar alfabéticamente Ejemplo Lista de la Compra 26
  • 27. Usando AsyncTask ● Usar las hebras directamente es tedioso ● Android proporciona AsyncTask – Permite crear una hebra de fondo que publica en la hebra UI sin tener que programar Threads o Handlers – Definimos una tarea 'asíncrona' que se ejecuta de fondo y publica sus resultados en la hebra UI Ejemplo Lista de la Compra 27
  • 28. AsyncTask – Uso básico ● Hebras:UI Thread (UITh) y Background Thread (BGTh, la AsyncTask) ●Tipos genéricos: Params, Progress, Result ● Estados principales – onPreExecute (UITh) – doInBackground (BGTh) – onProgressUpdate(UITh) – onPostExecutre(UITh) ● Método auxiliar – publishProgress (BGTh) Ejemplo Lista de la Compra 28
  • 29. AsyncTask ● Una AsyncTask tiene 3 tipos genéricos ● AsyncTask<Params, Progress, Result> – Params – tipo de parámetros enviados a la tarea para su ejecución – Progress – tipo de las unidades de progreso publicadas durante su ejecución – Result – resultado de la ejecución de la tarea ● Si no usamos un tipo, lo ponemos Void (con V) Ejemplo Lista de la Compra 29
  • 30. Métodos de AsyncTask ● onPreExecute(): invocado por UIth justo tras ejecutar la tarea ● doInBackground(Params) – invocado por BGTh justo tras onPreExecute ● onProgressUpdate(Progress) – invocado por UITh tras una llamada de BGTh a publishProgress(Progress) ● onPostExecute(Result) invocado por UITh justo tras terminar BGTh Ejemplo Lista de la Compra 30
  • 31. AsyncTask ● Puedo saber si está en funcionamiento con el método getStatus() Ejemplo Lista de la Compra 31
  • 32. ListCompraActivity … métodos Ejemplo Lista de la Compra 32
  • 33. ActualizaCompraTask Ejemplo Lista de la Compra 33
  • 34. ActualizaCompraTask (I) Ejemplo Lista de la Compra 34
  • 35. ActualizaCompraTask (II) Ejemplo Lista de la Compra 35
  • 36. Análisis... ● Carga varias veces los mismos productos... ● Permite conmutar al detalle aunque hayamos lanzado la tarea (no es necesariamente malo) Ejemplo Lista de la Compra 36