Download Leccion3_Programacion en Java [Modo de compatibilidad]

Document related concepts
no text concepts found
Transcript
Lección 3: Creando clases
1.
2.
3.
4.
5.
Definición de métodos
Sobrecarga de métodos
Definición de constructores
Creando miembros estáticos
Construcción e inicialización de
objetos
Programación en Java
Objetivos
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é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
nombre, sus argumentos y el conjunto de
excepciones que arroja.
Programación en Java
Firma de un método
modificadores TipoDeRetorno nombreDelMetodo(
tipo argumento1, .., tipo argumentoN)
throws Exception1, ... ,ExceptionN {
…
return instanciaTipoDeRetorno;
}
Ejemplo:
public static DataSource getDataSource() throws
MalformedURLException,
SQLException,
IOException {
…
}
Programación en Java
Variables 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.
No llevan modificadores de acceso, public,
protected o private.
Programación en Java
Paso 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 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.
2.
3.
4.
5.
6.
7.
8.
9.
Persona persona;
persona = new Persona(“José”);
cambiarNombre(persona);
// El nombre de la persona continua siendo José
System.out.println(persona.getNombre());
public void cambiarNombre(Persona persona) {
persona = new Persona(“Hugo”);
}
Programación en Java
Paso 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.
2.
3.
4.
5.
6.
7.
8.
9.
Persona persona;
persona = new Persona(“José”);
cambiarNombre(persona);
// El nombre de la persona ahora es Hugo
System.out.println(persona.getNombre());
public void cambiarNombre(Persona persona) {
persona.setnombre(“Hugo”);
}
Programación en Java
Sobrecarga 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.
Reutilizar el nombre del método con diferentes
argumentos se le conoce como sobrecarga.
Programación en Java
Reglas 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
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 sobrecarga
Ejemplos:
public void getConexion(String tipoControlador){}
//No es sobrecarga. No es suficiente el tipo de retorno //y la
lista de excepciones
public Connection getConexion(String tipoControlador)
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
Ejercicio
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);
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
Constructores
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 {
//Constructor sin argumentos
public Clase(){
//Inicializar el objeto
}
//Constructor
private Clase(String nombre){
//Inicializa el objeto con un String
}
}
Programación en Java
Constructor 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ón
Al crear cualquier constructor en la clase, el constructor por omisión
ya será creado.
Ejemplo:
class Clase {
// 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 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 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
En los constructores sólo son validos los
modificadores de acceso:
public
protected
(default)
private
Programación en Java
El 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
this(“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
Ejercicio
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 clase
Usuario
Puesto
Una instancia de la clase
Puesto
Programación en Java
Creando 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
modificador static.
Los miembros estáticos pueden ser:
Variables
Métodos
Bloques
Programación en Java
Variables 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
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á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áticos
Ejemplo:
class Persona {
public static String ciudad;
private 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á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á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
Ejercicio
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:
public static boolean autenticar(String
usuario, String password) {
…
}
Programación en Java
Modificadores
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.
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 modificadores
Programación en Java
Operadores
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
Precedencia
Categoría
Operadores
Unarios
++
Aritméticos
*
+
Corrimiento
<<
Comparación
< <=
== !=
De Bits
& ^ |
Optimizados
&&
Condicionales
?:
De asignación
=
-/
-
+
-
!
()
%
>>
>>>
>
||
“op=”
>=
instanceof
Programación en Java
Expresiones
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
Expresiones
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
clases.
Programación en Java
Expresiones – Orden 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.
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 - Orden 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:
If (cadena!=null && cadena.substring(3,4) ) {..}
Programación en Java
Tipo 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.
Ejemplo:
long a=1;
// El tipo de la expresion es String
String b = “Valor de a: ” + a;
Programación en Java
Resumen
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 aprendió a reconocer el tipo de las expresiones y su orden
de evaluación.