1. definición de métodos 2. sobrecarga de métodos 3...

36
Lección 3: Creando clases 1. Definición de métodos 2. Sobrecarga de métodos 3. Definición de constructores 4. Creando miembros estáticos 5. Construcción e inicialización de objetos

Upload: nguyennga

Post on 20-Sep-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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

Page 2: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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.

Page 3: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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.

Page 4: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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 {

}

Page 5: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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.

Page 6: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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);

Page 7: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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. }

Page 8: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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. }

Page 9: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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.

Page 10: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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

Page 11: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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{}

Page 12: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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.

Page 13: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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}

}

Page 14: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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();

}

}

Page 15: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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();

}

}

Page 16: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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.

Page 17: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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

Page 18: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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.

Page 19: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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

Page 20: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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

Page 21: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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” ;

Page 22: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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

Page 23: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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

}

}

Page 24: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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.

Page 25: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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

}

Page 26: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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) {

}

Page 27: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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.

Page 28: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

Programación en Java

Tabla de modificadoresTabla de modificadores

Page 29: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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

Page 30: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

Programación en Java

PrecedenciaPrecedencia

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

Aritméticos * / %Aritméticos+ -

Corrimiento << >> >>>

Comparación < <= > >= instanceof

== !=

De Bits & ^ |

Optimizados && ||

Condicionales ?:

De asignación = “op=”

Page 31: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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.

Page 32: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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.

Page 33: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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

Page 34: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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) ) {..}

Page 35: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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;

Page 36: 1. Definición de métodos 2. Sobrecarga de métodos 3 ...wiki.cetechihuahua.gob.mx/images/3/3b/Leccion3_Programacion_en... · El método equals, debe comparar los datos que crea

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.