semana9b vbr

49
PROGRAMACIÓN WEB SI189 Ing. Victor Barrientos Rodriguez [email protected] [email protected]

Upload: carlos-luna

Post on 20-Jun-2015

618 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Semana9b Vbr

PROGRAMACIÓN WEBSI189

Ing. Victor Barrientos [email protected]

[email protected]

Page 2: Semana9b Vbr

Lenguaje JavaNomenclatura habitual

1. Variables• Tipos de variables• Tipos primitivos• Referencias• Arrays

2. Operadores• Operadores de Java• Precedencia de operadores

3. Sentencias de control• Sentencias condicionales• Sentencias de repetición• Sentencias break y continue

Page 3: Semana9b Vbr

Nomenclatura habitual1. Los nombres de Java son sensibles a las letras mayúsculas y

minúsculas2. Normas recomendadas:

• Los nombres de clases e interfaces comenzarán siempre por mayúscula. Ej: HolaMundo.

• Los nombres de objetos, métodos y variables empezarán por minúscula. Ej: main, x, y, ...

• Los nombres de variables finales (constantes) se definirán siempre en mayúsculas. Ej: PI

• Si un nombre consta de varias palabras, se pondrá en mayúscula la 1ª letra de la palabra que sigue a otra. Ej: HolaMundo, xCentro, yCentro,...

Page 4: Semana9b Vbr

Variables• Tipos de variables

1. Según la información que contienen:• Tipos primitivos: char, byte, short, int, long,

float, double y boolean• Referencias: guardan la dirección de memoria donde

se almacena un objeto o un array2. Según su funcionalidad:

• Variables miembro de una clase: se definen en una clase, fuera de cualquier método.

• Variables locales: se definen dentro de un método o dentro de cualquier bloque entre llaves {}. Se crean dentro del bloque y se destruyen al finalizar el bloque.

Page 5: Semana9b Vbr

Tipos primitivos (i)

Page 6: Semana9b Vbr

Tipos primitivos (ii)1. El tipo boolean no es un valor numérico

• Sólo admite los valores true o false• No se identifica con el igual o distinto de 0, como en

C/C++2. El tipo char contiene caracteres en código UNICODE

• Incluye el código ASCII• Comprende los caracteres de casi todos los idiomas

3. Los tipos de variables en Java están definidos en todas las plataformas (a diferencia de C/C++)• Ej: un int ocupa la misma memoria y tiene el

mismo rango de valores en cualquier plataforma

Page 7: Semana9b Vbr

Declaración e inicialización1. Declaración:

• tipo nombreVariable;• Ej: int x;

2. Inicialización:• Puede especificarse un valor en la declaración.

• Ej: int y = 10;• Si no se especifica nada:

• Las variables de tipos primitivos se inicializan a 0 (excepto boolean, que se inicializa a false, y char, que se inicializa a ‘\0’)

• n Las variables de tipo referencia se inicializan a null.

Page 8: Semana9b Vbr

Referencias1. Una referencia es una variable que indica dónde está

guardado un objeto en la memoria del ordenador• Java no permite acceder al valor de la dirección (se han

eliminado los punteros)2. Al declarar una referencia no apunta a ningún objeto en

particular, por lo que se le asigna el valor null.• Ejemplo: MiClase unaRef;

3. Si se desea que la referencia apunte a un nuevo objeto, es necesario crear el objeto utilizando el operador new.• Ejemplo: MiClase otraRef = new MiClase();

Page 9: Semana9b Vbr

Arrays1. Un array o un vector es un tipo particular de referencia.

Puede ser de variables primitivas o de objetos. En la declaración hay que incluir los corchetes [].

2. Ejemplos:• int [] vector; // Declaración de un array, inicializado a

null• vector = new int [10]; // Vector de 10 enteros,

inicializados a 0• double [] v = {1.23,5.45,3.45}; // Declaración e

inicialización de un vector de 3 elementos• MiClase [] lista = new MiClase[5]; // Vector de 5

referencias a objetos. Las 5 referencias inicializadas a null

• lista[0]=unaRef;

Page 10: Semana9b Vbr

Operadores• Aritméticos• Incrementales• Relacionales• Lógicos• De asignación

Page 11: Semana9b Vbr

Operadores aritméticos

Page 12: Semana9b Vbr

Operadores incrementales

Page 13: Semana9b Vbr

Operadores relacionales

Page 14: Semana9b Vbr

Operadores lógicos

Page 15: Semana9b Vbr

Operadores de asignación

Page 16: Semana9b Vbr

Otros operadoresOperador condicional ?:

1. expresiónBooleana ? op1 : op22. Devuelve op1 si expresiónBooleana es true, y op2 si es

false.3. Ejemplo:

• double a=10.3, b=20.5, mayor=0;• mayor = (a>b) ? a : b; // mayor = 20.5;

Operador instanceof• nombreObjeto instanceof NombreClase• Devuelve true si el objeto pertenece a la clase, y

false si no pertenece

Page 17: Semana9b Vbr

Precedencia de operadores

Page 18: Semana9b Vbr

Sentencias de control1. Sentencias condicionales

• If• if else• if elseif else• switch

2. n Sentencias de repetición:• While• do while• for

3. Sentencias break y continue

Page 19: Semana9b Vbr

Sentencias condicionales (i)• Sentencia if

if (expresiónBooleana) {// instrucciones si se cumple la condición}

• Sentencia if elseif (expresiónBooleana) {// instrucciones si se cumple la condición}else {// instrucciones si no se cumple la condición}

Page 20: Semana9b Vbr

Sentencias condicionales (ii)• Sentencia if elseif else

if (expresiónBooleana1) {// instrucciones}else if (expresiónBooleana2) {// instrucciones}else {// instrucciones}

Page 21: Semana9b Vbr

Sentencias condicionales (iii)• Sentencia switch

switch (expresión) {case valor1: // instrucciones si la expresión vale valor1

break;case valor2: // instrucciones si la expresión vale valor2

break;case valor3: // instrucciones si la expresión vale valor3

break;default: // instrucciones si la expresión vale// cualquier otro valor

}

Page 22: Semana9b Vbr

Sentencias de repetición1. El bucle while

while (expresiónBooleana){sentencia; // se ejecuta mientras la expresión sea cierta

}2. El bucle do while

do {sentencia; // se ejecuta mientras la expresión sea cierta

}while (expresiónBooleana);3. El bucle for

for (inicialización; condición; incremento) {sentencia; // se ejecuta mientras la condición sea cierta

}

Page 23: Semana9b Vbr

Sentencias break y continue1. Sentencia break

• Finaliza inmediatamente la ejecución de una sentencia switch o de un bucle

2. Sentencia continue• Finaliza la iteración que se esté ejecutando en un bucle,

volviendo al comienzo del bucle y continuando en la siguiente iteración

• Ejemplo:for (int n=0;n<=100;n++){if(n%5!=0) continue;System.out.println(n + “ “);}

Page 24: Semana9b Vbr

Clases en JAVA (i)1. Clases

• Concepto de clase y objeto• Variables miembro de objeto y de clase• Variables finales• Métodos. Paso de argumentos• Métodos de clase• Control de acceso• Métodos sobrecargados• Constructores y destructores

2. Packages

Page 25: Semana9b Vbr

Concepto de claseTipo definido por el usuario que describe los atributos y los métodos de los objetos que se crearán a partir de la misma.

• Los atributos son los datos que definen el estado del objeto

• Los métodos son las operaciones que definen su comportamiento

Definición:[public] class NombreClase{//definición de datos y métodos}

* Si no se define public, la clase sólo es visible para lasdemás clases del package

Page 26: Semana9b Vbr

Concepto de objetoEs un ejemplar concreto de una clase (una instancia)

• Clases: “tipos de variables”• Objetos: “variables concretas” de un tipo determinado

Creación objetos:• NombreClase unObjeto;• unObjeto = new NombreClase();• NombreClase otroObjeto;• otroObjeto = new NombreClase();

Page 27: Semana9b Vbr

Ejemplo (i)class Circulo{

public static final double PI = 3.14159265;private double x,y;private double radio;

public Circulo(double cx, double cy, double r){

x = cx;y = cy;radio = r;

}public Circulo(){

this(0.0,0.0,1.0);}public double perimetro(){

return 2.0*PI*radio;}public double area(){

return PI*radio*radio;}

}

Page 28: Semana9b Vbr

Variables miembro de objeto• Pueden ser de tipos primitivos o referencias a objetos• Van precedidas por modificadores de acceso:

• public, private, protected o package• Ejemplo:

• private double x, y;• private double radio

• Cada objeto posee sus propias variables miembro.• Para acceder a ellas se utiliza el operador punto (.)

• Ejemplo: circulo1.radio• Se inicializan de forma automática, incluso antes de• llamar al constructor

Page 29: Semana9b Vbr

Variables miembro de claseVariables de clase (variables static): son variables propias de la clase y no de cada objeto

1. Permiten definir variables que sólo tienen sentido para toda la clase.

Es lo más parecido que Java tiene a las variables globales de C/C++Ejemplo: contador de círculos creados

1. Definición: static int numCirculos = 0;2. Uso: Circulo.numCirculos

Si no se les da un valor en la declaración, se inicializacon los valores por defecto para los tipos primitivos,y con null si es una referencia

Page 30: Semana9b Vbr

Variables finalesNo pueden cambiar su valor a lo largo de la ejecucióndel programa

• Pueden considerarse constantesEjemplo:

• public static final double PI = 3.14159265;Es posible separar la definición de la inicialización:

• La inicialización puede hacerse en tiempo de ejecución• La variable es constante, pero no tiene por qué tener el

mismo valor en todas las ejecuciones del programa

Page 31: Semana9b Vbr

MétodosSon funciones definidas dentro de una claseEjemplo:

public double perimetro(){return 2.0*PI*radio;}

Declaración:•modificador_acceso tipo_devuelto nombreMétodo

(lista_argumentos)

Se aplican a un objeto a través del operador punto(.). Dicho objeto es su argumento implícito.

•circulo1.perimetro()

Page 32: Semana9b Vbr

Paso de argumentos• Los argumentos de los tipos primitivos se pasan por valor

• El método recibe una copia del argumento

• Las referencias se pasan también por valor, pero a través de ellas se pueden modificar los objetos referenciados

• No se pueden pasar métodos como argumentos a otros métodos• En C/C++ se pueden pasar punteros a función como

argumentos

Page 33: Semana9b Vbr

Métodos de clase• Los métodos de clase (static) no actúan sobre objetos

concretos a través del operador punto (.)• Se crean anteponiendo la palabra static • Para llamarlos se suele utilizar el nombre de la clase• Ejemplo:

• Métodos matemáticos de la clase• java.lang.Math: sin, cos, exp, pow,...• Math.sin(ang); // Calcula el seno de ang

Page 34: Semana9b Vbr

Control de accesoModificadores de acceso•Indican el tipo de acceso permitido a cada miembro de la clase•Modificadores: public, private, protected y package (por defecto)

Page 35: Semana9b Vbr

Métodos sobrecargadosJava permite métodos sobrecargados

• Tienen el mismo nombre, pero se diferencian por el número y tipo de los argumentos

Ejemplo:• public void calcula (int dato1)• public void calcula (int dato1, float dato2)• public void calcula (int dato1, float dato2, double dato3)

No es posible crear dos métodos sobrecargados que sólo difieran en el valor de retornoConstructores sobrecargados:

• public Circulo()• public Circulo(double cx, double cy, double r)

Page 36: Semana9b Vbr

Constructores (i)Constructor: método que se llama automáticamentecada vez que se crea un objeto de una clase

• Misión: reservar memoria e inicializar las variables miembro de la clase

• No tiene valor de retorno• Su nombre es el mismo que el de la clase

Constructor por defecto:• No tiene argumentos• Si no se especifica, el compilador crea uno, inicializando

las variables de tipos primitivos a su valor por defecto, y las referencias a null

Un constructor puede llamar a otro definido por medio de la palabra this

Page 37: Semana9b Vbr

Constructores (ii)

Page 38: Semana9b Vbr

Constructor copiaPermite crear un objeto a partir de otro objeto de lamisma clase

Ejemplo:public Punto(Punto pto){

x = pto.x;y = pto.y;

}Llamada:

Punto pt3 = new Punto(pt2);

Page 39: Semana9b Vbr

Constructores en clasesderivadas

El constructor de una clase derivada puede llamar alconstructor de su clase base mediante la palabra super

Subclase(lista_parámetros){

super(lista_parámetros);// sentencias adicionales

}Si no se llama explícitamente al constructor de laclase base, se llama automáticamente al constructorpor defecto de la clase base

Previamente se ha definido la Clase heredado del superior con el comando extends.

Page 40: Semana9b Vbr

Ejemplo constructor class Rectangulo {

public int alto,ancho;Rectangulo(int alto,int ancho){

this.alto = alto;this.ancho = ancho;

}}

class Cuadrado extends Rectangulo{

Cuadrado(int tam){

super(tam,tam);}

}

Page 41: Semana9b Vbr

Packages (ii)import nombrePaquete;•Evita tener que utilizar nombres largos

• import java.io.*;• Se puede acceder a la clase FileReader simplemente

con el nombre FileReader en lugar de con el nombre java.io.FileReader

•No hace que se carguen todas las clases (sólo se cargan las clases public)•No se importan los subpaquetes

• import java.awt; // no importa java.awt.event•Los packages hacen referencia a los ficheros compilados *.class

Page 42: Semana9b Vbr

Destructores: liberación dememoria

En Java no hay destructores

El sistema libera la memoria de los objetos que han perdido la referencia garbage collection (recogida de basura)

No se sabe exactamente cuando se va a activar el garbage collector.

Si no falta memoria es posible que no se active en ningún momento

Page 43: Semana9b Vbr

Packages (ii)Un package es una agrupación de clases

• API Java 1.1 22 packages• API Java 1.2 59 packages

Para que una clase forme parte del package llamadonombrePaquete:

• package nombrePaquete; //1ª línea del ficheroEl nombre de un package puede constar de variosnombres unidos por puntos

• Ej: java.awt.eventTodas las clases que forman parte de un package deben estar en el mismo directorio

Page 44: Semana9b Vbr

Packages (ii)import nombrePaquete;•Evita tener que utilizar nombres largos

• import java.io.*;• Se puede acceder a la clase FileReader simplemente

con el nombre FileReader en lugar de con el nombre java.io.FileReader

•No hace que se carguen todas las clases (sólo se cargan las clases public)•No se importan los subpaquetes

• import java.awt; // no importa java.awt.event•Los packages hacen referencia a los ficheros compilados *.class

Page 45: Semana9b Vbr

ExceptionLos errores se representan mediante dos tipos declases derivadas de la clase Throwable: Error y Exception:1.Clase Error:

Relacionada con errores de compilación, del sistema o de laJVM son irrecuperables

2.Clase Exception:RuntimeException: Excepciones frecuentes (implícitas). Elpropio lenguaje chequea y lanza las excepciones que derivande esta clase•Ej: recibir una referencia null en un método•Ej: sobrepasar el tamaño de un array•Resto de clases derivadas: Excepciones explícitas. Deben•gestionarse por el programador

Page 46: Semana9b Vbr

ExceptionPor heredar de Throwable, todos los tiposde excepciones pueden usar los métodos:

String getMessage() Devuelve el mensaje deerror asociado a la excepciónString toString() Devuelve una brevedescripción del objetovoid printStackTrace() Imprime una traza dela pila

Page 47: Semana9b Vbr

Lanzar ExceptionProceso de lanzamiento:Crear un objeto Exception de la clase adecuadaLanzar la excepción con la sentencia throw seguida delobjeto creado

Ejemplo:MiExcepcion miExc = new MiExcepcion(“Mensaje”);throw miExc;

Al lanzar la excepción el método termina de inmediato sin devolver ningún valor

Page 48: Semana9b Vbr

Capturar una ExceptionSi en un método se produce una Exception, el programa no compilará mientras no se haga una de estas cosas:

Gestionar la excepción con una construcción del tipo try/catch/finally

Relanzar la excepción hacia un método anterior en la pila, utilizando la construcción throws en la cabecera del método

El compilador obliga a capturar las excepciones explícitas

Page 49: Semana9b Vbr

Bloque try/catch/finally