2.1.-
Programación en Android: Algunos conceptos (II)
Continuamos en este capítulo
ampliando y aclarando algunos conceptos de los que hablamos en el
anterior, aunque posiblemente los comprendamos mejor cuando
comenzemos a escribir el código.
Antes hablamos de la herencia,
de que unas clases heredan de otras, etc., el significado de este
concepto es simple: Puedes crear una clase partiendo de otra que ya
exista, osea no tienes porque reinventar la rueda, puedes coger una
"rueda" ya hecha y "tunearla". Más
adelante se hablará como crear la clase y heredarla con más
detalle.
La clase que hereda de otra,
tiene todas las variables y los métodos de la "superclase"
o clase "padre", y además le podrás añadir
más métodos o variables. Veamoslo con una imagen:
También podeis bajar un
proyecto con un ejemplo y descripciones aqui.
Como
crear objetos en Java
Los objetos se crean
ejemplarizando las clases. En el ejemplo anterior creamos una clase
OperacionAritmetica, ahora debemos hacer un objeto que tenga
sus funcionalidades.
A menudo se ven las creaciones
de los objetos con sentencias del tipo:
OperacionAritmetica
operacion1 = new
OperacionAritmetica();
|
Esta
sentencia creará un objeto del tipo OperacionAritmetica.
Aunque para ser más precisos, en esta sentencia se hacen tres
cosas: una declaración, ejemplarización e
inicialización.
Con
"OperacionAritmetica
operacion1" estamos
declarando una variable, "operacion1".
Le estamos indicando al compilador que el nombre "operacion1"
se va a utilizar para referirse a un objeto del tipo
"OperacionAritmetica".
Posteriormente
con el operador "new"
le estamos indicando que cree un nuevo objeto "OperacionAritmetica",
osea, lo estamos ejemplarizando. Al usar el operador "new"
se asigna memoria para este nuevo objeto. El operador "new"
necesita un argumento, y este es la llamada al método
constructor del objeto. "New"
crea el objeto y el constructor lo inicializa. El operador "new"
nos devuelve una referencia al objeto recien creado, la cual le
estamos asignando a "operacion1".
Y
finalmente con "OperacionAritmetica()"
estamos inicializando el objeto llamando a su constructor. Puede
haber más de un constructor, cada uno de ellos realizaría
diferentes inicializaciones. Los constructores tienen el mismo
nombre de la clase y no tienen un tipo de retorno. Si el constructor
no tiene ningún argumento, como en nuestro caso, entonces se
le conoce como constructor por defecto.
No
es necesario inicializar el objeto en el momento de su declaración,
podemos hacerlo posteriormente.
Acceder
a métodos o variables de un objeto.
Cuando
deseemos acceder a las variables de un objeto, debemos añadir
el nombre de la variable al objeto, separándolos por un punto.
Para
acceder a los métodos realizaríamos el mismo sistema
que con las variables, pero además le pasaríamos los
argumentos dentro de los paréntesis (int x), y en caso de no
tener argumentos pondríamos los paréntesis vacíos
(), por ejemplo:
int
resultado = operacion1.suma(55, 5);
|
En
este ejemplo estaríamos declarando una variable de tipo int
(resultado), y le asignariamos (=) el valor que nos retorna la
llamada al método
suma (operacion1.suma(55,5)). Al método suma le estamos
enviando dos argumentos separados por comas: (55 , 5).
Las
llamadas a métodos también se conocen como mensajes.
Eliminar
objetos en Java
Si
alguna vez has programado en C,
o en otros lenguajes, sabes que hay que tener un control sobre los
objetos que hemos creado para destruirlos cuando no sean necesarios,
con el fin de evitar pérdidas de memoria.
En
Java nos ahorramos el tener que destruir los objetos que ya no
necesitemos. El entorno de ejecución de Java tiene un
"recolector de basura"
que se encarga de borrar automáticamente los objetos que no se
van a utilizar más. Los objetos son elegibles para
recolectarlos y destruirlos cuando no existen más referencias
a ese objeto, o cuando se borra explícitamente el objeto y su
valor sea null.
Las referencias de variables desaparecen cuando la variable sale de
su ámbito.
El
recolector de basura está en un hilo (thread)
de baja prioridad, y se ejecuta cuando haga falta memoria o si lo
pide expresamente un programa de Java mediante una llamada a
System.gc().
Cuando
el recolector de basura va a "recolectar" el objeto, llama
antes al método finalize()
del propio objeto. Así en esa finalización se puden
liberar los handles a ficheros, referencias a otros objetos, etc.
Declarar
Clases (En Java)
La declaración de una
clase en Java tiene como mínimo dos componentes: la
declaración de la clase, y su cuerpo.
La declaración de la
clase debe tener como mínimo la palabra clave class y el
nombre de la clase que se define. Por ejemplo:
class
NombreClase
{
//...cuerpo
de la clase
}
|
Por convención deben
comenzar por mayúscula y tiene que ser un identificador legal
en Java. En caso de que la clase "herede" de otra clase,
la superclase, entonces se utiliza la palabra clave extends.
En caso de no utilizarlo se entiende que la clase deriva de la clase
Object.
class
NombreClase extends
NombreSuperClase
{
//...cuerpo
de la clase
}
|
Interfaces
Los interfaces son una manera
de acceder a los métodos de una clase, pero sin heredar su
implementación. Un interface es un conjunto de
prototipos de métodos sin información de la
implementación asociada. Si una clase implementa un interface
tiene obligatoriamente que proporcionar implementaciones para todas
las declaraciones de método que posea dicho interface.
Si una clase implementa algún
interface, entonces por convención dicha cláusula
debe ir despues de la cláusula extends, si
existe.
Modificadores:
Public, Abstract y Final
Estos modificadores se utilizan
para declarar el tipo de acceso a la clase.
Public:
Indica que la clase puede ser utilizada por objetos fuera del paquete
actual. En caso de utilizarlo suele ser el primer elemento de la
declaración.
Abstract: Declara
la clase como abstracta. Las clases abstractas pueden contener
métodos para los que no se ha creado la implementación.
Las clases de este tipo están diseñadas para ser
superclases y no pueden ejemplarizarse.
Final: Al añadir
este modificador, indicamos que la clase no puede tener subclases.
No se puede heredar.
No tiene mucho sentido utilizar
los modificadores abstract y final juntos, ya que si no implementamos
los métodos, ni dejamos que se implementen, en fin...
En definitiva, podría
ser así:
[Modificadores]
class NombreClase
[extends
NombreSuperClase] [implements
NombredeInterface]
{
//...cuerpo
de la clase
}
|
El
cuerpo de una clase en JAVA
En el cuerpo de la clase va la
implementación de la propia clase: sus métodos y sus
variables.
Dentro del cuerpo de la clase
se definen todas las variables miembro y los métodos o
funciones que soporta esa clase en particular.
Normalmente se declaran primero
las variables miembro y posteriormente las declaraciones e
implementaciones de los métodos.
public
class
OperacionAritmetica
{
int
variablemiembro;
public
int
metodo(int
operando1, int
operando2)
{
return
operando1 + operando2;
}
}
|
Ver. 1.0 – Revisión
23.1.2012
No hay comentarios:
Publicar un comentario