1. Definición de métodos 2. Sobrecarga de métodos 3...

Preview:

Citation preview

Lección 3: Creando clases

1. Definición de métodos2. Sobrecarga de métodos3. Definición de constructores3. Definición de constructores4. Creando miembros estáticos5. Construcción e inicialización de

objetos

Programación en Java

ObjetivosObjetivos

�En este capitulo se estudiarán los conceptos relacionados a métodos, como lo son sobrecarga, métodos estáticos.

�Se aprenderá a diferenciar el alcance de los componentes de los métodos.

�Se utilizarán los constructores y se definirán sus reglas de uso.

Programación en Java

Definición de métodosDefinición de métodos

�Como se vio en el capítulo anterior a un método lo define su firma, A un método lo define su firma, la cual está compuesta por los modificadores del método, el tipo de retorno, el modificadores del método, el tipo de retorno, el nombre, sus argumentos y el conjunto de excepciones que arroja.

Programación en Java

Firma de un métodoFirma de un método

modificadores TipoDeRetorno nombreDelMetodo(

tipo argumento1, .., tipo argumentoN)

throws Exception1, ... ,ExceptionN {

return instanciaTipoDeRetorno;return instanciaTipoDeRetorno;

}

Ejemplo:

public static DataSource getDataSource() throws MalformedURLException, SQLException, IOException {

}

Programación en Java

Variables localesVariables locales

�Una variable local de un método es creada cuando se invoca un método.

�Sólo existe durante la ejecución del método. �Sólo existe durante la ejecución del método.

�No llevan modificadores de acceso, public, protected o private.

Programación en Java

Paso de argumentos por valorPaso de argumentos por valor

�Cuando Java pasa un argumento a la llamada de un método, se pasa una copia del argumento. Consideremos el siguiente fragmento de código.

public void incrementar (int x) {

x++;

}

int x = 12345;

incrementar(x);

//El valor de x continua siendo 12345

System.out.println(“Ahora el valor de x es:”+x);

Programación en Java

Paso de argumentos por eferenciaPaso de argumentos por eferencia

�Lo anteriormente visto funciona con tipos de datos primitivos ¿Pero con objetos? El efecto es un tanto diferente. Consideremos el siguiente código:

1. Persona persona;

2. persona = new Persona(“José”);

3. cambiarNombre(persona);

4. // El nombre de la persona continua siendo José

5. System.out.println(persona.getNombre());

6.

7. public void cambiarNombre(Persona persona) {

8. persona = new Persona(“Hugo”);

9. }

Programación en Java

Paso de argumentos por referenciaPaso de argumentos por referencia

�Ahora si método modifica el objeto vía referencia, los cambios se harán en el objeto al que apunta la referencia.

1. Persona persona;

2. persona = new Persona(“José”);

3. cambiarNombre(persona);

4. // El nombre de la persona ahora es Hugo

5. System.out.println(persona.getNombre());

6.

7. public void cambiarNombre(Persona persona) {

8. persona.setnombre(“Hugo”);

9. }

Programación en Java

Sobrecarga de métodosSobrecarga de métodos

�Existen ocasiones en las cuales nosotros deseamos reutilizar el nombre del método. En java existen dos maneras de hacer esto uno es la sobrecarga y otro la sobre escritura.la sobrecarga y otro la sobre escritura.

�Reutilizar el nombre del método con diferentes argumentos se le conoce como sobrecarga.

Programación en Java

Reglas para la sobrecargaReglas para la sobrecarga

�El nombre de un método se puede sobrecargar en los siguientes casos:�Si la lista de argumentos difiere en número�Si la lista de argumentos difiere en tipo de al menos �Si la lista de argumentos difiere en tipo de al menos

argumento.�Si el orden y tipos de argumentos es diferente en la

firma de los métodos.�Es importante que el tipo de retorno y la lista de

excepciones no es suficiente para considerar sobrecarga de métodos

Programación en Java

Reglas para la sobrecargaReglas para la sobrecarga

�Ejemplos:public void getConexion(String tipoControlador){}

//No es sobrecarga. No es suficiente el tipo de ret orno //y la lista de excepciones

public Connection getConexion(String tipoControlado r) throws SQLException{}throws SQLException{}

//Si es sobrecarga. El número de argumentos es

// diferente

public void getConexion(String nombreConexion, int tipoControlador) throws SQLException { }

// Si es sobrecarga. El orden del tipo de los

// argumentos es diferente al resto de los métodos

public void getConexion(int tipoControlador,

String fuenteDeDatos) throws SQLException{}

Programación en Java

EjercicioEjercicio

� En la clase Persona y la clase Direccion creada en la lección anterior agregue los métodos set y get para cada unos de los campos, además agregue los métodos:

public String toString();public bolean equals(Object o);public bolean equals(Object o);

� Que el método toString regrese el valor de todos los campos concatenados y separados por comas.

� El método equals, debe comparar los datos que crea necesarios para que se puedan diferenciar una persona de otra y un domicilio de otro.

Programación en Java

ConstructoresConstructores

�Es un método con la característica de que no tiene tipo de retorno y su nombre es idéntico al nombre de la clase.

�Ejemplo:

class Clase {class Clase {//Constructor sin argumentospublic Clase(){

//Inicializar el objeto }

//Constructorprivate Clase(String nombre){//Inicializa el objeto con un String}

}

Programación en Java

Constructor por omisiónConstructor por omisión

�Cuando creamos una clase y no especificamos ningún constructor java asigna un constructor sin argumentos.

�Ejemplo:

class Clase {

// Un constructor sin argumentos es asignado

// por default

public static void main(String args[]){

Clase clase = new Clase();

}

}

Programación en Java

Constructor por omisiónConstructor por omisión

� Al crear cualquier constructor en la clase, el constructor por omisión ya será creado.

�Ejemplo:

class Clase {// Constructor con argumentos.// Constructor con argumentos.private Clase(String nombre){//Inicializa el objeto con un String}

public static void main(String args[]){// Error de compilación, el constructor de// por omisión no es creado.Clase clase = new Clase();

}

}

Programación en Java

Sobrecarga de constructoresSobrecarga de constructores

�Pueden existir tantos constructores como necesitemos en una clase sólo hay que considerar que:�La lista de argumentos difiere en número�La lista de argumentos difiere en número�La lista de argumentos difiere en tipo de al menos

argumento.�El orden y tipos de argumentos sea diferente.�Lista de excepciones no es suficiente para considerar

sobrecarga.

Programación en Java

Modificadores en constructores Modificadores en constructores

�En los constructores sólo son validos los modificadores de acceso:�public�protected�protected�(default)�private

Programación en Java

El uso de la referencia thisEl uso de la referencia this

� Podemos utilizar la palabra reservada this, para invocar desde un constructor otro con un mayor número de argumentos.

� Ejemplo:class Persona {

public Persona(){//Inicializar el objeto utilizando otro//Constructor//Constructorthis(“Raúl”,15,50);

}private Persona(String nombre, int edad, int peso){

//Proceso complejo de inicialización}

}� Nota: Cuando utilicemos la palabra reservada this, para invocar otro constructor es

necesario que sea la primera instrucción que se invoque en el constructor.

Programación en Java

EjercicioEjercicio�En la clase Usuario cree un constructor sin argumentos

que inicialice los campos de la clase utilizando el constructor con todos los argumentos los valores de inicialización serán los siguientes:

Campo Tipo

nombre “Sin nombre”

apellidoPaterno null

apellidoMaterno null

Usuario Una Instancia de la claseUsuario

Puesto Una instancia de la clasePuesto

Programación en Java

Creando Miembros estáticosCreando Miembros estáticos

�Los miembros estáticos son conocidos como miembros de clase, es decir no necesitan de una instancia de la clase para poder ejecutarse.

�Los miembros de clase se caracterizan porque tienen el �Los miembros de clase se caracterizan porque tienen el modificador static.

�Los miembros estáticos pueden ser:� Variables� Métodos� Bloques

Programación en Java

Variables estáticasVariables estáticas

�Una variable de clase es conocida como una variable estática y es creada cuando la clase es cargada y es destruida cuando la clase se libera.

�Sólo hay una copia de la variables por clase aun cuando �Sólo hay una copia de la variables por clase aun cuando la clase nunca sea instanciada.

�Al tipo de la variable le antecede el modificador static.� Ejemplo:

public static final String USUARIO = “usuario” ;

Programación en Java

Métodos estáticosMétodos estáticos

�Al igual que las variables estáticas, los métodos estáticos pueden ser utilizados sin necesidad de crear un instancia de la clase.

�En su cuerpo sólo pueden utilizar variables estáticas u instancias creadas dentro de su cuerpo. Por ninguna razón puede utilizar una variable de instancia ya que la referencia this no existe dentro de estos métodos

Programación en Java

Métodos estáticosMétodos estáticos

�Ejemplo:class Persona {

public static String ciudad;

private String nombre;

public static void solicitarPrestamo(String nombre) {public static void solicitarPrestamo(String nombre) {

//uso incorrecto

//this.nombre = nombre;

ciudad = “Chihuahua”;

Persona persona = new Persona();

persona.nombre = nombre;

//continua el procedimiento

}

}

Programación en Java

Bloques estáticosBloques estáticos

�Los bloques estáticos, son un conjunto de expresiones que se ejecutan únicamente cuando la clase es cargada por la memoria.

Programación en Java

Bloques estáticosBloques estáticos

�Ejemplo:public class ConexionBD implements Conexion {

private Connection conexion;

private static DataSource dataSource;

static {

try {

dataSource = (DataSource)(

new InitialContext()).

lookup(Constante.DATA_SOURCE_NAME);

} catch (NamingException nex) {

nex.printStackTrace();

}

}

//Continua la clase

}

Programación en Java

EjercicioEjercicio

�Cree un método estático autenticar que reciba el usuario y contraseña. Si ya existe uno en su clase haga las modificaciones correspondientes para que sea invocado

�La firma del método debe ser:�La firma del método debe ser:public static boolean autenticar(String

usuario, String password) {

}

Programación en Java

ModificadoresModificadores

�Hasta ahora hemos visto que existen varios tipo de modificadores, pero hasta ahora no sabemos cuales aplican a cada uno de los componentes de una clase o a la clase misma.de una clase o a la clase misma.

�A continuación se presenta una tabla con los operadores y en que casos son aplicables, algunos de los modificadores, están fuera del alcance de este manual.

Programación en Java

Tabla de modificadoresTabla de modificadores

Programación en Java

OperadoresOperadores

�Java provee un conjunto de operadores muy completo el cual puede ser catalogado en:� Operadores unarios� Operadores Aritméticos� Operadores de corrimiento� Operadores de comparación� Operadores de manejo de bits� Operadores Optimizados� Operadores Condicionales� Operadores de comparación

Programación en Java

PrecedenciaPrecedencia

Categoría OperadoresUnarios ++ -- + - ! ()

Aritméticos * / %Aritméticos+ -

Corrimiento << >> >>>

Comparación < <= > >= instanceof

== !=

De Bits & ^ |

Optimizados && ||

Condicionales ?:

De asignación = “op=”

Programación en Java

ExpresionesExpresiones

�Una expresión consiste en operadores y sus operandos, los cuales son evaluados para obtener como producto un resultado.

�El resultado puede ser una variable o un valor o quizás nada si la expresión es la invocación de un método que tiene como tipo de retorno void.

Programación en Java

ExpresionesExpresiones

�Una expresión puede tan simple como el nombre de una variable o tan compleja como una secuencia de invocaciones de métodos, acceso a variables o creación de objetos o acceso a variables o creación de objetos o clases.

Programación en Java

Expresiones Expresiones –– Orden de evaluaciónOrden de evaluación

�A pesar de lo complejo que las expresiones puedan ser, las expresiones se evalúan de una manera bien definida. Los operados y los operadores se evalúan de izquierda a derecha.operadores se evalúan de izquierda a derecha.

�Ejemplo: x+y+z�El compilador evalúa x, evalúa y, después los suma,

evalúa z y lo suma al resultado de x+y

Programación en Java

Expresiones Expresiones -- Orden de evaluaciónOrden de evaluación

�Excepto por los operadores &&, || y ?:, cada operando de un operador, es evaluado antes de que la operación sea llevada a cabo.

�Ejemplo: �Ejemplo: �If (cadena!=null && cadena.substring(3,4) ) {..}

Programación en Java

Tipo de expresionesTipo de expresiones

�Toda expresión tiene un tipo�El tipo de la expresión es determinado por, los

tipos de cada uno de sus componentes y la semántica de los operadores.semántica de los operadores.

�Ejemplo: �long a=1;�// El tipo de la expresion es String�String b = “Valor de a: ” + a;

Programación en Java

ResumenResumen

�En esta lección se aprendió:� A utilizar métodos y constructores de una clase� Se analizó el comportamiento de los métodos y variables

estáticas� Se muestran los operadores de Java y su precedencia.� Se muestran los operadores de Java y su precedencia.� Se aprendió a reconocer el tipo de las expresiones y su orden

de evaluación.