1. Definición de métodos 2. Sobrecarga de métodos 3...
Transcript of 1. Definición de métodos 2. Sobrecarga de métodos 3...
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.