cursoAndroid_Tema1

73
Entorno de desarrollo y primera aplicación © ADRINFOR S.L.

description

PTN 6900 V600R006C00

Transcript of cursoAndroid_Tema1

  • Entorno de desarrollo y primera aplicacin ADRINFOR S.L.

  • ndiceN-1 Entorno de desarrollo y primera aplicacin 3

    1. El mundo Android 31.1 Android y las versiones 31.2 Personalizaciones del sistema operativo. 61.3 Dispositivos Android 6

    2. El entorno de desarrollo 62.1 El mundo "Eclipse" 72.2 Descargar e instalar Eclipse 8

    3. Emular un dispositivo Android 144. El primer proyecto Android 23

    Otro ejemplo 34Ms detalles de los ejemplos 38

    5. Ficheros y partes de un proyecto Android 485.1 Partes de un proyecto 485.2 Carpetas de un proyecto 495.3 Resultado del proyecto 54

    6. La programacin orientada a objetos 586.1. Introduccin a la POO (programacin orientada a objetos) 58

    De la programacin estructurada al enfoque orientado a objetos 586.2 Elementos bsicos de la POO 59

    Las clases 59Los Objetos 60Los miembros de una clase 60

    6.3 Los tres pilares de la Programacin Orientada a Objetos 60Herencia 61Encapsulacin 62Polimorfismo 63

    6.4 Jerarqua de clases 63Relaciones entre objetos 64

    Herencia 64Pertenencia 64Utilizacin 65Reutilizacin 65

    7. Actualizar versin 657.1 Aviso de nueva versin 657.2 Problemas importando proyectos 69

    Diferentes SDK 70Ejercicios 73

    Ejercicio 1. Instalar el entorno de trabajo 73

    Entorno de desarrollo y primera aplicacin

    2/73

  • N-1 Entorno de desarrollo y primera aplicacinBienvenidos a este curso de programacin de Android. A lo largo de las prximas leccionesaprenderemos a programar en el sistema operativo ms importante del mundo de los telfonosinteligentes.

    1. El mundo Android

    1.1 Android y las versionesAndroid, como todos los sistemas operativos ha tenido y seguir teniendo distintas versiones. Esteasunto de las versiones es ms importante de los que parece porque nos hace plantearnos sobre quversin debemos desarrollar nuestras aplicaciones.No nos centraremos en una en concreto, sino que estudiaremos los mtodos generales de programacinque sern vlidos para cualquier versin, incluida la 3.0 destinada a tabletas y la vigente, 4.3 (JellyBean). Esta versin se present el 24 de julio de 2013, ya los incorporan varios terminales y segeneralizar a lo largo del ao 2.013. Pero sobre todo se generalizarn las Jelly Bean previas (4.1 y 4.2)Las distintas versiones instaladas en los terminales, hacer que sea un defecto y que haya producido unafragmentacin entre las distintas ediciones. Esto es, hay muchos tipos de dispositivos de variosfabricantes con versiones distintas, desde la 1.6 hasta la 4.3. En el mundo Iphone esto es mshomogneo, ya que es mucho ms sencillo su actualizacin al tratarse de un nico fabricante con unsolo modelo de terminal. Es algo similar al mundo Apple contra el mundo Windows. En los equiposApple, basta con escribir y probar el cdigo para el hardware, siempre el mismo, de los Mac. Encambio Windows debe trabajar con cientos de fabricantes distintos, miles de tarjetas de vdeo, sonido ydispositivos distintos.

    Imagen del primer Android 1.0 en septiembre/2008

    En este curso trataremos de aprender las bases de la programacin y su forma de trabajar,

    Entorno de desarrollo y primera aplicacin

    3/73

  • En este curso trataremos de aprender las bases de la programacin y su forma de trabajar,abstrayndonos de alguna forma de una versin concreta. Con una buena base podremos actualizarnosa la versin vigente. Por ejemplo, Google tiene especial inters en que los fabricantes adopten la interfazde la versin 4.x, muy renovada y ms elegante que las anteriores. Esta interfaz, y cuyo nombreseguramente te sea conocido, es la interfaz Holo.En este curso estudiaremos Android en general y luego pasaremos a ponernos al da con la versinactual. Son los ciclos habituales de todo programador. En el mundo .NET de Microsoft estaba vigentela versin 2010 con su .Net Framework 4.0, pero la nueva versin 4.5 ha sido liberada recientemente,por lo que los programadores debern realizar el correspondiente reciclaje a esta nueva versin.En la fecha de escribir este curso, (mayo/2012 y revisiones en febrero/2013 y septiembre/2013) esta esla fragmentacin actual de versiones de Android:

    Como primer dato destacable est que las versiones "Jelly Bean" ya superan al que era la versin msutilizada que era la "GingerBread". Grficamente esta es la distribucin aproximada:

    Como seguramente ya conoces, cada versin viene asociada a un nombre que en este mundo Androides:

    Entorno de desarrollo y primera aplicacin

    4/73

  • Versin Android Versin SDK Nombre Kernel de Linux Fecha1.5 3 Cupcake 2.6.27 abril/20091.6 4 Dount 2.6.29 septiembre/20092.0 / 2.1 5/6/7 Eclair 2.6.29 octubre/20092.2 8 Froyo 2.6.32 mayo/20102.3 9 GingerBread 2.6.35.7 Diciembre/20102.3.3 10 GingerBread Febrero/20113.0 / 3.1 / 3.2 11/12/13 HoneyComb 2.6.36 Febrero/20114.0 / 4.0.1 / 4.0.2 14/15 Ice Cream 3.0.1 Octubre/20114.1.x / 4.2.x / 4.3.x 16/17/18 Jelly Bean 3.0.31 Junio/2012 -

    Nov/2012 -Julio/2013

    4.4 -- Kit Kat

    El crecimiento ha sido rapidsimo pero ahora ha llegado a su madurez con la 4.0. Por ejemplo, lavelocidad del mercado hizo que Android no estuviera del todo preparado para las tabletas o "tablets"cuando Apple revolucion el mundo con su Ipad. La versin de Android por entonces, no soportaba elpotencial grfico necesario para las tabletas y tuvo que hacerse de forma inmediata una actualizacinexclusiva para tabletas, la 3.0.Durante un tiempo existan dos versiones, una para telfonos con "GingerBread" (2.3.3) y otra paratabletas con "HoneyComb" (3.0). La siguiente versin, la 4.0 Ice Cream ha unificado los dos tipos dedispositivos y ya no es necesario una versin especial para tabletas, sino que la misma versin incluye lonecesario para desarrollar en cualquier dispositivo. Por eso, nunca veremos la HoneyComb 3.0 en lostelfonos, ya que, como hemos dicho, fue una compilacin especial para tabletas.Como curiosidad, los nombres elegidos por Google son postres o dulces y siguen un orden alfabtico(ahora vamos por la "J" de "Jelly Bean"). Por eso veremos cada logo de Android como un postre o undulce:

    Documentacin externaEn el siguiente enlace tienes la pgina oficial de Jelly Bean de Google. Antala bienporque es el "principio" de todo lo relativo al desarrollo e informacin de esta versin desistema operativoAcceso a la pgina de inicio de Jelly Bean de Google

    Por si hubiera poca fragmentacin, la versiones siguen avanzando. Como puedes ver en la tabla, a pesar

    Entorno de desarrollo y primera aplicacin

    5/73

  • Por si hubiera poca fragmentacin, la versiones siguen avanzando. Como puedes ver en la tabla, a pesarde que la versin 4.0 est relativamente poco implantada, ya hay nombres para las siguientes versionesde Android, que corresponde a este ltimo android (Kit Kat). Como curiosidad, el nombre de Kit Kat hasido de mtuo acuerdo con Nestl. Donde incluso con la compra de estas conocidas chocolatinas sepuede ganar un Nexus. Cosas del mrketing.

    Ante todo esto, est claro que debemos aprender a programar en Android, sin centrarnos en unaversin concreta. De esta forma nuestras aplicaciones irn destinadas a la mayora de los dispositivos.

    1.2 Personalizaciones del sistema operativo.Google siempre ha presentado unos "terminales oficiales": Nexus One (HTC), Nexus S (Samsung),Galaxy Nexus (Samsung), Nexus 4 (LG), Nexus 5 (LG Motorola en octubre/2013) en los que elsistema operativo se muestra puro, sin aadidos. Sobre esta base, distintos fabricantes realizan modificaciones al entorno con el fin de mejorar o aportarun escritorio ms atractivo. Si cogemos un telfono HTC veremos su personalizacin, habitualmentemuy llamativa. En un Samsung o Sony tambin veremos que cada uno adapta un entorno rediseado.Por eso, aunque veamos distintas pantallas en estos fabricantes, la base es siempre Android y todo loque desarrollemos se ejecutar igual en los distintos terminales.

    1.3 Dispositivos AndroidAndroid slo para mviles? Pues no, cada da aumenta el nmero de dispositivos con Android. Esta esuna relacin de los que seguramente conoces y alguno ms:

    Telfonos inteligentesTabletasTelevisionesDispositivos multimediaLibros electrnicosCmaras de fotosRelojes...

    2. El entorno de desarrolloAndroid est basado en Java, as que este es el lenguaje que nos toca aprender en este curso. Pero cmo

    Entorno de desarrollo y primera aplicacin

    6/73

  • Android est basado en Java, as que este es el lenguaje que nos toca aprender en este curso. Pero cmoescribiremos el cdigo? Pues acudiendo a un entorno de desarrollo. Por ejemplo, en el mundoMicrosoft .NET tiene su entorno de desarrollo para VB.Net o C#.net. Java tambin tiene su entornoJDK para desarrollar aplicaciones en Java.Existe un entorno de desarrollo, ampliamente utilizado en ciertos entorno, llamado Eclipse que permitepersonalizarlo para que soporte Android. Vamos a ver ahora cmo instalar y configurar este entorno.

    Noticias de prensaHay posibilidad de desarrollar en otros lenguajes pero no es el estndar de Google. Haycomplementos para Visual Studio procedentes del conocido (en el mundo del desarrollo)proyecto mono para utilizar Visual C# En lugar de Java. Tambin hay algunas adaptacionescon un lenguaje de estilo Visual Basic de otro fabricante, pero ambas son de pago. As quenos centraremos en el estndar de Google con Eclipse y Java.

    Acceso al proyecto MonoAcceso a Basic for Android

    2.1 El mundo "Eclipse"Eclipse es un entorno de desarrollo integrado de cdigo abierto multiplataforma para desarrollar. Estaplataforma se utiliza habitualmente para desarrollar en Java, pero se puede personalizar para poder crearotros tipos de aplicaciones.Eclipse fue desarrollado originalmente por IBM como el sucesor de su familia de herramientas paraVisualAge. Eclipse est ahora desarrollado por la Fundacin Eclipse, una organizacin independientesin nimo de lucro que fomenta una comunidad de cdigo abierto y un conjunto de productoscomplementarios, capacidades y servicios. Este es el aspecto del entorno:

    Entorno de desarrollo y primera aplicacin

    7/73

  • El entorno de desarrollo integrado (IDE) de Eclipse emplea mdulos (en ingls plug-in) paraproporcionar toda su funcionalidad al frente de la plataforma de cliente enriquecido, a diferencia deotros entornos monolticos donde las funcionalidades estn todas incluidas, las necesite el usuario o no.La filosofa del proyecto Eclipse queda clara con una definicin se su software es: "una especie deherramienta universal - un IDE abierto y extensible para todo y nada en particular".Para poder realizar nuestra primera aplicacin necesitaremos tener configuradas estos tres entornos oprogramas

    Instalar la versin estndar de EclipseInstalar los complementos para AndroidConfigurar un emulador de Android

    La primera parte ser la de descargar e instalar el entorno Eclipse. Hasta hace muy poco tenamos quedescargar Eclipse y luego realizar las personalizaciones necesarias para aadir el soporte para Android.Por suerte, esto ya no es necesario, as que lo tenemos ms fcil.

    2.2 Descargar e instalar Eclipse

    Noticias de prensaComo acabo de comentar, hay una nueva versin "todo en uno", ms fcil que lo quetenamos hasta ahora. Esta seccin es nueva y sustituye a la anterior en la que se realizabaeste proceso de forma mucho mas laboriosa.

    Entorno de desarrollo y primera aplicacin

    8/73

  • Para empezar nos iremos a la pgina principal de los kit de desarrollo de Android, dentro de Google:Ir a la pgina de desarrollo de AndroidUna vez en esta pgina pulsaremos para descargar el kit de desarrollo:

    Seleccionamos la versin a descargar de 32/64 bits:

    Una vez descargados los 400Mb de que se compone, descomprimimos el fichero y vemos estascarpetas:

    Entorno de desarrollo y primera aplicacin

    9/73

  • Corresponden al kit de desarrollo (sdk), el entorno de desarrollo integrado (Eclipse) y el administradorde kits (SDK Manager). Si exploramos las carpetas vemos que en las imgenes nos encontramos con laltima versin:

    Que corresponde a la ltima versin Jelly Bean (4.3). Efectivamente, si ejecutamos el "SDK Manager",que tenemos en la carpeta raz de lo que nos hemos descargado:

    Podemos ver los componentes instalados:

    Entorno de desarrollo y primera aplicacin

    10/73

  • Puesto que queremos instalar tambin la versin 2.3.3 debemos aadirlas, as que las marcaremos

    Aceptamos la instalacin y se descargarn los componentes necesarios.

    AnotacinSi no se ejecuta el SDK Manager, que sucede en algunas instalaciones espera a ejecutarlodesde Eclipse, tal y como se indica en unos momentos.

    Ahora ya podemos iniciar Eclipse, que lo tenemos en esta carpeta:

    Entorno de desarrollo y primera aplicacin

    11/73

  • En unos segundos se iniciar el entorno:

    IMPORTANTE!Puede que no se inicie Eclipse, mostrndonos este mensaje en pantalla:

    Esto es porque no localiza correctamente el lenguaje Java en nuestro equipo. Tenemosdos opciones, o hacer lo que indica e incluir en la variable de entorno "Path" la rutadel ejecutable de java "javaw.exe" o instalar la versin JDK de Java. Recomiendoesta ltima opcin que puedes descargar desde aqu: JDK de Java o desde la Web deOracle.Si todo es correcto, al iniciar Eclipse nos pedir un "workspace"

    Entorno de desarrollo y primera aplicacin

    12/73

  • Un "workspace" es un espacio de trabajo. Ser donde crearemos y almacenaremos todos los proyectosque realicemos. Cerramos la pgina de bienvenida y vemos por fin el entorno de trabajo. Si hacemosclic en "New" podemos ver que podremos crear proyectos para Android:

    Ya tenemos listo nuestro entorno. El siguiente paso ser preparar un emulador de nuestro sistemaAndroid para poder probar las aplicaciones.Si en el momento de ejecutar el SDK Manager tuviste algn problema, puedes ejecutarlo desde Eclipseen la opcin:

    Entorno de desarrollo y primera aplicacin

    13/73

  • Completa la instalacin, si es necesario, del SDK de la API 10 de la versin GingerBread de Android.

    3. Emular un dispositivo AndroidEl SDK de Android incorpora un emulador para poder probar las aplicaciones como si estuvieran en elmismo telfono o dispositivo. Para esta operacin vamos a crear dispositivos virtuales o AVD's(Android virtual devices). Cada dispositivo consta de un perfil de hardware, una imagen de una versindel sistema operativo, una emulacin de almacenamiento, como si fuera una tarjeta SD y otrosdispositivos adicionales como el GPS o acelermetro.Para crear el emulador ejecutaremos el programa "AVD Manager" o Android Virtual Device Managerque tenemos disponible desde la opcin "Window" de Eclipse:

    Entorno de desarrollo y primera aplicacin

    14/73

  • Esta aplicacin se encuentra tambin disponible en el SDK Manager:

    La primera y principal pantalla nos muestra los dispositivos que hemos creado:

    Entorno de desarrollo y primera aplicacin

    15/73

  • De momento no tenemos emuladores creados, as que vamos a crear el primer emulador pulsando en"New":

    Le ponemos un nombre cualquiera (sin espacios en blanco y sin caracteres especiales) y seleccionamosla versin que queremos. Podemos comprobar que nos aparecen las versiones de API que hemosdescargado. Vamos a seleccionar por ejemplo la 2.3.3, una resolucin WVGA y seguimosconfigurando:

    Entorno de desarrollo y primera aplicacin

    16/73

  • Le hemos aadido el soporte para que "virtualice" una tarjeta SD de 1 Gb de memoria. Pulsamos en"Create AVD" para que nos cree el dispositivo virtual y al cabo de unos segundos lo tendremos ennuestra lista:

    Si nos fijamos en la segunda solapa, podremos ver los distintos dispositivos con Android que se han idofabricando. Cada uno con sus especificaciones de resolucin de pantalla. Desde el ms bsico hasta elltimo Nexus 7:

    Entorno de desarrollo y primera aplicacin

    17/73

  • Ya podemos iniciarla. Al pulsar en "Start" nos pedir el formato de pantalla que queremos:

    Puesto que las pantallas de los terminales tienen ms densidad de puntos que los monitores deordenador, la pantalla saldrn bastante grande ya que ser fiel a esos 240 puntos de densidad. Pero noimporta, indicamos "launch" y comenzar la emulacin del dispositivo:

    Este proceso es lento, as que un poco de paciencia si dispones de un equipo modesto.

    Entorno de desarrollo y primera aplicacin

    18/73

  • Como vemos, el emulador muestra el aspecto de la versin 2.3.3. En la parte izquierda est la pantalla,totalmente operativa con el ratn, y en la derecha los botones que tendramos en nuestro terminal.

    AnotacinDependiendo de la versin instalada podemos tener un aspecto distinto en esta pantalla.

    Veamos ahora otra emulacin, pero primero apaguemos este terminal. Pulsamos unos segundos sobre elbotn de apagado del teclado de la derecha hasta que nos muestra la conocida pantalla del modosilencioso, avin o apagado.:

    Lo apagamos del todo. Si no responde, no pasa nada cerramos la ventana de emulacin. Creamos ahorauna nueva mquina virtual con estos parmetros:

    Entorno de desarrollo y primera aplicacin

    19/73

  • La resolucin es algo baja (480x800) pero no importa, veremos el impacto de estos valores. Tendremosotra mquina virtual preparada:

    Tenemos las dos listas, una con la API 10 y otra con la 18. En la ejecucin de esta que hemos creadocon 4.3 (Jelly bean) indicaremos en la ejecucin un aspecto grfico distinto para que no sea tan grandeen pantalla:

    Entorno de desarrollo y primera aplicacin

    20/73

  • Por ejemplo, hemos pulsado en el "?" para que nos ayude con un tamao adecuado. Le indicamos en lapantalla que nuestro monitor es de 21" y tiene una resolucin de 1920x1080. Esto equivale a 105puntos de densidad. Fjate la enorme diferencia con los 320 puntos de densidad de una pantalla detelfono. Aceptamos y ejecutamos la mquina virtual. Veremos que ahora el tamao en pantalla es mspequeo:

    Tambin observamos que la interfaz es distinta ya que corresponde a la nueva de la versin 4.3 o "JellyBean". Tambin podemos comprobar que el tamao es demasiado pequeo. Lgico, lo que hemoshecho es simular una pantalla de un mvil de 4" en nuestro monitor:

    Entorno de desarrollo y primera aplicacin

    21/73

  • Si la medimos en el monitor ser exactamente de 4", pero como la densidad del monitor es inferior lavisin ser muy pobre. Nos indica que la escala es de 0,45, es decir algo menos de la mitad de lapantalla. Para tener la misma calidad que el telfono mvil necesitamos dos veces el tamao que hemosdefinido. De momento no tocaremos esta opcin para que se inicie a pantalla completa como el casoanterior.

    Configurar y poner en marcha un emulador

    Por comodidad y por ser ms fiel a la realidad no escalaremos la vista y dejaremos la predeterminada de480x800.

    IMPORTANTE!Las pantalla de los telfonos de gama alta empiezan a ser HD y Full HD, incorporando una resolucin de 1.280x720 y de 1.920x1.080. Estas resolucionesequivalen a una densidad de 316 puntos por pulgada en un, por ejemplo, GalaxyNexus ( o 1.280 x 800 con un Nexus 7). Tenemos que tenerlo en cuenta si queremosrealizar aplicaciones con esta resolucin, ya que tendramos que indicarlo en lamquina virtual de Android.Como curiosidad, la resolucin mxima que puede distinguir el ojo humano es de 300 ppp (es lo que sedice aunque no est del todo claro). Iphone 5 tiene una resolucin de 1.136x640 (906x640 en el Iphone4), pero al ser una pantalla ms pequea (3,5") que el Galaxy Nexus la densidad es de 326ppp. Unaresolucin excelente con su famosa "Retina Display" que indicaba la calidad de esta pantalla. El nuevoIPAD II de Apple, presentado en marzo/2012 tambin ha incrementado notablemente su densidad depuntos, hasta conseguir esas densidades. Pero nuevamente ha ganado Google con su tableta Nexus 10.En Android, terminales como el Galaxy Nexus, Nexus 4 o Samsung Galaxy SIV ya pueden compararseen este aspecto de densidad de puntos. La carrera de las resoluciones sigue avanzando. Los terminalesde gama alta comienzan a tener todos "full hd", que son 1.920 x 1.080. Es la misma resolucin quetenemos en una televisin de 40 50 pulgadas en cada pero en una pantalla de 4,5 5 pulgadas!.Incluso la tablet Nexus 10 supera ya esa resolucin para llegar hasta los 2.560 x 1.600 pxeles quehacen una densidad de puntos de 300 dpi, superando a la todopoderosa Ipad (2.048x1.536 conunadensidad de 266dpi) Resumiendo las resoluciones y tamaos de pantalla, echemos un vistazo a esta tabla:

    Entorno de desarrollo y primera aplicacin

    22/73

  • Vemos los grupos de la izquierda de las pantallas ms pequeas hasta las ms grandes y luego lasdistintas resoluciones en las columnas dela derecha. Tampoco hay que olvidar que Android no es solo telfonos. Dispositivos como reproductoresmultimedia para las televisiones proporcionan una salida den "full HD", que corresponde a 1.920 x1.080 puntos.

    4. El primer proyecto AndroidLleg la hora de crear nuestro primer proyecto, que ser el habitual "Hola Mundo!". Abrimos nuestroentorno de desarrollo Eclipse y seleccionamos un nuevo proyecto:

    De los proyectos disponibles, seleccionaremos:

    Entorno de desarrollo y primera aplicacin

    23/73

  • Al ver esta pantalla de seleccin de proyectos, recordamos la versatilidad de este entorno. Adems deproyectos Java y otros menores, vemos que hemos podido integrar en l proyectos Android. Lapersonalizacin de Eclipse, hecha por Google para desarrollo en Android, ha sido la que ha aadidoeste tipo de proyectos. Esta opcin equivale a la que tenemos de forma directa:

    Nos mostrar la pantalla de introduccin de nombre y seleccin de la versin:

    Entorno de desarrollo y primera aplicacin

    24/73

  • Indicamos, como vemos, que ser para la API10 o versin 2.3.3. Ojo, no significa que solo funcionaren esta versin sino que utilizar el kit de desarrollo de ella. Lgicamente todas versiones superioressern capaces de ejecutar la creada en esta versin. La seleccin "Theme" para el aspecto grfico ladejaremos en "None". La razn es que para tener el aspecto grfico Holo, debemos tener como mnimola API 15 de Android 4.0 que fue la que introdujo este estilo. Continuamos...

    Entorno de desarrollo y primera aplicacin

    25/73

  • Atento la opcin de "Create activity" que veremos enseguida. Continuamos e indicamos los iconos de laaplicacin:

    Entorno de desarrollo y primera aplicacin

    26/73

  • Hemos indicado antes que nos cree unas "Actividad", que es el nombre de la pantallas de Android. Eneste paso nos pregunta cmo queremos esta actividad. Indicaremos que queremos una en blanco:

    Continuamos para indicar el formato de la actividad:

    Entorno de desarrollo y primera aplicacin

    27/73

  • El formato en cuanto a navegacin. Si desplegamos "Navigation Type" veremos varias opciones deconfiguracin para mens. Todo esto lo veremos ms adelante.Finalizamos el asistente y ya tendremos por fin nuestra primera aplicacin en el entorno de desarrollo.

    AnotacinAl crear el proyecto, hemos visto que la opcin "Create Activity" est marcada. Una"Activity" es en Android una ventana que contiene la interfaz de usuario. Es decir, es laventana donde irn los datos o elementos que mostrar nuestra aplicacin. No esobligatorio que las tenga, por eso nos pide opcionalmente que si la queremos incluir.

    Una vez finalizado nuestro entorno nos mostrar el editor con el cdigo que ha incluido para crear esaactividad o "Activity":

    Entorno de desarrollo y primera aplicacin

    28/73

  • Podemos ver las distintas pantallas en las que se compone el entorno Eclipse. Muchas de las vistas sonjerrquicas, pudiendo desplegar con el ratn los distintos componentes hasta llegar, por ejemplo, alcontenido del esqueleto del cdigo de esta aplicacin. Abrimos la rama "src" para llegar hasta el cdigoJava que crea esta aplicacin. En la parte central podemos ver el cdigo que disponemos para lacreacin de este objeto o aplicacin:

    Aunque todava no haga nada, vamos a ejecutarla. Para esto nos iremos a esta opcin de la barra debotones que corresponde con "Run as"

    Entorno de desarrollo y primera aplicacin

    29/73

  • Al pulsar la opcin nos indica cmo debe ejecutar el programa:

    Le estamos indicando que queremos ejecutarlo como una aplicacin Android. As el entorno Eclipsesabe que debe lanzar un emulador para poner en marcha la aplicacin.

    AnotacinSi no te aparecen estas opciones, comprueba que tienes marcado el ttulo del proyecto en elexplorador de archivos:

    Entorno de desarrollo y primera aplicacin

    30/73

  • Esto har, como hemos dicho, que se ejecute el emulador y dentro de l la aplicacin. De la mismaforma que se ejecutara en un terminal mvil. Antes de ejecutar la aplicacin vamos a aadir una pestaallamada "Console" para que nos muestre informacin de los procesos que hace Eclipse. Si no la tienesen la parte inferior, la aadimos desde esta opcin:

    Aparecer la pestaa en la parte inferior:

    Marcamos en la parte derecha que nos muestre los mensajes generados por Android. (Si no se activa laopcin esperamos a que se ejecute el emulador). Ahora pulsamos ya en ejecutar la aplicacin. Algenerarse podemos ver los pasos realizados y que, efectivamente, lanzar el emulador:

    Iniciar el emulador que hemos definido antes en su versin 2.3.3:

    Entorno de desarrollo y primera aplicacin

    31/73

  • Desbloqueamos el terminal deslizando a la derecha el candado de la parte inferior:

    Y por fin, aparecer ejecutndose nuestro primer programa de Android. Si vemos la consola,entenderemos los pasos que ha realizado. Una vez que hemos desbloqueado el terminal Eclipse haseguido funcionando enviando la aplicacin al emulador:

    La ha instalado como si se tratara de un mvil y finalmente la ha ejecutado. Adems, incluye una opcinde men. Si pulsamos en el botn de men:

    Entorno de desarrollo y primera aplicacin

    32/73

  • Veremos en la parte inferior un men:

    Este men es slo un ejemplo, no hace nada especial.

    Ejecutar la primera aplicacin

    Si, muy bien, pero funcionar en mi mvil? Pues si, y lo vamos a comprobar. Exploremos las carpetasdel proyecto:

    En la carpeta "Bin" podemos ver que tenemos el paquete de programa listo: Hola_mundo.apk. Si locopiamos a nuestro Android lo instalar y funcionar a la primera!

    Entorno de desarrollo y primera aplicacin

    33/73

  • AnotacinPara que se puedan instalar aplicaciones que no se descargan directamente del "market",debemos tener esta opcin marcada, de lo contrario no nos dejara.

    Es un mtodo de proteccin ante aplicaciones provenientes de otros sitios que no sean de latienda oficial. Esta opcin est en la configuracin y luego en "Aplicaciones". En espaoles "permitir instalar aplicaciones de orgenes desconocidos"

    Otro ejemploVamos con otro ejemplo, esta vez ms complejo pero con el que slo queremos ver cmo generarlos yabrirlos para probarlos. Primero cerramos el proyecto anterior:

    Aun as veremos que en el entorno de desarrollo sigue apareciendo. No pasa nada, en nuestro entornode trabajo tendremos habitualmente varios proyectos. Es el concepto "workspace" o espacio de trabajo.Si an as, para no confundirnos queremos eliminar el proyecto del espacio de trabajo lo haramos conel botn derecho en el proyecto y seleccionando:

    Entorno de desarrollo y primera aplicacin

    34/73

  • Nos mostrar este mensaje:

    Que indica que simplemente nos borrar del entorno de trabajo las referencias del proyecto anterior. Simarcamos la casilla de verificacin, eliminaremos adems el proyecto de nuestro disco. Sigamospracticando. Creamos un nuevo proyecto:

    En este caso ser el proyecto de ejemplo de Android, de los que hemos descargado con el SDK:

    Entorno de desarrollo y primera aplicacin

    35/73

  • Continuamos indicando el SDK:

    Ser para la versin 2.3.3. Seguimos:

    Entorno de desarrollo y primera aplicacin

    36/73

  • Podemos ver que tenemos una buena coleccin de ejemplos de todo tipo, desde utilizacin de sensores aun bloc de notas o pequeos juegos. Escogemos uno cualquiera y continuamos...Una vez en el entorno de desarrollo, utilizamos la misma opcin que el caso anterior de "ejecutar como"(Run as) aplicacin Android, pero esta vez desde el men:

    Entorno de desarrollo y primera aplicacin

    37/73

  • AnotacinRecuerda tener marcado el nombre del proyecto en la parte izquierda:

    Sino , no sabra qu debe ejecutar.

    Se iniciar el emulador y despus la aplicacin de ejemplo, que es totalmente operativa y adems, comoen el caso anterior, instalable en los mviles fsicos.

    AnotacinHay opciones del emulador que se pueden acceder por el teclado. Ten en cuenta estosatajos porque te facilitarn mucho su manejo:Opciones del emulador

    Ms detalles de los ejemplosVamos a cambiar de proyecto para ir familiarizndonos con el entorno. Adems... porqu nos hacreado la pantalla con el "hola mundo" en ingls, si no hemos escrito todava nada? Ahora lo veremos...Vamos a volver a incorporar a nuestro entorno el proyecto de antes. Es decir tenemos nuestro"workspace" con el proyecto que acabamos de crear pero queremos incorporar el que cerramosanteriormente porque queremos editarlo y volver a ejecutarlo. Para esto haremos lo siguiente:

    Entorno de desarrollo y primera aplicacin

    38/73

  • Queremos importar a nuestro espacio de trabajo un proyecto almacenado. Pulsamos entonces la opcin"Import".

    Como vemos, hay una amplia seleccin de elementos que queremos incorporar al "workspace". Esta

    Entorno de desarrollo y primera aplicacin

    39/73

  • Como vemos, hay una amplia seleccin de elementos que queremos incorporar al "workspace". Estaopcin la utilizaremos a menudo cuando incorporemos otros elementos como grficos o ficherosadicionales. En nuestro caso seleccionamos "Existing Projects into Workspace", o lo que es lo mismo,una proyector existente en nuestro espacio de trabajo.

    Pulsamos en el botn "browse" para seleccionar la carpeta de nuestro espacio de trabajo, el que leindicamos al iniciar Eclipse. Al seleccionarlo nos mostrar en la parte inferior los proyectos disponibles.Seleccionamos el que queremos y lo importamos:

    Ya lo tenemos incorporado. Esta ser una prctica habitual, ya que iremos incorporado los proyectosque iremos creando.

    AnotacinCuando tengamos ms de un proyecto en el espacio de trabajo tenemos que asegurarnos deque hemos marcado el proyecto adecuado al ejecutarlo, de lo contrario puede que seejecute el que no queremos.

    Entorno de desarrollo y primera aplicacin

    40/73

  • Sigamos con el ejemplo para poder modificar ese mensaje de texto en ingls que nos mostraba nuestraprimera aplicacin. Nos desplazaremos por sus carpetas hasta encontrar un fichero llamado"activity_main.xml" dentro de la carpeta "layout" de "res". Si hacemos doble clic en l, veremos algomuy interesante en la parte derecha de Eclipse:

    Entorno de desarrollo y primera aplicacin

    41/73

  • Se trata del editor que nos va a permitir disear nuestras pantallas o "activities" de Android. En esta pantalla tenemos los componentes para crear las interfaces de nuestras aplicaciones. Comovemos en la pantalla, en la parte derecha tenemos el texto que luego nos muestra la ejecucin delprogramas. De momento exploremos este rea porque es densa en contenido y la utilizaremos muy amenudo.

    Entorno de desarrollo y primera aplicacin

    42/73

  • AnotacinSi la pantalla central queda muy pequea tienes unos botones de zoom en la parte superiorderecha:

    Vamos a expandir ahora la zona "values" de la carpeta "res"::

    Veremos que estn las dos cadenas de texto que se muestran en pantalla. Vamos a cambiar el texto de laprimera "hello", escribiendo por ejemplo:

    Entorno de desarrollo y primera aplicacin

    43/73

  • Luego veremos si se actualiza este texto en la ejecucin del programa. Volvamos al diseo de lapantalla. Revisando un poco este rea de diseo, vemos que nos indica un tamao de la pantalla en lazona superior izquierda:

    El tamao del rea de trabajo depende de la resolucin que tengan los telfonos o tabletas. Para definireste tamao podemos indicarlo desde ese desplegable superior. Como vemos, tenemos los terminalesoficiales de Google: Nexus One, Nexus S, Galaxy Nexus y Nexus 4. Adems dos formatos de tableta yla opcin de definir uno personalizado. Trataremos con estos formatos de resolucin ms adelante. Latendencia es evidente, cada vez ms densidad de puntos por pantalla, es decir ms resolucin. Noconfundamos tamao con resolucin. Las televisiones "full HD" (1.920x1.080) van desde tamaos de20" hasta 60". Lgicamente la densidad de puntos es mayor cuanto ms pequea y, por tanto, lacalidad. Aunque en las televisiones se cuenta que la distancia de visionado es mucho mayor, por lo queno se aprecia esa prdida de densidad.Finalmente, en la parte central de esta pantalla de edicin disponemos del cdigo XML que define loque hemos aadido a nuestra aplicacin:

    Entorno de desarrollo y primera aplicacin

    44/73

  • Observemos el contenido de este fichero:

    La primera lnea indica que es un fichero de texto en formato XML.

    AnotacinEl lenguaje XML es un lenguaje de etiquetas (como el HMTL) jerrquico orientado aalmacenamiento de datos. Se propone como un estndar para el intercambio deinformacin estructurada entre diferentes plataformas. Se puede usar en bases de datos,editores de texto, hojas de clculo ...

    El grupo de lneas:

    ...

    Define un formato de pantalla "lineal", es decir, un "widget" o un elemento de pantalla detrs de otro.

    Entorno de desarrollo y primera aplicacin

    45/73

  • Define un formato de pantalla "lineal", es decir, un "widget" o un elemento de pantalla detrs de otro.Veremos detenidamente estos formatos ms adelante. Dentro de estas etiquetas tenemos una definicinde un "TextView" que es un texto a escribir en pantalla. Este texto contiene un enlace a la variable"@string/hello" que definimos en el grupo de "strings" que vimos anteriormente. Ahora arrastramos uncontrol de tipo "TextView" debajo del que ya tenemos:

    Quedar el segundo texto debajo:

    Y el XML con:

    Modifiquemos este segundo cuadro de texto desde esta pantalla con este texto:

    Entorno de desarrollo y primera aplicacin

    46/73

  • Volvamos a la vista de la pantalla:

    Aparece en la derecha este segundo texto que hemos incluido pero el primero no est actualizado. Estoes porque no est grabado el fichero "strings.xml" que modificamos antes. Vamos a ejecutar elprograma, nos pedir si queremos salvar los cambios y veamos que aparece en el emulador.

    Y s, ha funcionado.

    Ms detalles de las aplicaciones

    Ya vamos aprendiendo muchas cosas, ya sabemos crear un proyecto y acceder a la zona donde se

    Entorno de desarrollo y primera aplicacin

    47/73

  • Ya vamos aprendiendo muchas cosas, ya sabemos crear un proyecto y acceder a la zona donde sedisean las pantallas. Ahora pasaremos a estudiar las partes de un proyecto.

    AyudaHemos creado varias mquinas virtuales con distintas versiones:

    Cuando ejecutamos una aplicacin... qu ADV utiliza? Nuestro entorno de desarrollo,Eclipse, comprueba la versin destino del proyecto y la compara con las versionesdisponibles en el administrador de dispositivos virtuales o ADV's. Cuando encuentre unocon la versin adecuada lo lanzar para ejecutar la aplicacin en l. Si tenemos variosADV's con la misma versin, la 2.3.3, por ejemplo, el entorno Eclipse las mostrar paraseleccionar con cual queremos ejecutar el programa. Si encuentra algn conflicto y nosabe qu ADV debe lanzar, nos lo preguntar igual que nos pas en la modificacin delanterior ejemplo.

    5. Ficheros y partes de un proyecto AndroidHemos creado un par de ejemplos y hemos visto cmo Eclipse nos creaba con ellos un buen nmero decarpetas. Vamos a ver la estructura de las carpetas y los ficheros que componen una aplicacin Android.

    5.1 Partes de un proyectoCuando creamos un proyecto necesitamos proporcionar esta informacin:Propiedad NombreNombre de proyecto Nombre del proyectoNombre de la aplicacin Nombre de la aplicacin.Nombre del paquete Nombre del paquete. Debemos utilizar un nombre DNSPrimera actividad (pantalla) Nombre de la pantalla principal del entrada a la aplicacinVersin mnima de SDK Versin mnima del SDK Android

    Si revisamos los pasos que realizamos al principio, esta es la informacin que nos solicitaba.En el mundo Android, una "Activity" es una ventana que contiene la interfaz de usuario de nuestra

    Entorno de desarrollo y primera aplicacin

    48/73

  • En el mundo Android, una "Activity" es una ventana que contiene la interfaz de usuario de nuestraaplicacin. Una aplicacin puede tener varias pantallas o puede no tener ninguna. Por ejemplo, unservicio que est ejecutando tareas de fondo puede no necesitar una ventana de interfaz de usuario.El fichero de formato "xml", llamado "main.xml" es el que contena la definicin de la actividad o"Activity". Es el que utilizamos en el ltimo ejemplo para mostrar un segundo texto en pantalla.

    5.2 Carpetas de un proyectoLa estructura que nos mostraba Eclipse en la creacin de un proyecto es:

    Veamos una descripcin de estas carpetas y ficheros. Atento a estas descripciones porque es muyimportante que conozcamos esta estructura:

    Entorno de desarrollo y primera aplicacin

    49/73

  • Carpeta NombreAndroidmanifest.xml Fichero XML que describe cmo se va a construir la aplicacin y de que partes se compone:

    servicios, actividades, ... Adems especificaremos los permisos que necesitamos en nuestraaplicacin.

    bin/ Contiene la aplicacin compiladalibs/ Contiene bibliotecas externas para nuestra aplicacin. Por ejemplo, componentes

    desarrollados por otros y que queremos incorporar a nuestros proyectosres/ Carpeta para almacenar los recursos de nuestra aplicacin. Por ejemplo, los grficos,

    iconos, cadenas en varios idiomas, ...src/ Cdigo fuente Java de la aplicacin.assets/ Otros ficheros que se empaquetan con la aplicacin para instalarse en el dispositivo. Por

    ejemplo, archivos de bases de datos, HTML, ficheros de textogen/ Carpeta donde se va colocando el cdigo generado. Contiene un fichero "R.java" generado

    automticamente y que hace referencia a los recursos de nuestro proyecto. No debemosmodificar este fichero.

    build.xml y *.properties Ficheros para generar los proyectos si no utilizamos Eclipseproguard.cfg Archivo para "ofuscar" el cdigo Android. Un ofuscador es un proceso para ocultar el

    cdigo y as evitar que se puede "decompilar" un programa y podamos acceder al cdigofuente.

    Android xxx Contiene un fichero "android.jar" con todas las bibliotecas de clases necesarias en unaaplicacin Android.

    Cuando creamos un proyecto, le hemos proporcionado el nombre de una actividad para la aplicacin.Si vemos el rbol de ficheros de la rama "src":

    "src" o "source" es la carpeta donde escribiremos nuestro cdigo Java para la aplicacin Android. Ah

    Entorno de desarrollo y primera aplicacin

    50/73

  • "src" o "source" es la carpeta donde escribiremos nuestro cdigo Java para la aplicacin Android. Ahrecogeremos todos los elementos creados en la zona "res", donde se ubican las pantallas definidas por elusuario, y las presentaremos con el cdigo adecuado. En este caso, el asistente de creacin del proyectome solicit si queramos crear tambin la actividad. Al indicar que si, nos puso, a modo de ejemplo,este cdigo vlido de inicio.

    Dentro de la carpeta "gen" se encuentra el cdigo generado creado al ejecutamos el proyecto. Nodebemos modificar nunca estos ficheros:

    El fichero que genera, llamado "R" es el que contiene los recursos del programa: pantallas, grficos, ...vemos por ejemplo que dentro de "string" estn las dos cadenas de ejemplo y dentro de "layout" lapantalla donde estn insertados estos y que se llama, por defecto, "main".Si seleccionamos alguno de ellos, podemos ver su cdigo fuente a la derecha, donde se indica que es unfichero generado automticamente y que no debemos modificarlo:

    Entorno de desarrollo y primera aplicacin

    51/73

  • La carpeta de recursos /res:

    Contiene, como hemos comentado antes, todos los recursos de nuestro proyecto. Si nos fijamos en loque tenemos por defecto, podemos ver el icono de la aplicacin en tres resoluciones distintas (hdpi, ldpi,mdpi):

    Sern iconos para los distintos formatos o resoluciones de los dispositivos. Las subcarpetas de esta zonade recursos son:

    Entorno de desarrollo y primera aplicacin

    52/73

  • res/drawable: para imgenes . Por ejemplo de formato JPEG o PNGres/layout: para especificaciones de formato de pantallas basadas en XMLres/menu: para definir mens en formato XMLres/raw: de propsito general, por ejemplo vdeos o ficheros de textores/values: para cadenas de caracteresres/xml: para otro tipo de ficheros XML que queremos empaquetar con el proyecto

    Adems, como hemos visto antes, pueden llevar los sufijos dependiendo de la resolucin de la pantalla.Cuando creamos un proyecto tenemos estos tres iconos de ejemplo, una disposicin de pantalla o"layout" sencilla en el main.xms y un fichero de recursos llamado "strings.xml". Vamos a detenernos unmomento en este fichero de recursos. Observemos el ejemplo que hicimos antes:

    Vimos que esto daba como resultado una salida en pantalla de las dos cadenas de caracteres: una fija con"Y la he hecho yo solo, Jose" y otra basada en una variable "@string/hello". Esta ltima definicin "@"indica que se trata de una cadena de este fichero de recursos:

    Para qu puede servir esta idea de los recursos? En principio parce que nos complica la aplicacin ya

    Entorno de desarrollo y primera aplicacin

    53/73

  • Para qu puede servir esta idea de los recursos? En principio parce que nos complica la aplicacin yaque tendramos que definir todos los literales que queremos poner en las pantallas. Pero imaginemosahora que queremos hacer multiidioma nuestra aplicacin. Si fuera as, bastara con indicar los literalescorrectos del archivo de recursos en lugar de tener que definir una pantalla para cada idioma con sustextos traducidos.

    Partes de un proyecto

    5.3 Resultado del proyectoCuando generamos un proyecto obtenemos una serie de ficheros dentro de la carpeta "bin":

    bin/clases: clase Java compiladabin/clases.dex: Ejecutable creado con las clases Javabin/miaplicacion.ap_: Recursos del programa empaquetados en un fichero ZIPbin/miaplicacion.apk: aplicacin del proyecto.

    El fichero "Androidmanifiest.xml" es el alma del proyecto.

    En este fichero indicamos todos los parmetros importantes para la compilacin del proyecto:actividades, nombres, recursos, permisos, ... Para mantener este fichero Eclipse nos proporciona unagran ayuda. Vemoslo haciendo doble clic sobre l:

    Entorno de desarrollo y primera aplicacin

    54/73

  • Este fichero, como todo fichero XML almacena informacin estructurada. Esta informacin tiene variosmbitos que podemos ver reflejados en las solapas inferiores que hemos marcado en la imagen anterior.Todas estas solapas nos permiten mantener el fichero "AndroidManifiest.xml":

    Podemos ver el contenido generado por las solapas. Tenemos la informacin de la aplicacin, versin

    Entorno de desarrollo y primera aplicacin

    55/73

  • Podemos ver el contenido generado por las solapas. Tenemos la informacin de la aplicacin, versinde android (sdk:10), la pantalla de inicio (activity), nombre de la aplicacin, compuesta tambin de unacadena de caracteres del fichero de recursos "@string/app_name", ...

    La primera lnea indica el nombre del paquete "Package" que es el que indicamos en la creacin delproyecto. Las siguientes lneas identifican la versin de la aplicacin. En concreto, "VersionName" serel nmero que los usuarios vern en las aplicaciones de los dispositivos. Este valor puede ser unacadena de caracteres.El otro valor que identifica la versin "VersionCode", debe ser numrico y debe llevar la lgica de quelas nuevas versiones sern de un nmero mayor que las anteriores. De esta forma, la tienda de android"AndroidMarket", o como se llama ahora "Play Store" sabr cuando tenemos una nueva versin delprograma para avisarnos de si queremos instalarlo. Estos valores podemos modificarlos en la solapa"manifest"

    Podemos ver que a la derecha de "Version Name" tenemos la posibilidad de hacer un "browse". Esto es,nos permite buscar y elegir una cadena de caracteres para este campo que hemos dicho antes que eraprecisamente eso, una cadena de caracteres. Si le pulsamos en explorar podemos ver:

    Entorno de desarrollo y primera aplicacin

    56/73

  • Es decir, va a explorar la zona de recursos de las cadenas de caracteres, donde nos muestra las que haydefinidas en el fichero que ya conocemos de "strings.xml":

    Todo va encajando y vemos que tenemos centralizados los recursos en esa carpeta y que podemosutilizarlos para incluirlos en distintas partes del nuestro proyecto.

    AnotacinNo hemos hablado todava de ese men que nos ha creado el ejemplo. Esto lo dejaremospara ms adelante. Ahora nos centraremos en los aspectos generales de una aplicacinsencilla.

    La seccin "" representa el ncleo de este importante fichero. Por defecto, un proyecto

    Entorno de desarrollo y primera aplicacin

    57/73

  • La seccin "" representa el ncleo de este importante fichero. Por defecto, un proyectolleva una actividad o una pantalla de aplicacin que es la que aparece como principal. En la definicinde la aplicacin podemos ver las variables que indican su nombre y el icono, ambos de la seccin derecursos (android:icon y android:label)

    Despus de la definicin de la aplicacin est la de la actividad, es decir de la pantalla de interfaz deusuario que tenemos en la aplicacin. En este caso tiene dos parmetros (android:name y android:label)y una seccin "Intent-filter" que veremos ms adelante.

    AndroidManifest.XML. El fichero de configuracin del proyecto

    A largo del curso iremos viendo secciones de este fichero porque ser muy importante de cara a lacorrecta instalacin y ejecucin de nuestros programas.

    6. La programacin orientada a objetosEn el captulo siguiente nos meteremos a fondo con el lenguaje de programacin de Android que esJava. Este lenguaje est orientado a objetos, as que debemos aprender esta filosofa de programacin.Aunque esta teora seguramente te sea familiar, vamos a repasar que son los objetos, las clases y otroscomponentes que forman parte del mundo de la programacin orientada a objetos. Vamos a verlaahora de forma general y en el captulo siguiente la veremos de forma mucho ms precisa orientada aJava.

    6.1. Introduccin a la POO (programacin orientada a objetos)Todo lo que tenemos en el mundo Android est basado en clases que generan objetos.La POO es una evolucin de la programacin por procedimientos llamada tambin estructurada. Estaanterior programacin se basaba en funciones, procedimientos y el cdigo que controlaba el flujo de lasllamadas a estos. Esta forma de trabajar es la utilizada por lenguajes antiguos, como Visual Basic.

    De la programacin estructurada al enfoque orientado a objetosEn la programacin estructurada, con los procedimientos y funciones, el crecimiento de una aplicacin

    Entorno de desarrollo y primera aplicacin

    58/73

  • En la programacin estructurada, con los procedimientos y funciones, el crecimiento de una aplicacinhace que el mantenimiento de esta aplicacin sea una laboriosa tarea. Fundamentalmente debido a lagran cantidad de procedimientos y funciones que estn interrelacionadas entre s con multitudes dellamadas. Si necesitamos hacer una pequea modificacin nos puede suponer realizar un repasocompleto para comprobar a qu funciones puede afectar este cambio. El cdigo se encuentra disperso alo largo del programa por lo que el mantenimiento se har progresivamente ms difcil.La organizacin de una aplicacin en POO se realiza mediante estructuras de cdigo que contienen unconjunto de procedimientos e informacin que ejecutan una serie de procesos destinados a resolver ungrupo de tareas. Una aplicacin orientada a objetos tendr tantas estructuras de cdigo como aspectosdel programa tengamos que resolver.Un procedimiento situado dentro de una estructura no podr llamar sin ser llamado por otro de unaestructura distinta sino es bajo una serie de reglas. Lo mismo pasa con los datos, estarn separados delexterior excepto los que designemos. Este concepto de estructura es lo que llamaremos "Objeto"Estos objetos tienen una informacin precisa y un comportamiento detallado realizado porprocedimientos que hacen que puedan clasificarse segn el tipo de tarea que realizan.

    6.2 Elementos bsicos de la POO

    Las clasesUna clase no es ni ms ni menos que cdigo. Aunque dicho de esta forma, cualquier programa sera unaclase. Cuando definimos una clase, realmente estamos definiendo dos cosas diferentes: los datos quedicha clase puede manipular o contener y la forma de acceder a esos datos.Por ejemplo, si tenemos una clase de tipo Cliente, por un lado tendremos los datos de dicho cliente ypor otro la forma de acceder o modificar esos datos. En el primer caso, los datos del Cliente sern porejemplo el nombre, domicilio etc., estarn representados por una serie de campos o propiedades,mientras que la forma de modificar o acceder a esa informacin del Cliente se har por medio demtodos. Esas propiedades o caractersticas y las acciones a realizar son las que definen a una clase.Por ejemplo, esta la definicin de la clase "Button" que son los botones de las interfaces o pantallas:

    Veamos este concepto de otra forma: una clase es el conjunto de especificaciones o normas que definencmo se va a crear un objeto, es decir, las instrucciones para crear ese objeto. Una clase es larepresentacin abstracta de algo y el objeto es la representacin concreta de lo que una clase define.

    Entorno de desarrollo y primera aplicacin

    59/73

  • Los ObjetosPor un lado tenemos una clase que es la que define un "algo" con lo que podemos trabajar. Pero paraque ese "algo" no sea un "nada", tendremos que poder convertirlo en "algo tangible", es decir,tendremos que tener la posibilidad de que exista. Aqu es cuando entran en juego los objetos, ya que unobjeto es una clase que tiene informacin real.Digamos que la clase es la "plantilla" a partir de la cual podemos crear un objeto en la memoria. Porejemplo, podemos tener varios objetos del tipo Cliente, uno por cada cliente que tengamos en nuestracartera de clientes, pero la clase slo ser una. Dicho de otra forma: podemos tener varias instancias enmemoria de una clase. Una instancia es un objeto (los datos) creado a partir de una clase (la plantilla o elcdigo).En nuestros formularios o actividades: tenemos 10 botones por ejemplo y todos han sido creados apartir de la clase "Botn". La clase es la teora y el objeto la prctica. El manual de instrucciones paracrear el objeto. Y con el ejemplo del coche... podemos crear diferentes coches a partir de la clase"Coche" y cada uno puede tener sus propias propiedades: color, ... pero funcionan todos igual

    Los miembros de una claseLas clases contienen datos, esos datos suelen estar contenidos en variables. A esas variables cuandopertenecen a una clase, se les llama: campos o propiedades.Por ejemplo, el nombre de un cliente sera una propiedad de la clase Cliente. Ese nombre loalmacenaremos en una variable de tipo cadena de caracteres. De dicha variable podemos decir que es el"campo" de la clase que representa al nombre del cliente.Por otro lado, si queremos mostrar el contenido de los campos que contiene la clase Cliente, usaremosun procedimiento que nos permita mostrarlos, ese procedimiento ser un mtodo de la clase Cliente.Por tanto, los miembros de una clase son las propiedades (los datos) y los mtodos las acciones a realizarcon esos datos. (y esta es toda la complicacin que tienen los miembros y los mtodos)Como te he comentado antes, el cdigo que internamente usemos para almacenar esos datos o para, porejemplo, mostrarlos, es algo que no debe preocuparnos mucho, simplemente sabemos que podemosalmacenar esa informacin (en las propiedades de la clase) y que tenemos formas de acceder a ella,(mediante los mtodos de dicha clase), eso es "abstraccin" o encapsulacin.El proceso por el cual se obtiene un objeto a partir de las especificaciones de una clase se conoce comoinstanciacin. Como hemos dicho el molde (la clase) puede crear los objetos con propiedades diferentes:varios botones en el formulario pero con distintos tamaos o colores (propiedades).

    6.3 Los tres pilares de la Programacin Orientada a ObjetosTodos los lenguajes basados en objetos deben cumplir estos tres requisitos:

    HerenciaEncapsulacinPolimorfismo

    Entorno de desarrollo y primera aplicacin

    60/73

  • Polimorfismo

    AnotacinEn algunos sitios veremos un cuarto requisito: la abstraccin, pero este ltimo estestrechamente ligado con la encapsulacin, ya que, de hecho, es prcticamente lo mismo,aunque ahora lo veremos...

    HerenciaEsta es la caracterstica ms importante de la POO.La herencia permite crear nuevas clases a partir de clases existentes. La herencia puede simplificar eldiseo de la aplicacin proporcionando una estructura de relaciones entre las distintas clases. Tambinadmite la reutilizacin de cdigo porque slo se debe codificar el comportamiento de clases nuevas odistintas.Una relacin de herencia es una relacin en la que un tipo (el tipo derivado) se deriva de otro (el tipobase), de tal forma que el espacio de declaracin del tipo derivado contiene implcitamente todos losmiembros de tipo no constructor del tipo base.Un poco ms claro. La herencia es la capacidad de una clase de obtener la interfaz y comportamiento deuna clase existente.Y otra vez: La herencia es la cualidad de crear clases que estn basadas en otras clases. La nueva claseheredar todas las propiedades y mtodos de la clase de la que est derivada, adems de poder modificarel comportamiento de los procedimientos que ha heredado, as como aadir otros nuevos.Es decir, tengo una clase que es por ejemplo un coche. La herencia me dice que puedo crear un objetocoche a partir de este y que va a "heredar" todas sus caractersticas y adems podr personalizarlo a migusto. Resumiendo: gracias a la herencia podemos ampliar cualquier clase existente, adems deaprovecharnos de todo lo que esa clase haga... De momento la clase es ese "coche" que os hecomentado, enseguida veremos la definicin de clase.Para que lo entiendas mejor, veamos otro ejemplo clsico: Supongamos que tenemos una clase Gato queest derivada de la clase Animal. El Gato hereda de Animal todas las caractersticas comunes a losanimales, adems de aadirle algunas caractersticas particulares a su condicin felina. Podemos decirque un Gato es un Animal, lo mismo que un Perro es un Animal, ambos estn derivados (han heredado)de la clase Animal, pero cada uno de ellos es diferente, aunque en el fondo los dos son animales. Esto esherencia: usar una clase base (Animal) y poder ampliarla sin perder nada de lo heredado, pudiendoampliar la clase de la que se ha derivado (o heredado).En ocasiones podrs ver los trminos de otra forma, por ejemplo otra definicin es que partiendo deuna clase llamada clase base, padre o superclase (para decir jerrquicamente que es ms importante quela otra) podemos crear una nueva clase llamada derivada, hija o subclase. As de una clase podemosderivar una subclase y otra dentro de esta... creando una jerarqua de clases.En una jerarqua de clases hay unos elementos de ms nivel que otros y que para referencia a losmenores lgicamente tendr que indicar quin es su padre jerrquicamente. Por ejemplo:

    Entorno de desarrollo y primera aplicacin

    61/73

  • Programa -> pantalla -> cuadro de texto -> contenido del cuadro de texto

    Hay dos tipos de herencia:Simple. Cuando creamos una clase a partir de una sola clase base.Mltiple. Cuando creamos una clase a partir de varias clases base.

    Repitiendo el ejemplo del coche, es una clase que tiene como todas las clases sus propiedades, mtodosy eventos, por ejemplo:

    Propiedades: color del coche, modelo, tapicera, potencia... es decir, sus caractersticasMtodos: Acelerar, frenar, ...Eventos: est claro que est esperando muchos eventos, que se acelere, frene, cambie demarcha, encender la radio, una puerta... al dispararse un evento ejecutar una serie de accioneso un mtodo.

    Teniendo definida una clase podemos crear un "cochedeportivo" a partir de ella. Va a heredar todas suscaractersticas pero puedo modificar algunas cosas y aadirles otras por ejemplo un turbo o ABS.

    EncapsulacinLa encapsulacin es la capacidad de contener y controlar el acceso a un grupo de elementos asociados.Las clases proporcionan una de las formas ms comunes de encapsular elementos.La encapsulacin es la capacidad de separar la implementacin de la interfaz de una clase del cdigo quehace posible esa implementacin. Esto realmente sera una especie de abstraccin, ya que no nosimporta cmo est codificado el funcionamiento de una clase, lo nico que nos debe interesar es cmofunciona...Digamos que una clase es un elemento de Android (como un texto o un botn) que tiene unaspropiedades (color, fuente), mtodos y eventos (clic). Cuando decimos la implementacin de la interfazde una clase, nos referimos a los miembros de esa clase: mtodos, propiedades, eventos, etc. Es decir, loque la clase es capaz de hacer.Cuando usamos las clases, stas tienen una serie de caractersticas (los datos que manipula) as como unaserie de comportamientos (las acciones a realizar con esos datos). La encapsulacin es esa capacidad dela clase de ocultarnos sus interioridades para que slo veamos lo que tenemos que ver, sin tener quepreocuparnos de cmo est codificada para que haga lo que hace... simplemente nos debe importar quelo hace.Si tomamos el ejemplo de la clase Gato, sabemos que araa, come, se mueve, etc., pero el cmo lo haceno es algo que deba preocuparnos.El concepto es ms sencillo de lo que parece. Slo es la capacidad de separar por un lado lo que nosmuestra que hace ese objeto con el cdigo interno que lo realiza. As para nosotros un objeto por muycomplejo que sea slo veremos sus propiedades, mtodos y eventos desde el propio IDE. Aplica esto ala clase botn, se que tiene esas propiedades, mtodos y eventos pero no veo nada del cdigo querealiza esas acciones, es decir, est encapsulado. Dicho finalmente de forma tcnica: Establece laseparacin entre la interfaz del objeto y su implementacin.Esto aporta dos ventajas:

    Entorno de desarrollo y primera aplicacin

    62/73

  • Esto aporta dos ventajas:Seguridad. Se evitan los accesos no deseados, es decir, si est bien encapsulada no podremosmodificar directamente variables ni ejecutar mtodos que sean de uso interno. ("private" o"public")Simplicidad. Un programador no debe conocer cmo est hecho sino simplemente se limitara utilizarlo.Siguiendo con el ejemplo del coche, cuando lo ponemos en marcha simplemente giramos lallave sin saber que hace dentro del cap. Lo mismo aplicado al cdigo, tenemos una clase quedibuja un grfico, ste tiene un mtodo que realiza el dibujo, en nuestro programa llamaremosa ste mtodo y ya est no sabemos como se las arregla para dibujar lneas, escribir, textos,rellenar superficies, ...

    PolimorfismoEl polimorfismo se refiere a la posibilidad de definir mltiples clases con funcionalidad diferente, perocon mtodos o propiedades denominados de forma idntica, que pueden utilizarse de maneraintercambiable mediante cdigo cliente en tiempo de ejecucin.Significa que puede tener mltiples clases que se pueden utilizar de forma intercambiable, si bien cadaclase implementa las mismas propiedades o los mismos mtodos de maneras diferentes. El polimorfismoes importante en la programacin orientada a objetos puesto que permite usar elementos que tienen elmismo nombre, independientemente del tipo de objeto que se est utilizando en ese momento. Porejemplo, dada una clase base "Coche", el polimorfismo permite al programador definir diferentesmtodos "Iniciar_motor" para cualquier nmero de clases derivadas. El mtodo "Iniciar_motor" de unaclase derivada denominada "Coche_Diesel" puede ser totalmente diferente del mtodo con el mismonombre en la clase base. Otros procedimientos o mtodos pueden usar el mtodo "Iniciar_motor" de lasclases derivadas de la misma forma, con independencia del tipo de objeto "coche" que se est utilizandoen ese momento.El Polimorfismo nos permite usar miembros de distintas clases de forma genrica sin tener quepreocuparnos si pertenece a una clase o a otra. Siguiendo con el ejemplo de los animales, si el Gato y elPerro pueden morder podramos tener un "animal" que muerda sin importarnos que sea el Gato o elPerro, simplemente podramos usar el mtodo Morder ya que ambos animales tienen esa caracterstica"animal mordedor".Dicho de otra forma, el polimorfismo determina que el mismo nombre de mtodo realizar diferentesacciones segn el objeto sobre el que se ha aplicado. Aplicado a la programacin simplemente significaque en dos objetos: ventana y archivo al utilizar un mismo mtodo se aplicar un resultado diferente. Esdecir si aplicamos el mtodo "Abrir" obviamente es el mismo nombre pero realiza cosas diferentesdependiendo del objeto que lo llame: en un caso se abrir una ventana y en el otro un fichero.

    6.4 Jerarqua de clasesEs una de las formas tpicas de ver las superclases y subclases: en forma de rbol de clases o jerarqua:

    Entorno de desarrollo y primera aplicacin

    63/73

  • En este caso se trata de una vista o una pantalla de Android con todos los componentes que le podemosincorporar. Como ves, el concepto es sencillo. La nomenclatura como hemos visto en otras ocasionessera jerrquica: "transportes.barco.transbordador" para hacer referencia al nombre completo del objeto.En ocasiones si el nombre del objeto es nico es capaz de encontrar su sitio correcto, es decir, si en elcdigo hacemos referencia a "turismo", como slo existe un objeto con ese nombre en nuestra jerarquade objetos no hay problema en trabajar con l sin escribir el nombre completo. En cambio si el nombreexiste en varios sitios tendramos que poner el nombre completo para romper esa ambigedad.

    Relaciones entre objetosLos objetos se comunican entre si mediante una serie de relaciones que vamos a comentar ahora:

    HerenciaYa vimos antes como era la caracterstica ms importante de la POO y permite crear una clase derivadade otra principal. Esta nueva clase tiene todos los mtodos y propiedades que la original y adems otrosnuevos que podemos aadir. En el cdigo comprobaremos la relacin de herencia "es un": "untodoterreno es un automvil" es cierto pero "un todoterreno es un barco" devolvera falso.

    Pertenencia

    Entorno de desarrollo y primera aplicacin

    64/73

  • un objeto "motor" o un objeto "direccin". En este caso hay una relacin de pertenencia puesto queexiste un conjunto de objetos que pertenecen a otro objeto o se unen para formar otro objeto.En el cdigo lo representaremos como "tiene un". Un "coche tiene un motor" sera cierto pero "unabicicleta tiene un motor" sera falso.

    UtilizacinEn ocasiones un objeto utiliza a otro para alguna operacin sin implicar ninguna pertenencia entre ellos.Por ejemplo un objeto "Ventana" puede utilizar un objeto "Grfico" para mostrar el dibujo pero no esnecesario que el objeto "Grafico" sea propiedad del objeto "Ventana". La notacin en el cdigo es "usaun": el objeto Grafico usa una ventana sera cierto.

    ReutilizacinFinalmente si el objeto ha sido bien diseado puede ser reutilizado por otra aplicacin de forma directao creando una clase derivada de l. Este es uno de los objetivos principales de la POO: aprovechar elcdigo escrito.Esta es una aproximacin a los conceptos de la programacin orientada a objetos. Ahora pasaremos aver todo esto de nuevo pero de una forma ms tcnica y ajustada al lenguaje Java.

    7. Actualizar versinLas versiones tanto de Eclipse como del mdulo ADT (Android Developer Toolkit) vanevolucionando constantemente, as que es normal que nos encontremos con varios cambios queveremos ahora.

    7.1 Aviso de nueva versinAl iniciar el entorno podemos encontrarnos con que no podemos trabajar porque hay una nuevaversin del Android SDK:

    La forma ms cmoda de actualizarlo, y as aprendemos ms cosas de Eclipse, es ir a la opcin de:

    Entorno de desarrollo y primera aplicacin

    65/73

  • Esta es la pantalla indicaremos el origen de las descargas:

    En este caso, al ser una actualizacin del mdulo de Android, hemos seleccionado esa opcin para quenos muestra las posibles actualizaciones. Al cabo de unos segundos nos mostrar si hay nuevoscomponentes:

    Si desplegamos el primer componente vemos que es la versin requerida y que nos avisaba al iniciar elentorno (21.1.0):

    Entorno de desarrollo y primera aplicacin

    66/73

  • Pulsaremos en siguiente para que haga la actualizacin. En la siguiente pantalla en la parte derecha"Aceptamos" los textos de licencia:

    y comenzar la actualizacin:

    Entorno de desarrollo y primera aplicacin

    67/73

  • AnotacinSi recibes un mensaje de error en la instalacin:

    Haremos lo siguiente. En la pgina de descargas volveremos a aadir la ubicacin deldepsito de informacin de actualizaciones:

    Pulsamos en "Add" y escribimos el sitio que aparece en pantalla. Aceptamos y laactualizacin la har de forma correcta.

    Durante la instalacin nos dar un aviso de que est instalando contenido no firmado. Aceptamos paraque haga la instalacin:

    Entorno de desarrollo y primera aplicacin

    68/73

  • Una vez terminado ya podemos ejecutarlo con normalidad. Vamos a comprobar las versiones. Nosvamos a la opcin "About ADT" dentro del men "Help"

    Pulsamos en "Installation Details", donde podemos ver todos los mdulos instalados con sus versiones.Vemos la ltima 21.1correctamente actualizada:

    7.2 Problemas importando proyectosEn ocasiones, al importar proyectos de otros sitios pueden que no nos funcionen correctamente. Bien

    Entorno de desarrollo y primera aplicacin

    69/73

  • En ocasiones, al importar proyectos de otros sitios pueden que no nos funcionen correctamente. Bienporque estn en una versin distinta a la nuestra o porque simplemente tiene nombres de carpetasdistintas, puede ser que al importarlo nos encontremos con problemas de ejecucin. Esto podra darseen algunos de los ejemplos que veremos a lo largo del curso y cuyos proyectos te podrs descargar.Por ejemplo:

    Se trata de un proyecto que he importado pero que no me deja ejecutar. En este caso es por la versinde los SDK's instaladas o definidas en el proyecto. Para resolver esto, basta con indicar en el proyectoesta opcin:

    Con el botn derecho encima del proyecto seleccionaremos la opcin "Fix Project Properties" del men"Android Tools". Esta opcin reconstruir el fichero de configuracin del proyecto adaptndose anuestra instalacin. El error desaparecer y podremos ejecutar sin problemas el proyecto.

    Diferentes SDK Otro de los errores habituales es que descarguemos un proyecto de Internet que est hecho en un SDKque no tenemos instalado. Supongamos el caso de que tenemos el SDK 17 instalado en nuestro equipoy que me descargo una aplicacin hecha con el SDK 18. Eclipse dar un mensaje indicando que noencuentra ese SDK:

    Entorno de desarrollo y primera aplicacin

    70/73

  • Si no queremos descargarnos ese SDK, podemos modificar el proyecto. Iremos a las propiedades delproyecto para asignarle un SDK distinto. Podemos acceder con el botn derecho en el proyecto y luego"Properties", o desde el men:

    Le asignaremos entonces nuestro SDK :

    En ese momento el proyecto queda configurado con el SDK que disponemos en el equipo y podremosejecutarlo.Lgicamente se recomienda que cada proyecto se ejecute con su propio SDK, para as disponer de todas

    Entorno de desarrollo y primera aplicacin

    71/73

  • Lgicamente se recomienda que cada proyecto se ejecute con su propio SDK, para as disponer de todaslas funciones que incorpora el SDK correspondiente. Por ejemplo, si lo que estamos descargando es delSDK 18, que incorpora alguna funcin nueva de Android, lgicamente no estar disponible si lo"rebajamos" al SDK 17, ya que ste no implementar estas nuevas funciones.

    Entorno de desarrollo y primera aplicacin

    72/73

  • Ejercicios

    Ejercicio 1. Instalar el entorno de trabajo

    2020

    Esta unidad no tiene ejercicios. Instala todo el entorno de trabajo:EclipseSDK de AndroidDefinir un emulador

    Realiza la aplicacin de ejemplo y mustrala en el emulador.

    Entorno de desarrollo y primera aplicacin

    73/73

    N-1 Entorno de desarrollo y primera aplicacin1. El mundo Android1.1 Android y las versiones1.2 Personalizaciones del sistema operativo.1.3 Dispositivos Android

    2. El entorno de desarrollo2.1 El mundo "Eclipse"2.2 Descargar e instalar Eclipse

    3. Emular un dispositivo Android4. El primer proyecto AndroidOtro ejemploMs detalles de los ejemplos

    5. Ficheros y partes de un proyecto Android5.1 Partes de un proyecto5.2 Carpetas de un proyecto5.3 Resultado del proyecto

    6. La programacin orientada a objetos6.1. Introduccin a la POO (programacin orientada a objetos)De la programacin estructurada al enfoque orientado a objetos

    6.2 Elementos bsicos de la POOLas clasesLos ObjetosLos miembros de una clase

    6.3 Los tres pilares de la Programacin Orientada a ObjetosHerenciaEncapsulacinPolimorfismo

    6.4 Jerarqua de clasesRelaciones entre objetos

    7. Actualizar versin7.1 Aviso de nueva versin7.2 Problemas importando proyectosDiferentes SDK

    EjerciciosEjercicio 1. Instalar el entorno de trabajo