Está en la página 1de 31

Objetivos de Aprendizaje

Explicar los conceptos de clases y objetos Establecer la estructura y miembros de una clase Java Definir variables y mtodos en Java Explicar los especificadores de acceso

Aprender a declarar mtodos miembros


Explicar la necesidad de y uso de constructores para una clase

Objetivos de Aprendizaje
Explicar cmo los mtodos en una clase Java pueden ser sobrecargados Indicar cmo Java maneja los argumentos de lnea de comandos Explicar el ciclo de vida de un objeto Describir el manejo de memoria en Java

Qu es una Clase?
Una clase es una entidad autocontenida que tiene las definiciones de los atributos y el comportamiento que son comunes a todos los objetos de software de un tipo en particular

Los atributos se convierten en las variables y el comportamiento se refleja con los mtodos en una clase Java A partir de una clase se pueden crear instancias llamadas objetos

Qu es una Clase?
Caracteristicas (variables)
N# de Ruedas Tipo de Ruedas Color Velocidad

Bicicleta

acelerar

desacelerar

frenar

Cambiar Velocidad

Responsabilidades (mtodos)

Estructura de una Clase


Definicion de la Clase package transporte;//Opcional import java.lang.String;//Opcional class Bicicleta{ int nRuedas; int tipoRuedas; String color; float velocidad; public public a){} public void frenar(){} public void cambiarVelocidad(int v){}

Conjunto de Caracteristicas (variables miembro)

void acelerar(float a){} void desacelerar(float

}
Responsabilidades (mtodos)

Miembros de una Clase


Los miembros de una clase (variables y mtodos) pueden ser de dos tipos:
Miembros de Instancia

Miembros de Clase

Cada objeto perteneciente a una clase tiene su propia copia de los Miembros de Instancia de la clase a la que pertenecen Todos los objetos pertenecientes a una clase comparten los Miembros de Clase de la clase a la que pertenecen

Miembros de una Clase


class Persona{ int ci; static int numPersonas = 0;
La palabra reservada static permite declarar Variables de Clase

Los miembros que no public Persona(int numCi){ poseen la clusula ci = numCi; static, son numPersonas++; considerados Miembros } de Instancia public int getCi(){return ci;} public static int getNumPersonas(){ return numPersonas; }

}
Los Mtodos de Clase slo pueden acceder a Miembros de Clase

Componentes de una Clase


Componentes
public abstract final class nombreClase extends superClase implements interface { }

Propsito
La clase es pblicamente accesible La clase no puede ser instanciada La clase no puede ser derivada Especifica el nombre de la clase Especifica el nombre de la superclase Especifica las interfaces implementadas dentro de la clase Implementacin de la clase

Qu es un Objeto?
Un objeto es una instancia de una clase

Ciclo de Vida de un Objeto


Usualmente en un programa Java, muchos objetos son creados a partir de diferentes clases y estos objetos interactan entre s enviando mensajes Despus de que el objeto completa el trabajo para el cual fue creado, es recolectado como basura y sus recursos liberados
Creacin de Objetos Uso de Objetos Destruccin de Objetos

Creacin de Objetos
La creacin de un objeto es bsicamente la creacin de una instancia de una clase, tambin conocido como instanciacin de una clase
Los objetos de una clase son creados a travs del operador new

La declaracin puede estar separada de la Persona p2 = new Persona(7897009); creacin

Persona p1; p1 = new Persona(13077876);

La inicializacin del objeto se realiza por la llamada al constructor de la clase

Miembros de un Objeto
Generalmente, para refererirse a los miembros de un objeto, se puede agregar el nombre de la variable o referencia del objeto con un punto (.) entre ellos.
class A{ public int m1; private int m2; public void setM2(int val){ m2 = val; } public static void main(String args[]){ A obj = new A(); obj.m1 = 32; // acceso a una variable m. obj.setM2(42);// acceso a una funcin m. } }

Mtodos Getter y Setter


Se utilizan para acceder a propiedades de un objeto.
class A{ private int m2; public void setM2(int val){ m2 = val; } public int getM2(){ return m2; } }

Tipos de Variables en Java


Las variables disponibles en una clase pueden ser de varios tipos:
Variables de instancia

Variables de clase
Variables final Variables transient

Variables volatile
Variables locales

Mtodos en Java
Los mtodos disponibles en una clase pueden ser de varios tipos:
Mtodos de instancia

Mtodos de clase
Mtodos abstractos Mtodos final

Mtodos nativos
Mtodos sincronizados

Modificadores de Acceso
En Java, existen diferentes formas de controlar el acceso a los miembros de una clase. Para ello se utilizan los Modificadores de Acceso, que son:
private

proctected
public Sin modificador(se asume package)

Private
Un miembro especificado como private es accesible slo dentro de la clase donde es definido
Se utiliza para mantener el estado del objeto consistente
class Cuenta{ private float saldo; // Miembro privado public Cuenta() { saldo = 0; } } class Principal { public static void main(String args[]){ Cuenta c = new Cuenta(); c.saldo = 125; //Error, miembro privado

}
}

Protected
Permite que un miembro sea accedido por la clase en el que est definido, sus subclases y las clases en el mismo paquete
class Padre{//Definida en el paquete p protected int m1; // Miembro protegido } class Hijo extends Padre{//Definida en el paquete p public void setM1(int val){ m1 = val; // Correcto, es protegida } } class Otra{ //Definida en otro paquete public static void main(String args[]){ new Hijo().m1 = 20; //Error m1 no es accesible } }

Public
Cualquier clase perteneciente a cualquier paquete tiene acceso a los miembros pblicos de una clase
class Padre{ public int m1; // Miembro pblico } class Hijo extends Padre{ public void setM1(int val){ m1 = val; // Correcto, es pblica } } class Otra{ public static void main(String args[]){ new Hijo().m1 = 20; // Correcto, es pblica } }

Package
Permite que un miembro sea accedido dentro de la clase en la que est definido, y las clases en el mismo paquete
class Padre{//Definida en el paquete p int m1; // Miembro con acceso package } class Hijo extends Padre{//Definida en p public void setM1(int val){ m1 = val; // Correcto } } class Otra{//Definida en otro paquete public static void main(String args[]){ new Hijo().m1 = 20; //Error m1 no es accesible } }

Modificadores de Acceso
Modificador Clase Subclase mismo paquete Clase mismo Paquete Subclase otro paquete Clase otro paquete

private

si

no

no

no

no

protected

si

si

si

si

no

public

si

si

si

si

si

package

si

si

si

no

no

Declaracin de Miembros
Componentes de la Declaracin de variables Nivel de acceso static Propsito del Componente Especifica el nivel de acceso a la variable Indica la declaracin de una variable de clase

final
transient volatile tipo

Indica que la variable es una constante


Indica que la variable no debe ser serializada Indica al compilador que el valor de la variable puede cambiar en cualquier momento Indica el tipo de datos al cual pertenece la variable

Declaracin de Miembros
Componentes de la Declaracin de mtodos Nivel de acceso static abstract final native synchronized tipoRetorno nombreMetodo (lista de parmetros) throws Excepciones Propsito del Componente
Especifica el nivel de acceso al mtodo Indica la declaracin de un mtodo de clase Indica que la implementacin del mtodo no es proporcionada

Indica que el mtodo no puede ser sobreescrito por su subclase

Indica que la implementacin del mtodo est en algn otro lenguaje

Indica que el mtodo requiere un monitor para ejecutarse Indica el tipo de dato de la variable que es retornada por el mtodo y el nombre del mtodo Lista de argumentos para el mtodo Da la lista de excepciones lanzadas por este mtodo.

Constructores de una Clase


Todos los objetos creados en Java tienen al menos un constructor para inicializar un nuevo objeto creado a partir de un tipo particular
class Persona{ Debe tener el int ci; mismo nombre static int numPersonas = 0; de la clase public Persona(){ci=0;} public Persona(int numCi){ ci = numCi; numPersonas++; } public getCi(){return ci;} public static int getNumPersonas(){ Si no return numPersonas; proporcionamos } algn } constructor,
Java lo hace

Podemos tener tantos constructores como queramos

Sobrecarga de Mtodos
Java permite tener dos o ms mtodos con el mismo nombre dentro de la misma clase, siempre que cumplan con alguna de las siguientes premisas: Distinto numero de argumentos
Diferencia en los tipos de datos de los argumentos Orden distinto en el que aparecen los argumentos No basta con que el tipo de retorno sea distinto para diferenciar a dos mtodos sobrecargados

Sobrecarga de Mtodos
1. public 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.} class A{ public int suma(int n1, int n2){ return ( n1 + n2 ); } public int suma(int n1, int n2, int n3){ return ( n1 + n2 + n3 ); } public void suma(int n1, int n2){ System.out.println( n1 + n2 ); }
Mtodo suma original

Mtodo suma sobrecargado perfectamente

Nota: en la lnea 8 se genera un error ya que el mtodo suma solo se diferencia en el tipo de retorno

Este Mtodo suma genera un error

Clases Anidadas
Una clase anidada es una clase cuya definicin est dentro de otra clase Si una clase contiene a una clase anidada, es conocida como clase exterior.

Las clases anidadas tienen acceso total a los miembros de su clase exterior, incluso a los miembros privados.
Estas clases son consideradas miembro de la clase contenedora.

class A{

Clases Anidadas
String mensaje = "miembro de A"; A(){ System.out.println("Clase

Clase exterior externa");

} class B{ B(){ System.out.println("Clase Anidada");


Clase anidada

Acceso a los miembros de la clase exterior

System.out.println(objA.mensaje); } } public static void main(String args[]){ A objA = new A(); B objB = objA.new B(); }

Argumentos de Lnea de Comandos


class LectorArgs{ public static void main(String args[]){ int numArgs = args.length; for(int i = 0;i < numArgs;i++){ System.out.println(Argumento +i+: +args[i]); } } } Desde la lnea de comandos, luego de haber compilado: java LectorArgs hola mundo como estas

args
Forma de pasar argumentos

hola

mundo

como

estas

Manejo de la Memoria en Java


Java da soporte a un manejo de memoria automtico. La memoria asignada a un objeto est disponible para este, mientras el objeto este siendo usado. Despus que el objeto se usa en un programa, el recolector de basura lo reclama y la memoria asignada a ste es liberada. El recolector de basura es un hilo de baja prioridad que se mantiene ejecutando en segundo plano en una JVM.