You are on page 1of 73

Entorno de desarrollo y primera aplicacin

ADRINFOR S.L.

Entorno de desarrollo y primera aplicacin

ndice
N-1 Entorno de desarrollo y primera aplicacin
1. El mundo Android
1.1 Android y las versiones
1.2 Personalizaciones del sistema operativo.
1.3 Dispositivos Android
2. El entorno de desarrollo
2.1 El mundo "Eclipse"
2.2 Descargar e instalar Eclipse
3. Emular un dispositivo Android
4. El primer proyecto Android
Otro ejemplo
Ms detalles de los ejemplos
5. Ficheros y partes de un proyecto Android
5.1 Partes de un proyecto
5.2 Carpetas de un proyecto
5.3 Resultado del proyecto
6. La programacin orientada a objetos
6.1. Introduccin a la POO (programacin orientada a objetos)
De la programacin estructurada al enfoque orientado a objetos
6.2 Elementos bsicos de la POO
Las clases
Los Objetos
Los miembros de una clase
6.3 Los tres pilares de la Programacin Orientada a Objetos
Herencia
Encapsulacin
Polimorfismo
6.4 Jerarqua de clases
Relaciones entre objetos
Herencia
Pertenencia
Utilizacin
Reutilizacin
7. Actualizar versin
7.1 Aviso de nueva versin
7.2 Problemas importando proyectos
Diferentes SDK
Ejercicios
Ejercicio 1. Instalar el entorno de trabajo

3
3
3
6
6
6
7
8
14
23
34
38
48
48
49
54
58
58
58
59
59
60
60
60
61
62
63
63
64
64
64
65
65
65
65
69
70
73
73

2/73

Entorno de desarrollo y primera aplicacin

N-1 Entorno de desarrollo y primera aplicacin


Bienvenidos a este curso de programacin de Android. A lo largo de las prximas lecciones
aprenderemos a programar en el sistema operativo ms importante del mundo de los telfonos
inteligentes.

1. El mundo Android
1.1 Android y las versiones
Android, como todos los sistemas operativos ha tenido y seguir teniendo distintas versiones. Este
asunto de las versiones es ms importante de los que parece porque nos hace plantearnos sobre qu
versin debemos desarrollar nuestras aplicaciones.
No nos centraremos en una en concreto, sino que estudiaremos los mtodos generales de programacin
que sern vlidos para cualquier versin, incluida la 3.0 destinada a tabletas y la vigente, 4.3 (Jelly
Bean). Esta versin se present el 24 de julio de 2013, ya los incorporan varios terminales y se
generalizar 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 una
fragmentacin entre las distintas ediciones. Esto es, hay muchos tipos de dispositivos de varios
fabricantes con versiones distintas, desde la 1.6 hasta la 4.3. En el mundo Iphone esto es ms
homogneo, ya que es mucho ms sencillo su actualizacin al tratarse de un nico fabricante con un
solo modelo de terminal. Es algo similar al mundo Apple contra el mundo Windows. En los equipos
Apple, basta con escribir y probar el cdigo para el hardware, siempre el mismo, de los Mac. En
cambio Windows debe trabajar con cientos de fabricantes distintos, miles de tarjetas de vdeo, sonido y
dispositivos 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,

3/73

Entorno de desarrollo y primera aplicacin

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 actualizarnos
a la versin vigente. Por ejemplo, Google tiene especial inters en que los fabricantes adopten la interfaz
de la versin 4.x, muy renovada y ms elegante que las anteriores. Esta interfaz, y cuyo nombre
seguramente te sea conocido, es la interfaz Holo.
En este curso estudiaremos Android en general y luego pasaremos a ponernos al da con la versin
actual. Son los ciclos habituales de todo programador. En el mundo .NET de Microsoft estaba vigente
la 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 es
la fragmentacin actual de versiones de Android:

Como primer dato destacable est que las versiones "Jelly Bean" ya superan al que era la versin ms
utilizada 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 Android
es:

4/73

Entorno de desarrollo y primera aplicacin

Versin Android

Versin SDK

Nombre

Kernel de Linux

Fecha

1.5

Cupcake

2.6.27

abril/2009

1.6

Dount

2.6.29

septiembre/2009

2.0 / 2.1

5/6/7

Eclair

2.6.29

octubre/2009

2.2

Froyo

2.6.32

mayo/2010

2.3

GingerBread

2.6.35.7

Diciembre/2010

2.3.3

10

GingerBread

3.0 / 3.1 / 3.2

11/12/13

HoneyComb

2.6.36

Febrero/2011

4.0 / 4.0.1 / 4.0.2

14/15

Ice Cream

3.0.1

Octubre/2011

4.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

Febrero/2011

El crecimiento ha sido rapidsimo pero ahora ha llegado a su madurez con la 4.0. Por ejemplo, la
velocidad 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 el
potencial grfico necesario para las tabletas y tuvo que hacerse de forma inmediata una actualizacin
exclusiva para tabletas, la 3.0.
Durante un tiempo existan dos versiones, una para telfonos con "GingerBread" (2.3.3) y otra para
tabletas con "HoneyComb" (3.0). La siguiente versin, la 4.0 Ice Cream ha unificado los dos tipos de
dispositivos y ya no es necesario una versin especial para tabletas, sino que la misma versin incluye lo
necesario para desarrollar en cualquier dispositivo. Por eso, nunca veremos la HoneyComb 3.0 en los
telfonos, 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 un
dulce:

Documentacin externa
En el siguiente enlace tienes la pgina oficial de Jelly Bean de Google. Antala bien
porque es el "principio" de todo lo relativo al desarrollo e informacin de esta versin de
sistema operativo
Acceso 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

5/73

Entorno de desarrollo y primera aplicacin

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

Ante todo esto, est claro que debemos aprender a programar en Android, sin centrarnos en una
versin 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 el
sistema operativo se muestra puro, sin aadidos.
Sobre esta base, distintos fabricantes realizan modificaciones al entorno con el fin de mejorar o aportar
un escritorio ms atractivo. Si cogemos un telfono HTC veremos su personalizacin, habitualmente
muy 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 lo
que desarrollemos se ejecutar igual en los distintos terminales.

1.3 Dispositivos Android


Android slo para mviles? Pues no, cada da aumenta el nmero de dispositivos con Android. Esta es
una relacin de los que seguramente conoces y alguno ms:
Telfonos inteligentes
Tabletas
Televisiones
Dispositivos multimedia
Libros electrnicos
Cmaras de fotos
Relojes
...

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

6/73

Entorno de desarrollo y primera aplicacin

Android est basado en Java, as que este es el lenguaje que nos toca aprender en este curso. Pero cmo
escribiremos el cdigo? Pues acudiendo a un entorno de desarrollo. Por ejemplo, en el mundo
Microsoft .NET tiene su entorno de desarrollo para VB.Net o C#.net. Java tambin tiene su entorno
JDK para desarrollar aplicaciones en Java.
Existe un entorno de desarrollo, ampliamente utilizado en ciertos entorno, llamado Eclipse que permite
personalizarlo para que soporte Android. Vamos a ver ahora cmo instalar y configurar este entorno.
Noticias de prensa
Hay posibilidad de desarrollar en otros lenguajes pero no es el estndar de Google. Hay
complementos para Visual Studio procedentes del conocido (en el mundo del desarrollo)
proyecto mono para utilizar Visual C# En lugar de Java. Tambin hay algunas adaptaciones
con un lenguaje de estilo Visual Basic de otro fabricante, pero ambas son de pago. As que
nos centraremos en el estndar de Google con Eclipse y Java.
Acceso al proyecto Mono
Acceso a Basic for Android

2.1 El mundo "Eclipse"


Eclipse es un entorno de desarrollo integrado de cdigo abierto multiplataforma para desarrollar. Esta
plataforma se utiliza habitualmente para desarrollar en Java, pero se puede personalizar para poder crear
otros tipos de aplicaciones.
Eclipse fue desarrollado originalmente por IBM como el sucesor de su familia de herramientas para
VisualAge. Eclipse est ahora desarrollado por la Fundacin Eclipse, una organizacin independiente
sin nimo de lucro que fomenta una comunidad de cdigo abierto y un conjunto de productos
complementarios, capacidades y servicios. Este es el aspecto del entorno:

7/73

Entorno de desarrollo y primera aplicacin

El entorno de desarrollo integrado (IDE) de Eclipse emplea mdulos (en ingls plug-in) para
proporcionar toda su funcionalidad al frente de la plataforma de cliente enriquecido, a diferencia de
otros 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 de
herramienta universal - un IDE abierto y extensible para todo y nada en particular".
Para poder realizar nuestra primera aplicacin necesitaremos tener configuradas estos tres entornos o
programas
Instalar la versin estndar de Eclipse
Instalar los complementos para Android
Configurar un emulador de Android
La primera parte ser la de descargar e instalar el entorno Eclipse. Hasta hace muy poco tenamos que
descargar 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 prensa
Como acabo de comentar, hay una nueva versin "todo en uno", ms fcil que lo que
tenamos hasta ahora. Esta seccin es nueva y sustituye a la anterior en la que se realizaba
este proceso de forma mucho mas laboriosa.

8/73

Entorno de desarrollo y primera aplicacin

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 Android
Una 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 estas
carpetas:

9/73

Entorno de desarrollo y primera aplicacin

Corresponden al kit de desarrollo (sdk), el entorno de desarrollo integrado (Eclipse) y el administrador


de kits (SDK Manager). Si exploramos las carpetas vemos que en las imgenes nos encontramos con la
ltima 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:

10/73

Entorno de desarrollo y primera aplicacin

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.


Anotacin
Si no se ejecuta el SDK Manager, que sucede en algunas instalaciones espera a ejecutarlo
desde Eclipse, tal y como se indica en unos momentos.
Ahora ya podemos iniciar Eclipse, que lo tenemos en esta carpeta:

11/73

Entorno de desarrollo y primera aplicacin

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. Tenemos


dos opciones, o hacer lo que indica e incluir en la variable de entorno "Path" la ruta
del ejecutable de java "javaw.exe" o instalar la versin JDK de Java. Recomiendo
esta ltima opcin que puedes descargar desde aqu: JDK de Java o desde la Web de
Oracle.
Si todo es correcto, al iniciar Eclipse nos pedir un "workspace"

12/73

Entorno de desarrollo y primera aplicacin

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

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

13/73

Entorno de desarrollo y primera aplicacin

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

3. Emular un dispositivo Android


El SDK de Android incorpora un emulador para poder probar las aplicaciones como si estuvieran en el
mismo 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 versin
del sistema operativo, una emulacin de almacenamiento, como si fuera una tarjeta SD y otros
dispositivos adicionales como el GPS o acelermetro.
Para crear el emulador ejecutaremos el programa "AVD Manager" o Android Virtual Device Manager
que tenemos disponible desde la opcin "Window" de Eclipse:

14/73

Entorno de desarrollo y primera aplicacin

Esta aplicacin se encuentra tambin disponible en el SDK Manager:

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

15/73

Entorno de desarrollo y primera aplicacin

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 seleccionamos
la versin que queremos. Podemos comprobar que nos aparecen las versiones de API que hemos
descargado. Vamos a seleccionar por ejemplo la 2.3.3, una resolucin WVGA y seguimos
configurando:

16/73

Entorno de desarrollo y primera aplicacin

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 en
nuestra lista:

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

17/73

Entorno de desarrollo y primera aplicacin

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 de
ordenador, la pantalla saldrn bastante grande ya que ser fiel a esos 240 puntos de densidad. Pero no
importa, indicamos "launch" y comenzar la emulacin del dispositivo:

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

18/73

Entorno de desarrollo y primera aplicacin

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.
Anotacin
Dependiendo 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 el
botn de apagado del teclado de la derecha hasta que nos muestra la conocida pantalla del modo
silencioso, avin o apagado.:

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

19/73

Entorno de desarrollo y primera aplicacin

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

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

20/73

Entorno de desarrollo y primera aplicacin

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

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

21/73

Entorno de desarrollo y primera aplicacin

Si la medimos en el monitor ser exactamente de 4", pero como la densidad del monitor es inferior la
visin ser muy pobre. Nos indica que la escala es de 0,45, es decir algo menos de la mitad de la
pantalla. Para tener la misma calidad que el telfono mvil necesitamos dos veces el tamao que hemos
definido. De momento no tocaremos esta opcin para que se inicie a pantalla completa como el caso
anterior.
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 de
480x800.
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 resoluciones
equivalen a una densidad de 316 puntos por pulgada en un, por ejemplo, Galaxy
Nexus ( o 1.280 x 800 con un Nexus 7). Tenemos que tenerlo en cuenta si queremos
realizar aplicaciones con esta resolucin, ya que tendramos que indicarlo en la
mquina virtual de Android.
Como curiosidad, la resolucin mxima que puede distinguir el ojo humano es de 300 ppp (es lo que se
dice aunque no est del todo claro). Iphone 5 tiene una resolucin de 1.136x640 (906x640 en el Iphone
4), pero al ser una pantalla ms pequea (3,5") que el Galaxy Nexus la densidad es de 326ppp. Una
resolucin excelente con su famosa "Retina Display" que indicaba la calidad de esta pantalla. El nuevo
IPAD II de Apple, presentado en marzo/2012 tambin ha incrementado notablemente su densidad de
puntos, 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 compararse
en este aspecto de densidad de puntos. La carrera de las resoluciones sigue avanzando. Los terminales
de gama alta comienzan a tener todos "full hd", que son 1.920 x 1.080. Es la misma resolucin que
tenemos 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 que
hacen una densidad de puntos de 300 dpi, superando a la todopoderosa Ipad (2.048x1.536 conuna
densidad de 266dpi)
Resumiendo las resoluciones y tamaos de pantalla, echemos un vistazo a esta tabla:

22/73

Entorno de desarrollo y primera aplicacin

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

4. El primer proyecto Android


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

De los proyectos disponibles, seleccionaremos:

23/73

Entorno de desarrollo y primera aplicacin

Al ver esta pantalla de seleccin de proyectos, recordamos la versatilidad de este entorno. Adems de
proyectos Java y otros menores, vemos que hemos podido integrar en l proyectos Android. La
personalizacin de Eclipse, hecha por Google para desarrollo en Android, ha sido la que ha aadido
este 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:

24/73

Entorno de desarrollo y primera aplicacin

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

25/73

Entorno de desarrollo y primera aplicacin

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

26/73

Entorno de desarrollo y primera aplicacin

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

Continuamos para indicar el formato de la actividad:

27/73

Entorno de desarrollo y primera aplicacin

El formato en cuanto a navegacin. Si desplegamos "Navigation Type" veremos varias opciones de


configuracin para mens. Todo esto lo veremos ms adelante.
Finalizamos el asistente y ya tendremos por fin nuestra primera aplicacin en el entorno de desarrollo.
Anotacin
Al 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 la
ventana donde irn los datos o elementos que mostrar nuestra aplicacin. No es
obligatorio 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 esa
actividad o "Activity":

28/73

Entorno de desarrollo y primera aplicacin

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

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

29/73

Entorno de desarrollo y primera aplicacin

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

Le estamos indicando que queremos ejecutarlo como una aplicacin Android. As el entorno Eclipse
sabe que debe lanzar un emulador para poner en marcha la aplicacin.
Anotacin
Si no te aparecen estas opciones, comprueba que tienes marcado el ttulo del proyecto en el
explorador de archivos:

30/73

Entorno de desarrollo y primera aplicacin

Esto har, como hemos dicho, que se ejecute el emulador y dentro de l la aplicacin. De la misma
forma que se ejecutara en un terminal mvil. Antes de ejecutar la aplicacin vamos a aadir una pestaa
llamada "Console" para que nos muestre informacin de los procesos que hace Eclipse. Si no la tienes
en 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 la
opcin esperamos a que se ejecute el emulador). Ahora pulsamos ya en ejecutar la aplicacin. Al
generarse podemos ver los pasos realizados y que, efectivamente, lanzar el emulador:

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

31/73

Entorno de desarrollo y primera aplicacin

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 ha
seguido funcionando enviando la aplicacin al emulador:

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

32/73

Entorno de desarrollo y primera aplicacin

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 carpetas
del proyecto:

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

33/73

Entorno de desarrollo y primera aplicacin

Anotacin
Para 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 la


tienda oficial. Esta opcin est en la configuracin y luego en "Aplicaciones". En espaol
es "permitir instalar aplicaciones de orgenes desconocidos"

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

Aun as veremos que en el entorno de desarrollo sigue apareciendo. No pasa nada, en nuestro entorno
de 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 con
el botn derecho en el proyecto y seleccionando:

34/73

Entorno de desarrollo y primera aplicacin

Nos mostrar este mensaje:

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

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

35/73

Entorno de desarrollo y primera aplicacin

Continuamos indicando el SDK:

Ser para la versin 2.3.3. Seguimos:

36/73

Entorno de desarrollo y primera aplicacin

Podemos ver que tenemos una buena coleccin de ejemplos de todo tipo, desde utilizacin de sensores a
un 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:

37/73

Entorno de desarrollo y primera aplicacin

Anotacin
Recuerda 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, como
en el caso anterior, instalable en los mviles fsicos.

Anotacin
Hay opciones del emulador que se pueden acceder por el teclado. Ten en cuenta estos
atajos porque te facilitarn mucho su manejo:
Opciones del emulador

Ms detalles de los ejemplos


Vamos a cambiar de proyecto para ir familiarizndonos con el entorno. Adems... porqu nos ha
creado 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 cerramos
anteriormente porque queremos editarlo y volver a ejecutarlo. Para esto haremos lo siguiente:

38/73

Entorno de desarrollo y primera aplicacin

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

39/73

Entorno de desarrollo y primera aplicacin

Como vemos, hay una amplia seleccin de elementos que queremos incorporar al "workspace". Esta
opcin la utilizaremos a menudo cuando incorporemos otros elementos como grficos o ficheros
adicionales. 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 le
indicamos 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 proyectos
que iremos creando.
Anotacin
Cuando tengamos ms de un proyecto en el espacio de trabajo tenemos que asegurarnos de
que hemos marcado el proyecto adecuado al ejecutarlo, de lo contrario puede que se
ejecute el que no queremos.

40/73

Entorno de desarrollo y primera aplicacin

Sigamos con el ejemplo para poder modificar ese mensaje de texto en ingls que nos mostraba nuestra
primera 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 algo
muy interesante en la parte derecha de Eclipse:

41/73

Entorno de desarrollo y primera aplicacin

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. Como
vemos en la pantalla, en la parte derecha tenemos el texto que luego nos muestra la ejecucin del
programas. De momento exploremos este rea porque es densa en contenido y la utilizaremos muy a
menudo.

42/73

Entorno de desarrollo y primera aplicacin

Anotacin
Si la pantalla central queda muy pequea tienes unos botones de zoom en la parte superior
derecha:

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 la
primera "hello", escribiendo por ejemplo:

43/73

Entorno de desarrollo y primera aplicacin

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

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

44/73

Entorno de desarrollo y primera aplicacin

Observemos el contenido de este fichero:

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


Anotacin
El lenguaje XML es un lenguaje de etiquetas (como el HMTL) jerrquico orientado a
almacenamiento de datos. Se propone como un estndar para el intercambio de
informacin estructurada entre diferentes plataformas. Se puede usar en bases de datos,
editores de texto, hojas de clculo ...
El grupo de lneas:
<RelativeLayout ... >
...
</RelativeLyout>

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

45/73

Entorno de desarrollo y primera aplicacin

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 definicin
de 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 un
control 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:

46/73

Entorno de desarrollo y primera aplicacin

Volvamos a la vista de la pantalla:

Aparece en la derecha este segundo texto que hemos incluido pero el primero no est actualizado. Esto
es porque no est grabado el fichero "strings.xml" que modificamos antes. Vamos a ejecutar el
programa, 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

47/73

Entorno de desarrollo y primera aplicacin

Ya vamos aprendiendo muchas cosas, ya sabemos crear un proyecto y acceder a la zona donde se
disean las pantallas. Ahora pasaremos a estudiar las partes de un proyecto.
Ayuda
Hemos 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 versiones
disponibles en el administrador de dispositivos virtuales o ADV's. Cuando encuentre uno
con la versin adecuada lo lanzar para ejecutar la aplicacin en l. Si tenemos varios
ADV's con la misma versin, la 2.3.3, por ejemplo, el entorno Eclipse las mostrar para
seleccionar con cual queremos ejecutar el programa. Si encuentra algn conflicto y no
sabe qu ADV debe lanzar, nos lo preguntar igual que nos pas en la modificacin del
anterior ejemplo.

5. Ficheros y partes de un proyecto Android


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

5.1 Partes de un proyecto


Cuando creamos un proyecto necesitamos proporcionar esta informacin:
Propiedad

Nombre

Nombre de proyecto

Nombre del proyecto

Nombre de la aplicacin

Nombre de la aplicacin.

Nombre del paquete

Nombre del paquete. Debemos utilizar un nombre DNS

Primera actividad (pantalla)

Nombre de la pantalla principal del entrada a la aplicacin

Versin 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

48/73

Entorno de desarrollo y primera aplicacin

En el mundo Android, una "Activity" es una ventana que contiene la interfaz de usuario de nuestra
aplicacin. Una aplicacin puede tener varias pantallas o puede no tener ninguna. Por ejemplo, un
servicio 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 proyecto


La 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 muy
importante que conozcamos esta estructura:

49/73

Entorno de desarrollo y primera aplicacin

Carpeta

Nombre

Androidmanifest.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 nuestra
aplicacin.

bin/

Contiene la aplicacin compilada

libs/

Contiene bibliotecas externas para nuestra aplicacin. Por ejemplo, componentes


desarrollados por otros y que queremos incorporar a nuestros proyectos

res/

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 texto

gen/

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 debemos
modificar este fichero.

build.xml y *.properties

Ficheros para generar los proyectos si no utilizamos Eclipse

proguard.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 cdigo
fuente.

Android xxx

Contiene un fichero "android.jar" con todas las bibliotecas de clases necesarias en una
aplicacin 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

50/73

Entorno de desarrollo y primera aplicacin

"src" o "source" es la carpeta donde escribiremos nuestro cdigo Java para la aplicacin Android. Ah
recogeremos todos los elementos creados en la zona "res", donde se ubican las pantallas definidas por el
usuario, y las presentaremos con el cdigo adecuado. En este caso, el asistente de creacin del proyecto
me 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. No


debemos 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" la
pantalla 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 un
fichero generado automticamente y que no debemos modificarlo:

51/73

Entorno de desarrollo y primera aplicacin

La carpeta de recursos /res:

Contiene, como hemos comentado antes, todos los recursos de nuestro proyecto. Si nos fijamos en lo
que 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 zona
de recursos son:

52/73

Entorno de desarrollo y primera aplicacin

res/drawable: para imgenes . Por ejemplo de formato JPEG o PNG


res/layout: para especificaciones de formato de pantallas basadas en XML
res/menu: para definir mens en formato XML
res/raw: de propsito general, por ejemplo vdeos o ficheros de texto
res/values: para cadenas de caracteres
res/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 un
momento 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

53/73

Entorno de desarrollo y primera aplicacin

Para qu puede servir esta idea de los recursos? En principio parce que nos complica la aplicacin ya
que tendramos que definir todos los literales que queremos poner en las pantallas. Pero imaginemos
ahora que queremos hacer multiidioma nuestra aplicacin. Si fuera as, bastara con indicar los literales
correctos del archivo de recursos en lugar de tener que definir una pantalla para cada idioma con sus
textos traducidos.
Partes de un proyecto

5.3 Resultado del proyecto


Cuando generamos un proyecto obtenemos una serie de ficheros dentro de la carpeta "bin":
bin/clases: clase Java compilada
bin/clases.dex: Ejecutable creado con las clases Java
bin/miaplicacion.ap_: Recursos del programa empaquetados en un fichero ZIP
bin/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 una
gran ayuda. Vemoslo haciendo doble clic sobre l:

54/73

Entorno de desarrollo y primera aplicacin

Este fichero, como todo fichero XML almacena informacin estructurada. Esta informacin tiene varios
mbitos 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

55/73

Entorno de desarrollo y primera aplicacin

Podemos ver el contenido generado por las solapas. Tenemos la informacin de la aplicacin, versin
de android (sdk:10), la pantalla de inicio (activity), nombre de la aplicacin, compuesta tambin de una
cadena 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 del
proyecto. Las siguientes lneas identifican la versin de la aplicacin. En concreto, "VersionName" ser
el nmero que los usuarios vern en las aplicaciones de los dispositivos. Este valor puede ser una
cadena de caracteres.
El otro valor que identifica la versin "VersionCode", debe ser numrico y debe llevar la lgica de que
las 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 del
programa 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 era
precisamente eso, una cadena de caracteres. Si le pulsamos en explorar podemos ver:

56/73

Entorno de desarrollo y primera aplicacin

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

Todo va encajando y vemos que tenemos centralizados los recursos en esa carpeta y que podemos
utilizarlos para incluirlos en distintas partes del nuestro proyecto.
Anotacin
No hemos hablado todava de ese men que nos ha creado el ejemplo. Esto lo dejaremos
para ms adelante. Ahora nos centraremos en los aspectos generales de una aplicacin
sencilla.
La seccin "<application>" representa el ncleo de este importante fichero. Por defecto, un proyecto

57/73

Entorno de desarrollo y primera aplicacin

La seccin "<application>" representa el ncleo de este importante fichero. Por defecto, un proyecto
lleva una actividad o una pantalla de aplicacin que es la que aparece como principal. En la definicin
de la aplicacin podemos ver las variables que indican su nombre y el icono, ambos de la seccin de
recursos (android:icon y android:label)

Despus de la definicin de la aplicacin est la de la actividad, es decir de la pantalla de interfaz de


usuario 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 la
correcta instalacin y ejecucin de nuestros programas.

6. La programacin orientada a objetos


En el captulo siguiente nos meteremos a fondo con el lenguaje de programacin de Android que es
Java. 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 otros
componentes que forman parte del mundo de la programacin orientada a objetos. Vamos a verla
ahora de forma general y en el captulo siguiente la veremos de forma mucho ms precisa orientada a
Java.

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. Esta
anterior programacin se basaba en funciones, procedimientos y el cdigo que controlaba el flujo de las
llamadas a estos. Esta forma de trabajar es la utilizada por lenguajes antiguos, como Visual Basic.

De la programacin estructurada al enfoque orientado a objetos


En la programacin estructurada, con los procedimientos y funciones, el crecimiento de una aplicacin

58/73

Entorno de desarrollo y primera aplicacin

En la programacin estructurada, con los procedimientos y funciones, el crecimiento de una aplicacin


hace que el mantenimiento de esta aplicacin sea una laboriosa tarea. Fundamentalmente debido a la
gran cantidad de procedimientos y funciones que estn interrelacionadas entre s con multitudes de
llamadas. Si necesitamos hacer una pequea modificacin nos puede suponer realizar un repaso
completo para comprobar a qu funciones puede afectar este cambio. El cdigo se encuentra disperso a
lo 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 un
conjunto de procedimientos e informacin que ejecutan una serie de procesos destinados a resolver un
grupo de tareas. Una aplicacin orientada a objetos tendr tantas estructuras de cdigo como aspectos
del programa tengamos que resolver.
Un procedimiento situado dentro de una estructura no podr llamar sin ser llamado por otro de una
estructura distinta sino es bajo una serie de reglas. Lo mismo pasa con los datos, estarn separados del
exterior excepto los que designemos. Este concepto de estructura es lo que llamaremos "Objeto"
Estos objetos tienen una informacin precisa y un comportamiento detallado realizado por
procedimientos que hacen que puedan clasificarse segn el tipo de tarea que realizan.

6.2 Elementos bsicos de la POO


Las clases
Una clase no es ni ms ni menos que cdigo. Aunque dicho de esta forma, cualquier programa sera una
clase. Cuando definimos una clase, realmente estamos definiendo dos cosas diferentes: los datos que
dicha 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 y
por otro la forma de acceder o modificar esos datos. En el primer caso, los datos del Cliente sern por
ejemplo 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 de
mtodos. 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 definen
cmo se va a crear un objeto, es decir, las instrucciones para crear ese objeto. Una clase es la
representacin abstracta de algo y el objeto es la representacin concreta de lo que una clase define.

59/73

Entorno de desarrollo y primera aplicacin

Los Objetos
Por un lado tenemos una clase que es la que define un "algo" con lo que podemos trabajar. Pero para
que 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 un
objeto 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. Por
ejemplo, podemos tener varios objetos del tipo Cliente, uno por cada cliente que tengamos en nuestra
cartera de clientes, pero la clase slo ser una. Dicho de otra forma: podemos tener varias instancias en
memoria de una clase. Una instancia es un objeto (los datos) creado a partir de una clase (la plantilla o el
cdigo).
En nuestros formularios o actividades: tenemos 10 botones por ejemplo y todos han sido creados a
partir de la clase "Botn". La clase es la teora y el objeto la prctica. El manual de instrucciones para
crear 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 clase


Las clases contienen datos, esos datos suelen estar contenidos en variables. A esas variables cuando
pertenecen 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 lo
almacenaremos 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, usaremos
un 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 realizar
con 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, por
ejemplo, mostrarlos, es algo que no debe preocuparnos mucho, simplemente sabemos que podemos
almacenar 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 como
instanciacin. 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 Objetos


Todos los lenguajes basados en objetos deben cumplir estos tres requisitos:
Herencia
Encapsulacin
Polimorfismo

60/73

Entorno de desarrollo y primera aplicacin

Polimorfismo
Anotacin
En algunos sitios veremos un cuarto requisito: la abstraccin, pero este ltimo est
estrechamente ligado con la encapsulacin, ya que, de hecho, es prcticamente lo mismo,
aunque ahora lo veremos...

Herencia
Esta es la caracterstica ms importante de la POO.
La herencia permite crear nuevas clases a partir de clases existentes. La herencia puede simplificar el
diseo de la aplicacin proporcionando una estructura de relaciones entre las distintas clases. Tambin
admite la reutilizacin de cdigo porque slo se debe codificar el comportamiento de clases nuevas o
distintas.
Una relacin de herencia es una relacin en la que un tipo (el tipo derivado) se deriva de otro (el tipo
base), de tal forma que el espacio de declaracin del tipo derivado contiene implcitamente todos los
miembros 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 de
una clase existente.
Y otra vez: La herencia es la cualidad de crear clases que estn basadas en otras clases. La nueva clase
heredar todas las propiedades y mtodos de la clase de la que est derivada, adems de poder modificar
el 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 objeto
coche a partir de este y que va a "heredar" todas sus caractersticas y adems podr personalizarlo a mi
gusto. Resumiendo: gracias a la herencia podemos ampliar cualquier clase existente, adems de
aprovecharnos de todo lo que esa clase haga... De momento la clase es ese "coche" que os he
comentado, enseguida veremos la definicin de clase.
Para que lo entiendas mejor, veamos otro ejemplo clsico: Supongamos que tenemos una clase Gato que
est derivada de la clase Animal. El Gato hereda de Animal todas las caractersticas comunes a los
animales, adems de aadirle algunas caractersticas particulares a su condicin felina. Podemos decir
que 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 es
herencia: usar una clase base (Animal) y poder ampliarla sin perder nada de lo heredado, pudiendo
ampliar 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 de
una clase llamada clase base, padre o superclase (para decir jerrquicamente que es ms importante que
la otra) podemos crear una nueva clase llamada derivada, hija o subclase. As de una clase podemos
derivar 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 los
menores lgicamente tendr que indicar quin es su padre jerrquicamente. Por ejemplo:

61/73

Entorno de desarrollo y primera aplicacin

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, mtodos
y eventos, por ejemplo:
Propiedades: color del coche, modelo, tapicera, potencia... es decir, sus caractersticas
Mtodos: Acelerar, frenar, ...
Eventos: est claro que est esperando muchos eventos, que se acelere, frene, cambie de
marcha, encender la radio, una puerta... al dispararse un evento ejecutar una serie de acciones
o un mtodo.
Teniendo definida una clase podemos crear un "cochedeportivo" a partir de ella. Va a heredar todas sus
caractersticas pero puedo modificar algunas cosas y aadirles otras por ejemplo un turbo o ABS.

Encapsulacin
La 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 que
hace posible esa implementacin. Esto realmente sera una especie de abstraccin, ya que no nos
importa cmo est codificado el funcionamiento de una clase, lo nico que nos debe interesar es cmo
funciona...
Digamos que una clase es un elemento de Android (como un texto o un botn) que tiene unas
propiedades (color, fuente), mtodos y eventos (clic). Cuando decimos la implementacin de la interfaz
de una clase, nos referimos a los miembros de esa clase: mtodos, propiedades, eventos, etc. Es decir, lo
que la clase es capaz de hacer.
Cuando usamos las clases, stas tienen una serie de caractersticas (los datos que manipula) as como una
serie de comportamientos (las acciones a realizar con esos datos). La encapsulacin es esa capacidad de
la clase de ocultarnos sus interioridades para que slo veamos lo que tenemos que ver, sin tener que
preocuparnos de cmo est codificada para que haga lo que hace... simplemente nos debe importar que
lo hace.
Si tomamos el ejemplo de la clase Gato, sabemos que araa, come, se mueve, etc., pero el cmo lo hace
no 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 nos
muestra que hace ese objeto con el cdigo interno que lo realiza. As para nosotros un objeto por muy
complejo que sea slo veremos sus propiedades, mtodos y eventos desde el propio IDE. Aplica esto a
la clase botn, se que tiene esas propiedades, mtodos y eventos pero no veo nada del cdigo que
realiza esas acciones, es decir, est encapsulado. Dicho finalmente de forma tcnica: Establece la
separacin entre la interfaz del objeto y su implementacin.
Esto aporta dos ventajas:

62/73

Entorno de desarrollo y primera aplicacin

Esto aporta dos ventajas:


Seguridad. Se evitan los accesos no deseados, es decir, si est bien encapsulada no podremos
modificar 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 limitar
a utilizarlo.
Siguiendo con el ejemplo del coche, cuando lo ponemos en marcha simplemente giramos la
llave sin saber que hace dentro del cap. Lo mismo aplicado al cdigo, tenemos una clase que
dibuja un grfico, ste tiene un mtodo que realiza el dibujo, en nuestro programa llamaremos
a ste mtodo y ya est no sabemos como se las arregla para dibujar lneas, escribir, textos,
rellenar superficies, ...

Polimorfismo
El polimorfismo se refiere a la posibilidad de definir mltiples clases con funcionalidad diferente, pero
con mtodos o propiedades denominados de forma idntica, que pueden utilizarse de manera
intercambiable mediante cdigo cliente en tiempo de ejecucin.
Significa que puede tener mltiples clases que se pueden utilizar de forma intercambiable, si bien cada
clase implementa las mismas propiedades o los mismos mtodos de maneras diferentes. El polimorfismo
es importante en la programacin orientada a objetos puesto que permite usar elementos que tienen el
mismo nombre, independientemente del tipo de objeto que se est utilizando en ese momento. Por
ejemplo, dada una clase base "Coche", el polimorfismo permite al programador definir diferentes
mtodos "Iniciar_motor" para cualquier nmero de clases derivadas. El mtodo "Iniciar_motor" de una
clase derivada denominada "Coche_Diesel" puede ser totalmente diferente del mtodo con el mismo
nombre en la clase base. Otros procedimientos o mtodos pueden usar el mtodo "Iniciar_motor" de las
clases derivadas de la misma forma, con independencia del tipo de objeto "coche" que se est utilizando
en ese momento.
El Polimorfismo nos permite usar miembros de distintas clases de forma genrica sin tener que
preocuparnos si pertenece a una clase o a otra. Siguiendo con el ejemplo de los animales, si el Gato y el
Perro pueden morder podramos tener un "animal" que muerda sin importarnos que sea el Gato o el
Perro, 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 diferentes
acciones segn el objeto sobre el que se ha aplicado. Aplicado a la programacin simplemente significa
que en dos objetos: ventana y archivo al utilizar un mismo mtodo se aplicar un resultado diferente. Es
decir si aplicamos el mtodo "Abrir" obviamente es el mismo nombre pero realiza cosas diferentes
dependiendo del objeto que lo llame: en un caso se abrir una ventana y en el otro un fichero.

6.4 Jerarqua de clases


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

63/73

Entorno de desarrollo y primera aplicacin

En este caso se trata de una vista o una pantalla de Android con todos los componentes que le podemos
incorporar. Como ves, el concepto es sencillo. La nomenclatura como hemos visto en otras ocasiones
sera 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 el
cdigo hacemos referencia a "turismo", como slo existe un objeto con ese nombre en nuestra jerarqua
de objetos no hay problema en trabajar con l sin escribir el nombre completo. En cambio si el nombre
existe en varios sitios tendramos que poner el nombre completo para romper esa ambigedad.

Relaciones entre objetos


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

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

Pertenencia

64/73

Entorno de desarrollo y primera aplicacin

un objeto "motor" o un objeto "direccin". En este caso hay una relacin de pertenencia puesto que
existe 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 "una
bicicleta tiene un motor" sera falso.

Utilizacin
En 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 es
necesario que el objeto "Grafico" sea propiedad del objeto "Ventana". La notacin en el cdigo es "usa
un": el objeto Grafico usa una ventana sera cierto.

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

7. Actualizar versin
Las versiones tanto de Eclipse como del mdulo ADT (Android Developer Toolkit) van
evolucionando constantemente, as que es normal que nos encontremos con varios cambios que
veremos ahora.

7.1 Aviso de nueva versin


Al iniciar el entorno podemos encontrarnos con que no podemos trabajar porque hay una nueva
versin del Android SDK:

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

65/73

Entorno de desarrollo y primera aplicacin

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 que
nos muestra las posibles actualizaciones. Al cabo de unos segundos nos mostrar si hay nuevos
componentes:

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

66/73

Entorno de desarrollo y primera aplicacin

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:

67/73

Entorno de desarrollo y primera aplicacin

Anotacin
Si recibes un mensaje de error en la instalacin:

Haremos lo siguiente. En la pgina de descargas volveremos a aadir la ubicacin del


depsito de informacin de actualizaciones:

Pulsamos en "Add" y escribimos el sitio que aparece en pantalla. Aceptamos y la


actualizacin la har de forma correcta.
Durante la instalacin nos dar un aviso de que est instalando contenido no firmado. Aceptamos para
que haga la instalacin:

68/73

Entorno de desarrollo y primera aplicacin

Una vez terminado ya podemos ejecutarlo con normalidad. Vamos a comprobar las versiones. Nos
vamos 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 proyectos


En ocasiones, al importar proyectos de otros sitios pueden que no nos funcionen correctamente. Bien

69/73

Entorno de desarrollo y primera aplicacin

En ocasiones, al importar proyectos de otros sitios pueden que no nos funcionen correctamente. Bien
porque estn en una versin distinta a la nuestra o porque simplemente tiene nombres de carpetas
distintas, puede ser que al importarlo nos encontremos con problemas de ejecucin. Esto podra darse
en 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 versin
de los SDK's instaladas o definidas en el proyecto. Para resolver esto, basta con indicar en el proyecto
esta 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 a
nuestra 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 SDK
que no tenemos instalado. Supongamos el caso de que tenemos el SDK 17 instalado en nuestro equipo
y que me descargo una aplicacin hecha con el SDK 18. Eclipse dar un mensaje indicando que no
encuentra ese SDK:

70/73

Entorno de desarrollo y primera aplicacin

Si no queremos descargarnos ese SDK, podemos modificar el proyecto. Iremos a las propiedades del
proyecto 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 podremos
ejecutarlo.
Lgicamente se recomienda que cada proyecto se ejecute con su propio SDK, para as disponer de todas

71/73

Entorno de desarrollo y primera aplicacin

Lgicamente se recomienda que cada proyecto se ejecute con su propio SDK, para as disponer de todas
las funciones que incorpora el SDK correspondiente. Por ejemplo, si lo que estamos descargando es del
SDK 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.

72/73

Entorno de desarrollo y primera aplicacin

Ejercicios
Ejercicio 1. Instalar el entorno de trabajo
20

Esta unidad no tiene ejercicios. Instala todo el entorno de trabajo:


Eclipse
SDK de Android
Definir un emulador
Realiza la aplicacin de ejemplo y mustrala en el emulador.

73/73