Semana9b Vbr

Post on 20-Jun-2015

620 views 0 download

Tags:

Transcript of Semana9b Vbr

PROGRAMACIÓN WEBSI189

Ing. Victor Barrientos Rodriguezvbarrientos@ginnet.com.pe

Victor.barrientos.rodriguez@gmail.com

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

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

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.

Tipos primitivos (i)

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

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.

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

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;

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

Operadores aritméticos

Operadores incrementales

Operadores relacionales

Operadores lógicos

Operadores de asignación

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

Precedencia de operadores

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

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}

Sentencias condicionales (ii)• Sentencia if elseif else

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

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

}

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

}

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 + “ “);}

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

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

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

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

}

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

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

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

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

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

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

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)

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)

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

Constructores (ii)

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

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.

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

}

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

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

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

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

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

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

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

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

Bloque try/catch/finally