Sunteți pe pagina 1din 36

z

Clases

Objetos

Clases estáticas

Clases abstractas
z
Objeto

Objeto: entidad existente en la memoria del ordenador que tiene unas


propiedades (atributos o datos sobre sí mismo almacenados por el
objeto) y unas operaciones disponibles específicas (métodos).

Un objeto es un elemento de programa que se caracteriza por:

 Atributos: son datos contenidos en el objeto, y que determinan su


estado.

 Operaciones o métodos: son acciones con las que podemos


solicitar información del objeto, o modificarla.

 Están compuestas por secuencias de instrucciones que operan


con los atributos.
z
z
z
Objetos Java comúnmente utilizados:
Las bibliotecas Java proporcionan una serie de objetos útiles para su uso con estructuras
de datos comunes. Todos los objetos se derivan de la clase Object. Hay contrapartes de
clase para todos los tipos de datos primitivos. Por ejemplo, la clase Integer encapsula un
valor int y proporciona una serie de métodos útiles para manipular valores de datos
enteros. Por ejemplo, el siguiente código Java instancia una variable entera llamada iVal,
crea un objeto Integer usando un constructor que toma un entero y luego usa un método
handle disponible en la clase Integer para extraer una variable float equivalente.

int iVal = 1;
Integer integ1= new Integer(iVal);
float f = integ1.floatValue();
Tal vez el objeto más común que va a utilizar en las aplicaciones de Android es el String. La
clase String se utiliza para encapsular caracteres de texto legibles por humanos, que a menudo
se muestran en la pantalla. Si está modificando o construyendo cadenas de partes más
pequeñas, también deseará consultar las clases StringBuffer y StringBuilder.
z
DIFERENCIA ENTRE CLASE Y OBJETO.
 Consideraciones a tener en cuenta
z
Para complementar, una clase estática no es sólo hacer que todos los miembros
públicos de la clase sean estáticos, existen una serie de consideraciones que
enunciaremos a continuación:

 Declarar la clase cómo final

Lo primero a tener en cuenta es que en su declaración una clase debe ser final:

El acceso a los miembros estáticos se hace directamente sobre la definición de la clase, por lo
tanto la herencia es un concepto del cual debemos desistir. Por esta razón en su declaración las
clases estáticas son finales, para impedir que sea heredada por otra.
z
CLASES ESTÁTICAS

 Se considera clase estática aquella clase la cual todos sus miembros


públicos son estáticos, qué quiere decir esto, que todos sus atributos y/o
métodos públicos son estáticos.

 Con esto no quiere decir que no pueda haber un poco de ambos,


perfectamente puedes tener en tu implementación métodos o atributos
públicos no estáticos, o mejor aún, métodos o atributos privados, pero el
detalle está en el uso que le darás a los mismos,
z
 Constructor privado

Las clases estáticas cuentan con constructores privados ya que al ser sus miembros estáticos
no se necesita tener instancia de la misma. Por eso les decía que todos sus miembros deben
ser estáticos y declarar miembros no estáticos es posible según sea su uso.
z
Ejemplo final
 Si reunimos todo lo que dijimos antes, el resultado final para una clase estática sería
el siguiente:
z
CLASES ABSTRACTAS:
 Una clase abstracta es una clase, por definirla de alguna manera, de la cual nunca
crearemos un objeto. ¿Entonces? Es muy habitual su uso en Android, de hecho,
posiblemente las hayas usado y ni siquiera lo sepas, ya que se utilizan sobre todo
para los listeners. Veamos un ejemplo:

Si observamos lo que pasa aquí, cuando le asignamos el OnClickListener al button, lo que estamos
haciendo no es instanciar un objeto de alguna clase que ya tenemos declarada, sino que estamos
dentro de la misma asignación declarando una clase abstracta que implementa el OnClickListener.
Esta clase sólo existirá en tanto en cuanto exista el botón y no se podrán crear objetos de este tipo,
puesto que, además que su visibilidad está limitada, ni siquiera tiene nombre, de ahí el termino
abstracta.
z
 Una clase abstracta es aquella que no implementa alguno de sus métodos. Veamos
un ejemplo:

Observa como el método perimetro() de esta clase no se implementa por lo que hay
que utilizar la palabra reservada abstract. Este método se dice que es
abstracto. Toda clase que contenga algún método abstracto también es abstracta, e
igualmente, hay que etiquetarla con la palabra reservada abstract.
No se puede instanciar un objeto de una clase abstracta, dado que no se ha
definido todo su comportamiento.
z
 Una clase abstracta solo se utiliza para definir subclases. Veamos un ejemplo:

Se puede crear una referencia a una clase abstracta:


z  Una interfaz puede incluir también definiciones de constantes a parte
de métodos abstractos.
Una misma clase puede implementar más de una interfaz  Herencia
múltiple de interfaces
Se pueden crear jerarquías de interfaces (con extends!!).
Se pueden declarar referencias a objetos que implementen una cierta
interfaz.

double totalArea(Figura v[]) {


double t=0;
for (int i=0; i<v.length; i++)
t += v[i].area(); // enlace dinámico
return t;
z
z
Pero no se puede crear un objeto de una clase abstracta:

Podemos asignar cualquier objeto descendiente a una referencia de una clase


abstracta, siempre que el descendiente no sea abstracto:
z
HERENCIA
 Podemos crear nuevas clases partiendo de una clase o de una jerarquía
de clases preexistente (ya comprobadas y verificadas) evitando con ello el
rediseño, la modificación y verificación de la parte ya implementada.

 La herencia es uno de los mecanismos de los lenguajes de programación


orientada a objetos basados en clases

 Es la relación entre una clase general y otra clase más específica

 Reuso de código.

 El compilador es el que hace la mayor parte del trabajo.

 la herencia suele ser un requisito fundamental para poder emplear


el Polimorfismo
z
POLIMORFISMO
 Una misma llamada ejecuta distintas sentencias dependiendo de la clase a la que
pertenezca el objeto al que se aplica el método.
 Supongamos que declaramos: Persona p;
 Podría suceder que durante la ej. del programa, p referencie a un profesor o a un
alumno en distintos momentos, y
 Entonces:
 Si p referencia a un alumno, con p.toString(), se ejecuta el toString de la clase
Alumno.
 Si p referencia a un profesor, con p.toString(), se ejecuta el toString de la clase
Profesor.
 Enlace dinámico: Se decide en tiempo de ejecución qué método se ejecuta.
 OJO!: Sobrecarga de fs => enlace estático (t. de compilación).
z
INTERFACES
 Podría suceder que los objetos de varias clases compartan la
capacidad de ejecutar un cierto conjunto de operaciones.
 Y dependiendo de la clase de objeto, cada operación se realice
de diferente manera.
 Ejemplo:
 Clases: Circulo, Elipse, Triangulo, ....
 Todas esas clases incluyen los métodos: área, perimetro,
cambiarEscala, etc.
 Podríamos definir una interfaz común que agrupe todos los
métodos comunes (como métodos abstractos).
 Y luego definir varias clases de modo que implementen una
misma interfaz.
public interface Figura {
abstract double area();
z
abstract double perimetro();
}
public class Circulo implements Figura {
private double radio;
private static double PI=3.1416;
..............
public double area() { return PI*radio*radio; }
public double perimetro() { return 2*PI*radio; }
}
public class Cuadrado implements Figura {
private double lado;
..............
public double area() { return lado*lado; }
public double perimetro() { return 4*lado; }
}
z

COMPONENTES DE
UNA APLICACIÓN
MÓVIL
z
Activity
Son cada pantalla que compone tu aplicación

 Cada una de estas pantallas se va definir a partir de un archivo XML

 Componente principal de la interfaz gráfica

 Su contenido se indica mediante vistas

 Es una clase donde se muestran las vistas

 Cada activity es independiente de las demás.

 Cuando se llaman entre sí, las actividades se introducen en una pila LIFO.
z
View

 Son los componentes básicos con los que


se construye la interfaz gráfica de
aplicación.

 Similar a AWT o Swing en Java.

 Todas heredad de Android.view.View

 Son el anexo entre las Activity y el usuario,


ya que reciben los eventos.
z
Service

o Componentes sin interfaz gráfica

o Se ejecutan en segundo plano

o Similares a los servicios de un sistema operativo

o Realizan diversas acciones

o Heredan de la clase Service


z
Content Provider

 Comparte datos entre aplicaciones.

 Al compartir datos no se muestran detalles


sobre su estructura o forma de
almacenamiento.

 Heredan de la clase ContentProvider.


z
Broadcast Intent receiver

 Reacciona frente a mensajes emitidos por el


sistema.

 Cada aplicación puede tener o emitir varios


Broadcast Intent Receiver.

 No tienen interfaz gráfica asociada.

 No es necesario que la aplicación esté


ejecutándose.
z
Intent

 Principal elemento de comunicación entre los distintos componentes.

 Las aplicaciones respondes a intents

 Los intente son objetos de la clase Intent, con los datos a transmitir
z
Ciclo de Vida de una aplicación
Esta controlado por S.O.. Depende de la situación en
que está la aplicación .Hay diversos estados de las
Activity.

ESTADOS

 Activa (Running): El usuario la ve y puede interactuar


con ella.

 Pausada( Paused): Ha pasado a segundo plano pero


aun está visible porque otra actividad se coloca sobre
ella aunque, no la tapa del todo.

 Parada( Stopped): La actividad está completamente


tapada por la nueva actividad.

 Destruida( Destroyed):Se han liberado todos sus


recursos y necesitaría comenzar un nuevo ciclo de
vida.
z
Métodos para gestionar el Ciclo de Vida
de una aplicación

En Android no existe un método


main como tal, pero sí existen
varios métodos de nuestra
actividad que serán llamados por
el SSOO cuando ocurran eventos
importantes.
z
Los eventos del ciclo de vida
1) onCreate(Bundle)
 Representa el momento en el que la actividad se crea. Este método normalmente lo generará
el asistente al crear una nueva actividad en Android, y es donde crearemos todo lo que vaya a
necesitar la actividad. Si antes hemos salvado los datos de la actividad en un objeto Bundle,
podremos utilizarlo para regenerarla. Normalmente no lo usaremos.

2) onStart()
 La actividad va a pasar a estar en pantalla, aunque no necesariamente visible. Si venimos de
una parada, pasaremos antes por onRestart().

3) onRestart()
 Anterior a onStart() cuando procedemos de una llamada a onStop().

4) onResume()
 La actividad va a empezar a responder a la interacción del usuario.
z
6) onPause()
 La actividad va a dejar de responder a la
interacción del usuario.

7) onStop()
 La actividad ha pasado completamente
a segundo plano.

8) onDestroy()
 La actividad va a ser destruida y sus
recursos liberados.

S-ar putea să vă placă și