En esta entrada vamos a intentar hincarle un poco más el
diente al asunto. ¡Vamos a ello!
ESTRUCTURA DE UN PROGRAMA
Normalmente,
el código de toda aplicación Java se agrupa en clases, que son el esqueleto de nuestra aplicación. Estas clases se
definen en unos ficheros fuente con el mismo nombre de la clase, tal y como
ocurría en el primer ejemplo de Guille:
Aquí
vemos que se ha definido la clase de objetos MainActivity dentro del archivo MainActivity.java. A continuación se
escribe el cuerpo de la clase entre corchete {..}. Es en este bloque de código
donde se escriben las acciones que va a llevar a cabo nuestro programa. Dentro
de cada clase, se llama a los distintos métodos
(seguidos siempre de un modificador entre paréntesis (…)). Cada método ejecutará
alguna acción que debe realizar la aplicación. Normalmente cada método llama a
un paquete de las librerías externas para realizar dicha acción (es decir,
envía un mensaje a otro método o a otra clase de objeto). Tenemos librerías
android, java,… debiendo escribir siempre la ruta del archivo al completo. Si
no queremos escribir toda la ruta cada vez que llamemos a la librería, podemos
definir la ruta al inicio del fichero mediante el comando import. Así, en el ejemplo anterior vemos que en el modificador del
método onCreate no es necesario definir la clase Bundle por su ruta completa,
ya que más arriba se ha llamado a su ruta:
import android.os.Bundle;
Como
resumen, vemos que nuestro programa estará formado por objetos (que pueden ser
ventanas o controladores) creados a partir de las clases. Los objetos se
comunicarán entre sí a través de mensajes, y cada objeto sólo podrá responder a
los mensajes que correspondan a los métodos de su clase. Estos mensajes se
denominan eventos, los cuales
interactúan cuando ocurre algún suceso.
LENGUAJE
JAVA
TIPOS
Si
hacemos memoria, esto que os voy a explicar se parece mucho a la programación
en FORTRAN 95. Se trata de los tipos, es decir, la precisión con la que
definimos nuestras variables. En Java podemos encontrar los siguientes:
Tipo
Java
|
Bytes
|
Rango
de Valores
|
boolean
|
true
y false
|
|
byte
|
1
|
-128
a 127
|
short
|
2
|
-32768
a 32767
|
int
|
4
|
-2147483648
a 2147483647
|
long
|
8
|
-9223372036854775808
a 9223372036854775807
|
char
|
2
|
0
a 65535
|
float
|
4
|
+/-
3.4028235E+38
|
double
|
8
|
+/-1.79769313486231570E+308
|
Un
ejemplo de ello seria:
int dato1= 0;
CLASES
Una
clase es un tipo de objetos definidos por el usuario. La clase String de la
biblioteca JVC (Java Foundation Classes) está definida así:
class
String
{
//Atributos
//Métodos
}
Nosotros
mismos podemos crear objetos de esa misma clase. Podemos hacerlo del siguiente
modo:
String
sTexto = new String(“abc”)
Con
estas líneas, hemos creado el objeto sTexto
de la clase String con la cadena de
caracteres abc. La clase String tiene definido en su archivo
String.class todos los métodos que lo componen. Aquellos métodos que sean de
acceso público (public), podrán ser llamados en nuestro fichero. Por ejemplo,
podemos utilizar el método charAt(int i) de la clase String para conocer el
carácter que se encuentra en la posición i. En nuestro ejemplo, nos devolvería
la letra correspondiente a la posición 1 (letra b):
char
caracter = sTexto.charAt(1);
Otro
aspecto importante en el mundo de las clases es la “herencia”. Podemos crear una clase derivada de otra, es
decir, que herede todos los atributos y métodos de la clase padre. De este
modo, esta clase podrá ser manipulada por los métodos heredados y por los suyos
propios. Por ejemplo:
class
MiForm extends JFrame
{
//Atributos
//Métodos
}
La
clase MiForm se verá afectada por los
métodos propios y por los métodos heredados de la clase JFrame (JFrame es un tipo de contenedor o layout de alto grado). Si
volvéis a la imagen anterior en el ejemplo de Guille, veréis cómo la clase ActivityMain hereda los atributos de la
clase Activity.
DECLARACIÓN
DE CONSTANTES SIMBÓLICAS
Declarar
una constante simbólica significa decirle al compilador Java el nombre de la
constante y su valor. Para hacerlo, se utiliza el calificador final o final static. Si se añade static, sólo existirá una copia de la
constante para todos los objetos que se declaren de esa clase; en caso
contrario, cada objeto incluirá su propia copia de la constante. Ejemplo:
final static int cte1 = 1;
final static String cte2 = “Pulse
una tecla para continuar”;
final double cte3 = 3.1415926;
VARIABLES
Al
declarar una variable, estamos reservando un espacio para almacenar un valor de
un determinado tipo. Podemos declarar más de una variable a la vez, y definir
el valor que representan (si no lo ponemos, el valor por defecto será 0 ó
null). Ejemplos de variables serían:
short día, mes, año=2001;
int contador = 0;
String Nombre = “”, Apellidos = “”;
Estas
variables se pueden declarar dentro del bloque de una clase, de un método o de un
bloque entre corchetes {…}. Las variables sólo podrán ser usadas mientras el
método se esté ejecutando. Para que dicha variable pueda o no ser accesible
fuera del ámbito de la clase en la que ha sido definida, utilizamos los
calificadores public o private. Por ejemplo:
public
class ElementosJava
{
public static int v = 16;
private double p;
String m;
public void Test ()
{
int contador = 0;
//…
}
//…
}
Si
ahora quisiéramos acceder a la variable “v” desde fuera de la clase
ElementosJava, habrá que hacer referencia a la clase, ya que se ha utilizado el
atributo static:
ElementosJava.v
Dentro
de los métodos (como en el caso de Test()), no se pueden utilizar calificadores
del tipo private, public o static, ya que la accesibilidad de las variables en
este caso se limita únicamente al método, siendo de uso local.
EJEMPLO
PARA ASENTAR LO APRENDIDO
Vamos
a aplicar todo lo anterior en un sencillo ejemplo. Está programado para el IDE
NetBeans que es específico para Java, pero si lo necesitáis, ya lo
traspasaremos a AS. Se trata de una aplicación capaz de calcular el área de un
círculo. Para ello tendremos la clase principal (MainActivity) y la clase
Circulo, al cual llamaremos para que nos calcule el área dado un radio
concreto:
MainActivity.java
package
hagamosunaapp.blogspot.com.calculoarea;
import
android.os.Bundle;
import
android.app.Activity;
import
android.view.Menu;
public
class MainActivity extends Activity {
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu
menu) {
// Inflate the menu; this adds items to
the action bar if it is present.
getMenuInflater().inflate(R.menu.main,
menu);
return true;
}
public static void main(String[] args)
{
double r = 10.0;
Circulo unCirculo = new Circulo(r);
double area = unCirculo.areaCirculo();
System.out.println("Área = "
+ area);
}
}
El
método main declara la variable “r” con precisión doublé y valor 10.0. Crea un
objeto identificado como unCirculo con los mismos atributos que la clase
Circulo, y de radio r. También declara la variable “área”, que llama al método
areaCirculo del objeto unCirculo (dicho método se define en Circulo.java), y
por último mostramos el valor en pantalla llamando al método println de la
clase out de la biblioteca System.
Circulo.java
package
hagamosunaapp.blogspot.com.calculoarea;
/**
* Created by imac on 19/08/13.
*/
public
class Circulo
{
private final static double PI = 3.1415926;
private double radio;
public Circulo(double r)
{
radio = r;
}
public double areaCirculo()
{
double area = PI * radio * radio;
return area;
}
}
Definimos
la variable PI, que sólo podrá ser utilizada por la clase Circulo, y también la
variable radio. Creamos un método también denominado Circulo que le da el valor
r a la variable radio, y el método areaCirculo que calcula el área final,
devolviendo el valor que le pide la clase MainActivity.
Y hasta aquí el tutorial de hoy. Todo aquello que no comprendáis podéis comentarlo, e intentaré explicarlo mejor (o aprenderlo bien, vaya!).
Un saludo amigos!
.png)
.png)
.png)
.png)
.png)
.png)
.png)