curso java inacap

271

Click here to load reader

Upload: francisco-godoy

Post on 15-Dec-2014

6.267 views

Category:

Technology


18 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Curso Java Inacap

Taller Programación III

Java

1Profesor: Marcelo Montecinos C.

IntroducciIntroduccióón aln alLenguaje de ProgramaciLenguaje de ProgramacióónnJavaJava

Page 2: Curso Java Inacap

Taller Programación III

Java

2Profesor: Marcelo Montecinos C.

¿¿ PorPor ququéé JAVA (JAVA (porpor ququéé tan tan famosofamoso ) ?) ?

Orientado al objeto (tendencia en boga)Simple (similar a c, sin complejidades)Multiplataforma (Windows, PowerMac, Unix)Robusto (hace chequeos, elimina punteros)Recolección de basura automáticaBibliotecas estándarRealmente portable en un 100%Facilidades para programación en redes

Page 3: Curso Java Inacap

Taller Programación III

Java

3Profesor: Marcelo Montecinos C.

Java Java -- CaracterCaracteríísticassticas

Plataforma independiente (portable)

Dinámico (constantemente evolucionando)

Fortalece la seguridad y la portabilidad

Page 4: Curso Java Inacap

Taller Programación III

Java

4Profesor: Marcelo Montecinos C.

JAVA JAVA eses un un lenguajelenguaje interpretadointerpretado

P1.java P1.classSalida

delProg.

Compilador de java (específico x plataforma) javac P1.java

Intérprete de java (específico x plataforma) java P1 (class)

Page 5: Curso Java Inacap

Taller Programación III

Java

5Profesor: Marcelo Montecinos C.

Java -Máquina Virtual (JVM)

Hardware

Sistema Operativo

Ambiente Runtime

InterpretadorJava

JVM

Java Java -- CaracterCaracteríísticassticas

Page 6: Curso Java Inacap

Taller Programación III

Java

6Profesor: Marcelo Montecinos C.

(Editor de texto)

(Programa traducido a bytes-code)

¿Cómo trabaja la tecnología Java?

¿qué sucede en este paso?

Java Java -- CaracterCaracteríísticassticas

Page 7: Curso Java Inacap

Taller Programación III

Java

7Profesor: Marcelo Montecinos C.

Java Java -- CaracterCaracteríísticassticas¿Cómo trabaja la tecnología Java?

Page 8: Curso Java Inacap

Taller Programación III

Java

8Profesor: Marcelo Montecinos C.

Estructura de un Programa en JavaEstructura de un Programa en Java

// Este es el esqueleto de un programa en Java

class <nombre del Programa>

{

/* Definiciones globales*/

/* Metodo Principal*/

/* Otros Métodos*/

}

Se utiliza para abrir un bloque de instrucciones.

Se utiliza para cerrar un bloque de instrucciones

Page 9: Curso Java Inacap

Taller Programación III

Java

9Profesor: Marcelo Montecinos C.

Los comentarios en Java pueden hacerse de dos maneras:Estructura de un Programa en JavaEstructura de un Programa en Java

// Este es el esqueleto de un programa en Java

class <nombre del Programa>{

/* Definiciones globales*/

/* Este es el Método Principal*/

/* Otros Métodos*/

}

Si sólo quiero comentario de una línea coloco // al inicio de es esta

Si quiero comentario de mas de una línea coloco /* al inicio del comentario y */ al final

Page 10: Curso Java Inacap

Taller Programación III

Java

10Profesor: Marcelo Montecinos C.

Estructura de un Programa en JavaEstructura de un Programa en Java// Este es el esqueleto de un programa en Java

class <nombre del Programa>{

/* Definiciones globales*/

/* Método Principal*/

/* Otros Métodos*/

}

Aquí se definen las variables que yo deseo que se puedan utilizar en todo mi programa.

Cada aplicación de Java debe tener un método principal llamado main, que define donde comienza el flujo del programa.

Deben seguir las convenciones utilizadas en algoritmo.

Page 11: Curso Java Inacap

Taller Programación III

Java

11Profesor: Marcelo Montecinos C.

// Este es el esqueleto de un programa en Javaclass <nombre del Programa> {

/* Definiciones globales*/

public static void main (String args[]){

/* Definiciones locales*/......

/* cuerpo de instrucciones */......

}}

Todo el código de un método estará entre la llave de apertura ( { ) y la correspondiente llave de cierre ( } ).

Sintaxis del mSintaxis del méétodo todo MainMain

Page 12: Curso Java Inacap

Taller Programación III

Java

12Profesor: Marcelo Montecinos C.

// Este es el esqueleto de un programa en Javaclass <nombre del Programa> {

/* Definiciones globales*/

public static void main (String args[])

{

/* Definiciones locales*/......

/* cuerpo de instrucciones */......

}}

La palabra public es un especificador de acceso. En este caso el main debe ser declarado public ya que es llamado por código que está fuera de su clase, cuando el programa comienza.

La palabra static permite que main sea llamado por el intérprete de Java antes de que se cree cualquier objeto .

La palabra void indica al compilador que main no devuelve ningún valor.

String args[], declara una variable argsque es una especie de vector que puede contener cadenas de caracteres.

Sintaxis del mSintaxis del méétodo todo MainMain

Page 13: Curso Java Inacap

Taller Programación III

Java

13Profesor: Marcelo Montecinos C.

// Este es el esqueleto de un programa en Javaclass <nombre del Programa> {

/* Definiciones globales*/

public static void main (String args[]){

/* Definiciones locales*/......

/* cuerpo de instrucciones */......

}}

Aquí se definen las variables que solo voy a utilizar en el método principal.

Sintaxis del mSintaxis del méétodo todo MainMain

Después de cada instrucción se coloca ;

Page 14: Curso Java Inacap

Taller Programación III

Java

14Profesor: Marcelo Montecinos C.

EjemploEjemplo// Este programa escribe un texto

class EjemploTexto {

public static void main (String args[]) {

System.out.println(“El que pregunta algo que noentiende se siente ignorante solo una vez, el que no preguntalo que no entiende se sentirá ignorante toda su vida”);}

}

Page 15: Curso Java Inacap

Taller Programación III

Java

15Profesor: Marcelo Montecinos C.

Salida de datosSalida de datos

Para mostrar un texto por pantalla puedo hacerlo de dos maneras:

System.out.println (texto);

System.out.print (texto);

Page 16: Curso Java Inacap

Taller Programación III

Java

16Profesor: Marcelo Montecinos C.

Salida por pantallaSalida por pantalla

import java.io.*;

System.out.println(elementos);System.out.println();System.out.print(elementos);

System.out.println("hola"); // escribe "hola"

System.out.println(5); // escribe 5int i = 5; System.out.println(i) ; // escribe 5;double d=6.4; System.out.println(d); // escribe 6.4;

double d=6.4; System.out.println("d="+d); // escribe d=6.4;

Page 17: Curso Java Inacap

Taller Programación III

Java

17Profesor: Marcelo Montecinos C.

Un primer Un primer programaprograma en JAVAen JAVA

public class Hello {

public static void main(String args[ ]) {

System.out.println(“Hola Mundo“);}

}Todo programa es escrito como el método estático llamado main en unaclase cualquieraEste método se empieza a ejecutar cuando se invoca el intérprete de java para una clase dadaargs es un arreglo de Strings que contiene los parámetroscon los que fué invocado el programa.

Page 18: Curso Java Inacap

Taller Programación III

Java

18Profesor: Marcelo Montecinos C.

DeclaraciDeclaracióón de Variablesn de Variables

tipo nombre;tipo nombre1, nombre2, nombre3;tipo nombre = valor;

DeclaraciDeclaracióón de Constantes:n de Constantes:

static final tipo nombre = valor;

Page 19: Curso Java Inacap

Taller Programación III

Java

19Profesor: Marcelo Montecinos C.

DefiniciDefinicióón de variablesn de variablesLos datos son almacenados en variables, que se encuentran en la memoria, formados por dos componentes el nombre que las identifica y la celda con el valor almacenado.

25600.00

9702634

‘Pedro Perez’

6

Memoria

‘F’

monto

carnet

sexo

nombre

contador

Page 20: Curso Java Inacap

Taller Programación III

Java

20Profesor: Marcelo Montecinos C.

Tipos de datosTipos de datos

4 5237

Integer (enteros)

13.45Floating Point(punto flotante)

Numérico

Page 21: Curso Java Inacap

Taller Programación III

Java

21Profesor: Marcelo Montecinos C.

Tipos de datosTipos de datos

Integer (enteros)

Byte : 8 bits -27 ..... 27 –1

Short : 16 bits

Int : 32 bits

Long : 64 bits

Page 22: Curso Java Inacap

Taller Programación III

Java

22Profesor: Marcelo Montecinos C.

Tipos de datosTipos de datos

Float : 32 bits

Double : 64 bits

Floating Point(punto flotante)

Page 23: Curso Java Inacap

Taller Programación III

Java

23Profesor: Marcelo Montecinos C.

Tipos de datosTipos de datos

Caracteres char : ‘a’, ‘z’, ‘D’, ‘%’, ‘s’,’#’….

Cadenas de caracteres

String: “Pedro Garcia”“Juan Lopez””Rojo”

boolean: truefalse

Lógicos

Page 24: Curso Java Inacap

Taller Programación III

Java

24Profesor: Marcelo Montecinos C.

TiposTipos primitivosprimitivos de de datosdatos en JAVAen JAVA

enteros: int, long, short, byteConst. 1, -1, 1024, 1Lreales: float, doubleConst. 1.0, -3.14159, 1.5e4, 1.0fcaracter: char

Const. ‘a’, ‘X’, ‘@’lógico: boolean

Const. true, falseConstantes de String: “Hola“,“12 de Abril“

Page 25: Curso Java Inacap

Taller Programación III

Java

25Profesor: Marcelo Montecinos C.

/* Este programa declara Algunas variables */class declaraVar {

public static void main (String args[]) {

int x, y;float z = 3.1416;double w =3.1415;boolean bandera = true;char c; String str;String st1 =“María”;str = “blanco”;

} }

DeclaraciDeclaracióón de variablesn de variables

Page 26: Curso Java Inacap

Taller Programación III

Java

26Profesor: Marcelo Montecinos C.

AsignaciAsignacióón de valores a variablesn de valores a variables

Se puede dar valores a las variables en el momento de su declaración o en una instrucción de asignación independiente una vez que ha sido declarada.

Se utiliza el signo = en ambos casos.

Ejemplo:

int x =5;boolean t;t = true;

Page 27: Curso Java Inacap

Taller Programación III

Java

27Profesor: Marcelo Montecinos C.

AsignaciAsignacióón de valores a variablesn de valores a variables

Las asignaciones también pueden ser expresiones en notación INFIJA.

Ejemplo:monto = pvp * cantidad ;

Donde pvp y cantidad deberán ser variables anteriormente declaradas y con valor previo asignado.

Page 28: Curso Java Inacap

Taller Programación III

Java

28Profesor: Marcelo Montecinos C.

AsignaciAsignacióón de valores a variablesn de valores a variables

/* Este programa declara Algunas variables */class declaraVar {

public static void main (String args[]) {

int x, y, z;x = 2;y = 4;z = x * y;System.out.println(“El valor de z es “ + z);

} }

Page 29: Curso Java Inacap

Taller Programación III

Java

29Profesor: Marcelo Montecinos C.

AsignaciAsignacióón de valores a variablesn de valores a variables

Algunas de las operaciones a utilizar en la asignación:

() indica prioridad de ejecución* multiplicación/ división decimal + , - suma, resta

Ejemplo:islv = ( (pvp * cantidad) * porcIslv) ) / 100;

Page 30: Curso Java Inacap

Taller Programación III

Java

30Profesor: Marcelo Montecinos C.

OperadoresOperadores

Igualdad y desigualdad: == , !=

Comparación: <, <=, >, >=Suma y resta unarios: +, -Suma, multiplicación, división y módulo: +, -, *, /, %Incremento y decremento prefijos y posfijos: ++, --Desplazamiento con signo y sin signo: <<, >>, >>>Negación lógica unaria de bits: ~Lógica de bits: &, |, ^Lógica booleana: &&, ||

Page 31: Curso Java Inacap

Taller Programación III

Java

31Profesor: Marcelo Montecinos C.

AsignaciAsignacióónn

Utilización de operadores:var1 = var2 + var3; // asignar a var1 el valor de var2 + var3var1 = var2 - ver3; // asignar a var1 el valor de var2 - var3var1 = var2 * ver3; // asignar a var1 el valor de var2 * var3var1 = var2 / ver3; // asignar a var1 el valor de var2 / var3var1 = var2 % ver3; // asignar a var1 el valor de var2 % var3

Asignaciones de incremento decremento:

variable++; // añadir uno a variablevariable--; // restar uno a varibale

variable += exp; // añadir exp a variablevariable -= exp; // restar exp a variable

Page 32: Curso Java Inacap

Taller Programación III

Java

32Profesor: Marcelo Montecinos C.

AsignaciAsignacióón de valores a variablesn de valores a variables

/* Este programa declara Algunas variables */class declaraVar {

public static void main (String args[]) {

int x, y, z;x = 2;y = 4;z = (x + y)/ 2;System.out.println(“El valor de z es “ + z);

} }

Page 33: Curso Java Inacap

Taller Programación III

Java

33Profesor: Marcelo Montecinos C.

ExpresionesExpresiones

Grupos de PrecedenciaGrupo 0: ( )Grupo 1: ++, --, + (unario), - (unario)Grupo 2: *, /, %Grupo 3: +, -, + (concatenación)

Funciones especiales:Seno x => Math.sin(x)x2 => Math.pow(x,2)Math.round(6.6) => 7

Page 34: Curso Java Inacap

Taller Programación III

Java

34Profesor: Marcelo Montecinos C.

ExpresionesExpresiones y y asignaciasignacióónn

Aritmeticas: suma + 20 * c / (mod % 3)Relacionales: a > b, b >= c, c != 4, a == 0De String: “hola “+ nombre + “ hoy es “+

dia + “de”+mesCasts: (int) pi (pi = 3.1) (int) (Math.random()*100)+1)Otros: a == 1 ? a+1 : a-1Asignacion: a = 1;Asignación como operador: a = b = c = d = 0;boolean cero = ( b = c - 10) == 0;

Page 35: Curso Java Inacap

Taller Programación III

Java

35Profesor: Marcelo Montecinos C.

Conversiones entre tiposConversiones entre tipos

Asignar una variable a otra cuyo tipo es mayor de tamaño:

byte => short => int => long => float => double

Para pasar de un tipo a otro menor en tamaño, tenemos que hacer una conversión explícita de tipos:º

(tipo)expresion

Page 36: Curso Java Inacap

Taller Programación III

Java

36Profesor: Marcelo Montecinos C.

ConversionesConversiones de de tipotipoJava no reclama si un tipo de menor rango se convierte as unode mayor rango.

byte < short < int < long < float < double

Tipo Bits Rangoint 32 -2**31 .. 2**31-1short 16 -2**15 .. 2**15-1byte 8 -2**7 .. 2**7-1long 64 -2**63 .. 2**63-1float 32 -10**32 .. 10**32

double 64 -10**300 .. 10**300

Page 37: Curso Java Inacap

Taller Programación III

Java

37Profesor: Marcelo Montecinos C.

EjemplosEjemplos

int i = 1;long l = i; //okl = 1000000000000;float f = l; //okdouble d= 1.0e24; int i = d; // Error float f = 1.0f; int i = f; // Errorshort s = i; //Errordouble d = 1.0; int i = (int)d; //okint i = 256;byte b = (byte)i; //ok pero b ==0;

Page 38: Curso Java Inacap

Taller Programación III

Java

38Profesor: Marcelo Montecinos C.

Excepciones definidas por el usuarioExcepciones definidas por el usuario

public class nombre extends Exception {public nombre() {}public nombre(String s) { }

}

throw new nombre(“mensaje”);

Page 39: Curso Java Inacap

Taller Programación III

Java

39Profesor: Marcelo Montecinos C.

EjemploEjemplo

public void leeArchivo(String nombre) throws IOException {BufferedReader fin = new BufferedReader(new FileReader(nombre));try {

while(true) {cadena = fin.readLine();System.out.println(cadena);

}} catch (EOFException e) {

System.out.println("Fin del archivo");}

}

Page 40: Curso Java Inacap

Taller Programación III

Java

40Profesor: Marcelo Montecinos C.

Entrada desde tecladoEntrada desde teclado

import java.io.*;

BufferedReader entrada = newBufferedReader(new InputStreamReader(System.in));

String cadena = entrada.readLine();

Page 41: Curso Java Inacap

Taller Programación III

Java

41Profesor: Marcelo Montecinos C.

Lectura de nLectura de núúmerosmeros

int i=Integer.valueOf(in.readLine()).intValue();double d=Double.valueOf(in.readLine()).doubleValue();

int i=Integer.valueOf(in.readLine().trim()).intValue();double d=Double.valueOf(in.readLine().trim()).doubleValue();

Page 42: Curso Java Inacap

Taller Programación III

Java

42Profesor: Marcelo Montecinos C.

Lectura de datosLectura de datosEste programa se encarga de pedir el ingreso de un número, para luego mostrarlo en pantalla.

/* 1) */ import java.io.*;

/* 2) */ public class LectTecladoApp

/* 3) */ {

/* 4) */ public static void main(String Arg[ ]) throws IOException

/* 5) */ {

/* 6) */ BufferedReader entrada= new BufferedReader(new InputStreamReader(System.in));

/* 7) */ int num;

/* 8) */ System.out.print("Ingrese numero : ");

/* 9) */ num = Integer.parseInt(entrada.readLine( ));

/* 10) */ System.out.println("Ud ingreso el numero : " + num );

/* 11) */ }

/* 12) */ }

Page 43: Curso Java Inacap

Taller Programación III

Java

43Profesor: Marcelo Montecinos C.

1) Se invoca a la librería de entrada y salida io(Input,Output), para usar en nuestro programa todas sus clases disponibles.

import : Indica que se tienen importar (incluir) cierta librería. java.io : Acceso a la librería io. java.io.* : Selecciona todas las clases disponibles.

4) Declaración del programa principal con opción de control de errores.

throws IOException : Indica que cualquier error de entrada o salida de datos, será manejado en forma interna (automática) por el programa.

6) Se crean las instancias necesarias para crear un objeto que permita manejar la lectura de datos por teclado.

Page 44: Curso Java Inacap

Taller Programación III

Java

44Profesor: Marcelo Montecinos C.

BufferedReader : Clase perteneciente a la librería io que crea un buffer de entrada donde se almacenarán los carácteres ingresados por teclado. in : Variable de tipo BufferedReader.

7) Se declara la variable num de tipo entero (int).

8) Se llama al método print para escribir un mensaje en pantalla dejando el cursor inmediatamente a continuación del mensaje.

Page 45: Curso Java Inacap

Taller Programación III

Java

45Profesor: Marcelo Montecinos C.

9) Se lee el número, asignando el valor a la variable num.

in.readline : Método que retorna el "string" leído por teclado. Integer.parseInt : Método que convierte un string (cadena de caracteres) en un dato numérico de tipo int. Integer : Clase estándar que no necesita ser instanciada(está disponible por defecto).

10) Se llama al método println para escribir un mensaje en pantalla que consta de una parte estática y otra variable.

El método println y print soportan varios objetos concatenados mediante el operador + , logrando imprimir cadenas de carácteres y variables numéricas.

Page 46: Curso Java Inacap

Taller Programación III

Java

46Profesor: Marcelo Montecinos C.

Estructuras de un ProgramaEstructuras de un Programa

Page 47: Curso Java Inacap

Taller Programación III

Java

47Profesor: Marcelo Montecinos C.

Debemos recordar: Debemos recordar:

Los espacios en blanco se permiten entre los elementos del código fuente. Los espacios, los tabuladores y nuevas líneas deben usarse para darlegibilidad al código.

class CSumar

{

Static int v1, v2, suma;

public static void main (String args[])

{

System.out.println("Introduzca v1");

v1 = CTeclado.ReadInt();

System.out.println("Introduzca v2");

v2 = CTeclado.ReadInt();

suma = v1 + v2;

}

}

Todo el código de un métodoo bloque de instruccionesestará entre la llave de apertura( { ) y la correspondiente llave de cierre ( } ).

Todas las instrucciones terminan con punto y coma “ ; ”

Page 48: Curso Java Inacap

Taller Programación III

Java

48Profesor: Marcelo Montecinos C.

Palabras ReservadasPalabras ReservadasSon palabras que tienen unsignificado especial dentrodel lenguaje , en nuestrocaso JAVA.

class CSumar

{

static int v1, v2, suma;

public static void main (String args[])

{

System.out.println("Introduzca v1");

v1 = CTeclado.ReadInt();

System.out.println("Introduzca v2");

v2 = CTeclado.ReadInt();

suma = v1 + v2;

}

}

Page 49: Curso Java Inacap

Taller Programación III

Java

49Profesor: Marcelo Montecinos C.

Identificadores Identificadores

Son identificadores, los nombres que reciben las variables, constantes, clases, métodos o instancias de un programa.

Comienzan con una letra y pueden contener letras y números.

Son sensitivos a las mayúsculas y minúsculas.

Pueden contener palabras claves del lenguaje siempre y cuando no sean completamente iguales.

Pueden tener cualquier longitud

Page 50: Curso Java Inacap

Taller Programación III

Java

50Profesor: Marcelo Montecinos C.

Algunas convenciones en cuanto a identificadoresAlgunas convenciones en cuanto a identificadores..

Programas: deben ser nombres, escritos en modo mixto y con la primera letra de cada palabra en mayúsculas.

Métodos: deben ser verbos, en modo mixto, con la primera letra en minúscula. Las palabras se separarán usando letras mayúsculas.

Variables: deben ser nombres que permitan deducir lo que contienen, siguen las mismas reglas que los subprogramas. Los identificadores de una sola letra deben evitarse. (con sus excepciones)

Page 51: Curso Java Inacap

Taller Programación III

Java

51Profesor: Marcelo Montecinos C.

InicializaciInicializacióón de Variablesn de Variables.En Java, cuando una variable es creada, Java le da un valor inicial según la siguiente tabla.

byte,short, int 0long 0Lfloat 0.0fdouble 0.0dchar ‘\u0000’(null)boolean falsevariables referencia null

Page 52: Curso Java Inacap

Taller Programación III

Java

52Profesor: Marcelo Montecinos C.

Java Java ArreglosArreglos

Page 53: Curso Java Inacap

Taller Programación III

Java

53Profesor: Marcelo Montecinos C.

ArreglosArreglos

Es un tipo especial de dato al que se hacereferencia por un nombre.

Está compuesto por una colección de elementos del mismo tipo de datos que se almacenan consecutivamente en memoria.

Pueden ser creados de cualquier tipo.

Page 54: Curso Java Inacap

Taller Programación III

Java

54Profesor: Marcelo Montecinos C.

ArreglosArreglosSe pueden declarar como: int[] A; intA[];

Esto es la declaración del puntero al arreglo, no se especifica tamaño en la declaración;Inicialización: A = new int[10]; int[] A = new int[10];

Empiezan desde 0: for(int i=0; i < 10; ++i) A[i] = 0;

Se puede averiguar el largo: intlargo = A.length;

length es un campo del objetoarreglo y no un método. No esnecesario el método ya que el tamaño, como el contenido de un

Page 55: Curso Java Inacap

Taller Programación III

Java

55Profesor: Marcelo Montecinos C.

ArreglosArreglos

Se utilizan para agrupar informaciónrelacionada

Pueden tener ser de una o más dimensiones. Los de una dimensión los denominaremos vectoresy de los de dos dimensiones matrices o tablas

Para accesar un elemento particular del arreglo, se utilizan los índices

Page 56: Curso Java Inacap

Taller Programación III

Java

56Profesor: Marcelo Montecinos C.

VectoresVectoresEjemplo de un vector que contiene 7 números enteros

3 6 8 1 0 4 2

0 1 2 3 4 5 6 índices

Elementos delvector

Elemento que ocupa laposición 3 en el vector

Page 57: Curso Java Inacap

Taller Programación III

Java

57Profesor: Marcelo Montecinos C.

VectoresVectoresDeclaraciDeclaracióónn en Javaen Java

tipoDato[ ] nombreVariable;

tipoDato nombreVariable[ ];

Para declarar un vector de número enteros, al cual se le dá el nombre de miVectormiVector se puede hacer de la siguientemanera:

int[ ] miVector;// o tambiénint miVector[ ];

Page 58: Curso Java Inacap

Taller Programación III

Java

58Profesor: Marcelo Montecinos C.

CreaciCreacióónnint[] miVector;// o tambiénint miVector[];

Cuando se declara una variable vector, esta no tieneningún valor. Antes de asignar cualquier valor, se debereservar un espacio en memoria, utilizando el operadornew y asignarlo a la variable.

DeclaraciDeclaracióónn VectoresVectores

nombreVector = new tipoDato[tamaño];

miVector = new int[7];Continuando con el ejemplo anterior

Page 59: Curso Java Inacap

Taller Programación III

Java

59Profesor: Marcelo Montecinos C.

VectoresVectoresCreación:

Creación:

miVector = new int[7];

Al reservar espacio para los elementos de un vector, mediante new, se inicializa automáticamente en cero sucontenido.Cuando se ejecuta esta sentencia de creación , la varianble miVector, hará referencia a un vector de 7 elementos enteros.

New: operador especial que reserva espacio en memoria

Page 60: Curso Java Inacap

Taller Programación III

Java

60Profesor: Marcelo Montecinos C.

VectoresVectores

Inicialización:

Dependiendo del tipo de datos que contenga un vector,estos son inicializados por defecto con los siguientes valores:

Si son vectores numéricos, se inicializan en cero.

Si son vectores de caracteres, se inicializan en ‘/u000’.

Si son vectores booleanos, se inicializan en false.

Page 61: Curso Java Inacap

Taller Programación III

Java

61Profesor: Marcelo Montecinos C.

VectoresVectoresCreación:

miVector = new int[7];

Inicialización

Un vector completo se puede inicializar de la siguientemanera

miVector = {3, 6, 8, 1, 0, 4, 2};

Page 62: Curso Java Inacap

Taller Programación III

Java

62Profesor: Marcelo Montecinos C.

VectoresVectoresCreación:miVector = new int[7];

UtilizaciónnombreVector [índice]

Para accesar un elemento de un vector, se coloca el nombre del vector y entre corchetes el índice del elementoque se desea.

3 6 8 1 0 4 2

0 1 2 3 4 5 6Por ejemplo, si se desea obtener el número 8 del siguiente vector:

miVector [2]

Page 63: Curso Java Inacap

Taller Programación III

Java

63Profesor: Marcelo Montecinos C.

VectoresVectoresCreación:

miVector = new int[7];

Utilización

Los índices en un vector, van desde 0 hasta el tamaño – 1.El tamaño de un vector se obtiene con el método length, con la siguiente sintaxis:

nombreVector.length

En nuestro ejemplo:

miVector.length

Page 64: Curso Java Inacap

Taller Programación III

Java

64Profesor: Marcelo Montecinos C.

Ejemplo: crear un vector de 5 posiciones, rellenarlo y luego mostrar su contenido.

VectoresVectores

class EjemploVec{

static int miVector[ ];public static void main (String arg[]){

miVector = new int[5];llenarVector();mostrarVector();System.out.print("El tamano de mi vector es ");System.out.println(miVector.length);

}

Page 65: Curso Java Inacap

Taller Programación III

Java

65Profesor: Marcelo Montecinos C.

VectoresVectores

static void llenarVector(){

for (int i=0; i <= 4; i++){

System.out.println("Intro. numero de posicion " + i + " ");miVector[i] = CTeclado.ReadInt();

}}static void mostrarVector(){

for (int i=0; i <= 4; i++)System.out.print(miVector[i] + " ");

}

}// fin de clase

Page 66: Curso Java Inacap

Taller Programación III

Java

66Profesor: Marcelo Montecinos C.

MatricesMatrices0 1 2 3 4 5

0

1

2

3

4

5

(matriz 2 3)

(matriz 4 0)

Page 67: Curso Java Inacap

Taller Programación III

Java

67Profesor: Marcelo Montecinos C.

MatricesMatrices

Son arreglos de dos dimensiones

La información es dispuesta en filas y columnas

Para accesar un elemento se deben especificardos subíndices: fila y columna.

Pueden ser creadas de cualquier tipo

Pueden ser vistos como vectores de vectores

Page 68: Curso Java Inacap

Taller Programación III

Java

68Profesor: Marcelo Montecinos C.

MatricesMatrices

Declaración:

tipoDato nombreVariable[ ][ ];

Para declarar una matriz de números enteros, llamadamiMatriz, se debe hacer de la siguiente manera:

int miMatriz[ ][ ];

Page 69: Curso Java Inacap

Taller Programación III

Java

69Profesor: Marcelo Montecinos C.

MatricesMatrices

Creación:

nombreMatriz = new tipoDato[filas][columnas];

Para crear una matriz de 2 filas y 3 columnas de números enteros, llamada miMatriz, se escribe

miMatriz = new int [2][3];

Page 70: Curso Java Inacap

Taller Programación III

Java

70Profesor: Marcelo Montecinos C.

MatricesMatrices

Creación: miMatriz = new int [2][3];

genera

miMatriz[0][0] miMatriz[0][1] miMatriz[0][2]

miMatriz[1][0] miMatriz[1][1] miMatriz[1][2]

Page 71: Curso Java Inacap

Taller Programación III

Java

71Profesor: Marcelo Montecinos C.

MatricesMatrices

Creación: miMatriz = new int [2][3];

Primero crea un vector de 2 elementos

Elemento 0

Elemento 1

Page 72: Curso Java Inacap

Taller Programación III

Java

72Profesor: Marcelo Montecinos C.

MatricesMatrices

Creación: miMatriz = new int [2][3];

Luego cada elemento lo transforma en un vector de 3 elementos

miMatriz[0][0] miMatriz[0][1] miMatriz[0][2]

miMatriz[1][0] miMatriz[1][1] miMatriz[1][2]

Fila 0

Fila 1

Columna 2Columna 0

Page 73: Curso Java Inacap

Taller Programación III

Java

73Profesor: Marcelo Montecinos C.

MatricesMatricesEjemplo: Crear una matriz de 2 filas y 3 columnas, llenarla y luego mostrar su contenido.

class EjemploMat{

public static void main (String arg[]){

int miMatriz[][];

miMatriz = new int[2][3];llenarMatriz(miMatriz);mostrarMatriz(miMatriz);

}

Page 74: Curso Java Inacap

Taller Programación III

Java

74Profesor: Marcelo Montecinos C.

static void llenarMatriz(int m[][]){

for (int i=0; i < 2; ++i){

for (int j=0; j< 3; ++j){

System.out.println("Intro. Elem. " + i + " " + j);m[i][j] = CTeclado.ReadInt();

}}

}static void mostrarMatriz(int m[][]){

for (int i=0; i < 2; i++){

for (int j=0; j< 3; j++){

System.out.print(m[i][j] + " ");}System.out.println();

}}}

Page 75: Curso Java Inacap

Taller Programación III

Java

75Profesor: Marcelo Montecinos C.

EjerciciosEjercicios

1. Se deben crear tres vectores vecA, vecB y vecC de m elementos cada uno; se debe crear otro arreglo vecNuev donde cada elemento sea la suma de los elementos de cada arreglo.

2. Se deben crear dos vectores. En uno se colocarán los carnet de los estudiantes que aprobaron Cálculo 1, en otro los que aprobaron Etica. Crear un tercer arreglo que contenga los carnet de los estudiantes que aprobaron ambas materias.

Page 76: Curso Java Inacap

Taller Programación III

Java

76Profesor: Marcelo Montecinos C.

EjerciciosEjercicios

3. Se deben crear dos vectores uno de ellos de nelementos, el otro de m elementos . Llenarlos con números ,colocándo en cada uno los elementos ordenados de menor a mayor.

Crear un tercer vector de tamaño n+m el cual contendrá los elementos de los vectores ordenados de menor a mayor.

Page 77: Curso Java Inacap

Taller Programación III

Java

77Profesor: Marcelo Montecinos C.

OperadoresOperadores

Los operadores de un lenguaje se utilizan para combinar o modificar los valores de de un programa.

Vamos a estudiar lossiguientes operadores:

Aritméticos : binarios y unitarios.

Operadores de Asignación.

Relacionales.

Lógicos.

Page 78: Curso Java Inacap

Taller Programación III

Java

78Profesor: Marcelo Montecinos C.

Operadores AritmOperadores Aritmééticos Binariosticos Binarios.

Operador Significado

+ Suma- Resta* Multiplicación/ División entera

(si los operandos son de tipo entero)

/ División real(si los operandos son reales)

% Módulo, resto de división entera(no es necesario que los operandossean reales)

Page 79: Curso Java Inacap

Taller Programación III

Java

79Profesor: Marcelo Montecinos C.

Operadores AritmOperadores Aritmééticos Binariosticos Binarios.Veamos un ejemplo:

class CPrueba{

public static void main(String arg[]) {

int i , j;i=5;j = i % 2;System.out.println("el valor de j es "+j);j = i / 2;System.out.println("el valor de j es "+j);j = i * 2;System.out.println("el valor de j es "+j);

}}

1

2

10

Page 80: Curso Java Inacap

Taller Programación III

Java

80Profesor: Marcelo Montecinos C.

Operadores AritmOperadores Aritmééticos Unitarios.ticos Unitarios.

Operador Significado

++ Incremento-- Decremento

Estos operadores se pueden aplicar en dos formas, prefija y postfija, que adquieren importancia cuando los mismos se usan dentro de una expresión mayor.

Page 81: Curso Java Inacap

Taller Programación III

Java

81Profesor: Marcelo Montecinos C.

Operadores AritmOperadores Aritmééticos Unitariosticos Unitarios.Veamos un ejemplo:

class CPrueba{

public static void main(String arg[]) {

int i;i=5;//incrementando antes o después de a

System.out.println("el valor de i++ es "+ i++);

System.out.println("el valor de i++ es "+ ++i);}

}

57

Page 82: Curso Java Inacap

Taller Programación III

Java

82Profesor: Marcelo Montecinos C.

Operadores AritmOperadores Aritmééticos Unitariosticos Unitarios.Veamos un ejemplo:

class CPrueba{

public static void main(String arg[]) {

int i;i=5;//decrementando antes o después de a

System.out.println("el valor de i-- es "+ i--);

System.out.println("el valor de i-- es "+ --i);}

}

53

Page 83: Curso Java Inacap

Taller Programación III

Java

83Profesor: Marcelo Montecinos C.

Operadores de AsignaciOperadores de Asignacióón.n.

Operador Significado

= asignación+= asignación y suma-= asignación y resta*= asignación y mult./= asignación y div.%= asignación y mod.

Page 84: Curso Java Inacap

Taller Programación III

Java

84Profesor: Marcelo Montecinos C.

Operadores de AsignaciOperadores de Asignacióónn..Veamos un ejemplo:

class CPrueba{

public static void main(String arg[]) {

int i , j;i=5;i += 2;

System.out.println("el valor de i es "+i);i = 5;i %= 2;

System.out.println("el valor de i es "+i);}

}

// equivale a i = i + 2;

// equivale a i = i % 2;

7

1

Page 85: Curso Java Inacap

Taller Programación III

Java

85Profesor: Marcelo Montecinos C.

Operadores Relacionales.Operadores Relacionales.

Operador Nombre Ejemplo Respuesta

== igual 1 == 2 false!= distinto 1 != 2 true> mayor que 1 > 2 false< menor que 1 < 2 true>= mayor o igual 1 >= 2 false<= menor o igual 1 <= 2 true

Page 86: Curso Java Inacap

Taller Programación III

Java

86Profesor: Marcelo Montecinos C.

Operadores LOperadores Lóógicosgicos.

Operador Significado

&& and|| or

Tablas de valores lógicos:

AND T FT T FF F F

OR T FT T TF T F

Page 87: Curso Java Inacap

Taller Programación III

Java

87Profesor: Marcelo Montecinos C.

OperadoresOperadoresOrden de precedencia en los operadores:

1. ++ --2. * / %3. + -4. < > <= >=5. == !=6. &7. |8. = *= /= %= +=

-=

Page 88: Curso Java Inacap

Taller Programación III

Java

88Profesor: Marcelo Montecinos C.

Expresiones LExpresiones LóógicasgicasLas expresiones lógicas se definen como un conjunto de operadores y operandos.

Son las que devuelven como resultado un valor booleano(true o false).

Contienen operadores relacionales y/o operadores lógicos.

Ejemplo:(X >= Y)(X >= Y) && (X>= Z)(A != 0) || (A != 5)

Page 89: Curso Java Inacap

Taller Programación III

Java

89Profesor: Marcelo Montecinos C.

Los Los argumentosargumentos de un de un programaprogramaSi se invoca al programa P1 de ka siguientemanera: java P1 estos son parametrosentonces en el programa se tendrá args[0] = “estos”, args[1] = “son”, args[2] = “parametros”.Se reciben como un arreglo de strings en la variable declarada como parámetro del programaString args[]

public class Parametros {public static void main(String args[]) {

for(int i=0; i < args.length; i++)

System.out.pritnln(args[i]);}

}

Page 90: Curso Java Inacap

Taller Programación III

Java

90Profesor: Marcelo Montecinos C.

ExceptionsExceptionsUna Exeption es un evento que rompe la ejecución normal de un programa (debido a un error). Cuando ocurre un evento como este un objeto de la clase Exception es generado o “lanzado” (throw). Existen varios tipos de clases derivadas Exception dependiendo de que fue lo que originó el evento: IOException, IndexOutOfBoundsException, UnknownHostException, etc.Cuando esto sucede, el intérprete de JAVA busca un exception handler adecuado para esta exception, que ejecuta un pedazo de código(programado por el usuario) que debería reaccionar en forma adecuadaa esta falla del programa. Esto se llama “atrapar una exception”(catch). Cuando no se ha escrito ningún ningún handler que atrape estaexception, el programa se detiene (se cae). La razón para introducirexceptions es que la programación para reaccionar ante fallas se hacemás fácil (no hay que preverlas todas).

Page 91: Curso Java Inacap

Taller Programación III

Java

91Profesor: Marcelo Montecinos C.

CCóómomo programarprogramar Exception Handlers ?Exception Handlers ?

Forma general: en un bloque try-catchtry {

lista de instrucciones que pueden generar un error}

catch (ExceptionTipo1 e) {lista de instrucciones para enmendar el error de Tipo1

{catch (ExceptionTipo2 e) {

lista de instrucciones para enmendar el error de Tipo1}

catch (ExceptionTipo3 e) {lista de instrucciones para enmendar el error de Tipo1

}Si no se conoce o no importa el tipo de exception específico se puedeponer Exception y se atrapan todos (basta un solo bloque cach). Sihay más de un bloque se ejecuta sólo un bloque catch según el tipode error.

Page 92: Curso Java Inacap

Taller Programación III

Java

92Profesor: Marcelo Montecinos C.

EjemploEjemplo de Exception I/O de Exception I/O

Muchas veces el compilador OBLIGA a programar el código de modo de atraparexceptions cuando estas pueden suceder con cierta probabilidad. Las másfrecuentes son las de IO.

import java.io.*; //importa clases de la biblioteca IOpublic class ProgrmaÍO{

public static void main(String args[]) {BufferedReader in; PrintWriter out; String line;try { in = new BufferedReader(new FileReader(“Origen.txt”))};catch (IOException e) {

System.out.println(“error en apertura”); System.exit(1);}try { out = new PrintWriter( new FileWriter(“Destino.txt”))};catch (IOException e) {

System.out.println(“error en creacion”); System.exit(1);}try {

while( (line = in.readLine()) != null)out.println(line);

catch (IOException e) { System.out.println(“problemas”);}}

}

Page 93: Curso Java Inacap

Taller Programación III

Java

93Profesor: Marcelo Montecinos C.

EjemploEjemplo de Exception I/O (2)de Exception I/O (2)

Se puede omitir poner tantos try-catch si no importa dondesucedió

import java.io.*; //importa clases de la biblioteca IOpublic class ProgrmaÍO2{

public static void main(String args[]) {BufferedReader in; PrintWriter out; String line;try {

in = new BufferedReader(new InputStreamReader(System.in));

out = new PrintWriter( new FileWriter(“Destino.txt”));System.out.println(“ingrese linea”);while( (line = in.readLine()) != “”){

out.println(line);System.out.println(“ingrese linea”);

}catch (Exception e) { System.out.println(“problemas”);}

}}

Page 94: Curso Java Inacap

Taller Programación III

Java

94Profesor: Marcelo Montecinos C.

EjemploEjemplo de Exception I/O (3)de Exception I/O (3)También se puede evitar tener que preocuparse de las exceptions siemprey cuando el método que la pordría generar se declare como que “lanza”una excepción:

import java.io.*; //importa clases de la biblioteca IOpublic class ProgrmaÍO3{

public static void main(String args[]) throws IOException{BufferedReader in; PrintWriter out; String line;in = new BufferedReader(new FileReader(“Origen.txt”));out = new PrintWriter( new FileWriter(“Destino.txt”));while( (line = in.readLine()) != null)

out.println(line);}

}

Esto implica que el programa se caerá si hay una excepción durante la generación del programa. En otros casos se puede declarar que uno o más métodos lanzan una IOException y el programa o método principal se preocupa de escribir el Exception handler.

Page 95: Curso Java Inacap

Taller Programación III

Java

95Profesor: Marcelo Montecinos C.

Estructuras de DecisiEstructuras de Decisióónn

Page 96: Curso Java Inacap

Taller Programación III

Java

96Profesor: Marcelo Montecinos C.

EstructurasEstructuras de Decisión

if (expresión lógica){

<bloque de instrucciones >}else{

<bloque de instrucciones>}

Page 97: Curso Java Inacap

Taller Programación III

Java

97Profesor: Marcelo Montecinos C.

Veamos un ejemplo:

class CPrueba{

public static void main(String arg[]) {

int a , b;a = 1; b = 3;if (a < b){

System.out.println(a);}else{

System.out.println(b);}

}}

Estructuras de DecisiEstructuras de Decisióónn

Page 98: Curso Java Inacap

Taller Programación III

Java

98Profesor: Marcelo Montecinos C.

Estructuras de DecisiEstructuras de DecisióónnDecisión Anidada

if (expresión lógica){

if (expresión lógica){

<bloque de instrucciones >}else{

<bloque de instrucciones >}

}else{

<bloque de instrucciones >}

Page 99: Curso Java Inacap

Taller Programación III

Java

99Profesor: Marcelo Montecinos C.

Veamos un ejemplo de Decisión Anidada

class CPrueba{

public static void main(String arg[]) {

int a , b, c;a = 1; b = 3;if (a < b) {

if (b > c) {

a++;}else {

b++;}

}else {

a = a + b;}

}}

Page 100: Curso Java Inacap

Taller Programación III

Java

100Profesor: Marcelo Montecinos C.

Estructuras de DecisiEstructuras de DecisióónnVeamos otro ejemplo de Decisión Anidada

if (X > 10) {

if (X < 20) {

System.out.println( X + ” esta entre 10 y 20”); }else{

System.out.println( X + “es mayor a 20”); }

}else{

if (X > 0) {

System.out.println( X + “entre 1 y 10”); }else{

System.out.println( X + “igual o menor a cero”); }

}

Page 101: Curso Java Inacap

Taller Programación III

Java

101Profesor: Marcelo Montecinos C.

Estructuras de DecisiEstructuras de DecisióónnEjercicio

Deseamos hacer un programa que dado el sueldo de una persona, le aumente un 50% si la persona ganamenos de 180000 Bs ó un 20% si gana más.

if (sueldo < 18000) {

sueldo *= 1.5;}else{

sueldo *= 1.2;}

Page 102: Curso Java Inacap

Taller Programación III

Java

102Profesor: Marcelo Montecinos C.

Estructuras de DecisiEstructuras de Decisióónn

ifif –– elseelse -- ifif

Llamada también : alternativas múltiples.

Realiza una verificación de las expresioneslógicas, y cuando consigue una que se cumple, ejecuta su bloque de instrucciones y no toma en cuenta el resto de las expresiones.

Si no se cumple ninguna expresión, ejecuta el else.

No necesariamente debe tener else.

Page 103: Curso Java Inacap

Taller Programación III

Java

103Profesor: Marcelo Montecinos C.

Estructuras de DecisiEstructuras de Decisióónn

ifif –– elseelse -- ifif

Haremos un programa que me permita evaluaruna función, en base a un número d.

Si d > 0 (-4 + Math.sqrt (d))/2

Si d = 0 -4/2

Si d < 0 (-4 + Math.sqrt (Math.abs (d)) )/2

Page 104: Curso Java Inacap

Taller Programación III

Java

104Profesor: Marcelo Montecinos C.

Estructuras de DecisiEstructuras de Decisióónnclassclass CEvaluarCEvaluar{{

publicpublic staticstatic voidvoid mainmain ((StringString argsargs[])[]){{

intint d;d;doubledouble x;x;System.out.printlnSystem.out.println ("Introduzca el valor de d ");("Introduzca el valor de d ");d = d = CTeclado.ReadIntCTeclado.ReadInt();();ifif (d > 0)(d > 0){{

x = (x = (--4 + 4 + Math.sqrtMath.sqrt (d))/2;(d))/2;}}elseelse ifif (d == 0)(d == 0){{

x = x = --4/2;4/2;}}elseelse{{

x = (x = (--4 + 4 + Math.sqrtMath.sqrt ((Math.absMath.abs (d)) )/2;(d)) )/2;}}System.out.printlnSystem.out.println ("El valor de ("El valor de x x es " + x);es " + x);

}}}}

Page 105: Curso Java Inacap

Taller Programación III

Java

105Profesor: Marcelo Montecinos C.

Estructuras de DecisiEstructuras de Decisióónnswichtswicht

switch (expr1){

case valor1:instrucciones;break;

case valor2:instrucciones;break;

default:instrucciones;break;

}

Page 106: Curso Java Inacap

Taller Programación III

Java

106Profesor: Marcelo Montecinos C.

switchswitch

expr1 debe ser compatible con valores enteros o carácter.

Cuando la expresión coincide con algún literal de la sentencia case, se ejecutan las instrucciones correspondientes a ese case

Si ninguna de las constantes coincide con la expresión, se ejecutal el default si existe. Si no existe el default, no se ejecuta nada.

La sentencia break se utiliza para terminar una secuencia de instrucciones, haciedo que la ejecución salte a la primera línea de código que sigue a la sentencia swicht completa.

La sentencia break es opcional, de omitirse la ejecución continuará en el siguiente case.

switch (expr1){

case valor1:instrucciones;break;

case valor2:instrucciones;break;

default:instrucciones;break;

}

Estructuras de DecisiEstructuras de Decisióónn

Page 107: Curso Java Inacap

Taller Programación III

Java

107Profesor: Marcelo Montecinos C.

Estructuras de DecisiEstructuras de Decisióónn

Veamos un ejemplo con switch en Java

switch (numEst) {case 20:

numEst += 3;break;

case 50:numEst++;break;

default:numEst--;break;

}

Page 108: Curso Java Inacap

Taller Programación III

Java

108Profesor: Marcelo Montecinos C.

Estructuras de DecisiEstructuras de Decisióónn

VeamosVeamos unun ejemploejemplo concon switchswitch

Haremos un programa que reciba un mes (número) y nos indique la estación que hay en ese mes.

Page 109: Curso Java Inacap

Taller Programación III

Java

109Profesor: Marcelo Montecinos C.

switchswitch (mes)(mes){

case 12:case 1:case 2:

System.out.println ("Invierno");break;

case 3:case 4:case 5:

System.out.println ("Primavera");break;

case 6:case 7:case 8:

System.out.println ("Verano");break;

case 9:case 10:case 11:

System.out.println ("Otono");break;

default: System.out.println ("Mes desconocido");

}

Page 110: Curso Java Inacap

Taller Programación III

Java

110Profesor: Marcelo Montecinos C.

switch (mes){

case 12:case 1: System.out.println (“Estamos en ");case 2:

System.out.println ("Invierno");break;

case 3:case 4:case 5:

System.out.println ("Primavera");break;

case 6:case 7:case 8:

System.out.println ("Verano");break;

case 9:case 10:case 11:

System.out.println ("Otono");break;

default: System.out.println ("Mes desconocido");

}

Si mes = 2La salida es:Invierno

Si mes = 12La salida es:Estamos enInvierno

Page 111: Curso Java Inacap

Taller Programación III

Java

111Profesor: Marcelo Montecinos C.

EjerciciosEjercicios

1. Desarrolle un programa en Java que le permita leer el nombre , la edad , el sexo y el estado civil de cualquier persona e imprima el nombre de la persona si es un hombre casado y mayor de 40 años o una mujer soltera menor de 50 años.

2. Desarrolle un programa en Java para leer el nombre de un empleado, el salario básico por hora y el número de horas trabajadas durante una semana. Calcule el salario neto , teniendo en cuenta que si el número de horas trabajadas durante la semana es mayor de 48 horas, esas horas demás se consideran horas extras y tienen un recargo del 35%. Imprima el nombre del empleado y su salario neto.

Page 112: Curso Java Inacap

Taller Programación III

Java

112Profesor: Marcelo Montecinos C.

EjerciciosEjerciciosEn la tienda “Sigo de pie” los empleados reciben una cierta comisión dependiendo del código del artículo que vendan.

Código del artículo Cálculo de la comisión

1 15% del precio de venta

2 40% de la diferencia del precio de venta y el precio mínimo de venta

3 10% del precio mínimo de venta más el 50% de la diferencia del precio de venta

y el precio mínimo de venta4 Bs. 100 por unidad más el 5% del precio

mínimo de venta5 Bs. 500 por unidad

Hacer un programa que imprima el Nombre del vendedor, el código del artículo que vendió y la comisión que se ganó.

Page 113: Curso Java Inacap

Taller Programación III

Java

113Profesor: Marcelo Montecinos C.

ResumenResumenEn resumen, los conceptos vistos fueron :

if (expresión lógica){ bloque de instrucciones }else{ bloque de instrucciones }

if – else - ifswitch (expr1)

{case valor1: instrucciones;

break;case valor2: instrucciones;

break;default: instrucciones;

break;}

Instrucciones

Page 114: Curso Java Inacap

Taller Programación III

Java

114Profesor: Marcelo Montecinos C.

SentenciasSentencias de de IteraciIteracióónn

Page 115: Curso Java Inacap

Taller Programación III

Java

115Profesor: Marcelo Montecinos C.

SentenciasSentencias de de IteraciIteracióónn

Las sentencias de iteración en Java son: while, do-while y for.

Se utilizan para ejecutar varias veces un conjunto de instrucciones.

Cada sentencia de repetición tiene unautilidad adecuada dependiendo de la situación.

Page 116: Curso Java Inacap

Taller Programación III

Java

116Profesor: Marcelo Montecinos C.

while while SentenciasSentencias de de IteraciIteracióónn

while (expresión lógica){

bloque de instrucciones;

}

Ejemplo: Mostrar los números del 0 al 9

int i =0;while (i < 10){

System.out.println(“el valor de i es : “ + i);i++;

}

Page 117: Curso Java Inacap

Taller Programación III

Java

117Profesor: Marcelo Montecinos C.

while while SentenciasSentencias de de IteraciIteracióónn

Evalúa su expresión condicional al inicio del bucle.

Repite un bloque de instrucciones, mientrassu expresión sea verdadera.

Cuando la expresión es falsa, el control pasa a la siguiente línea de código que hay inmediatamente después del bucle.

Puede suceder que el bloque de intruccionesnunca se ejecute.

Page 118: Curso Java Inacap

Taller Programación III

Java

118Profesor: Marcelo Montecinos C.

class class CalFacturaCalFactura{{

public static void main(String public static void main(String argsargs[ ])[ ]){{

char char respresp;;double double monto,isvmonto,isv;;System.out.println("IndiqueSystem.out.println("Indique sisi deseadesea calcularcalcular facturafactura s/n");s/n");respresp==CTeclado.ReadCharCTeclado.ReadChar( );( );while ((while ((respresp =='s') || (=='s') || (respresp =='S')) =='S'))

{{System.out.println("IndiqueSystem.out.println("Indique el el montomonto de la de la facturafactura");");montomonto==CTeclado.ReadDoubleCTeclado.ReadDouble();();isvisv=(=(montomonto*14.5/100);*14.5/100);System.out.println("ElSystem.out.println("El montomonto a a pagarpagar de ISV de ISV eses :"+:"+isvisv););System.out.println("DeseaSystem.out.println("Desea calcularcalcular parapara otraotra facturafactura");");respresp==CTeclado.ReadCharCTeclado.ReadChar();();

}}} }

}}

Page 119: Curso Java Inacap

Taller Programación III

Java

119Profesor: Marcelo Montecinos C.

dodo--whilewhileSentenciasSentencias de de IteraciIteracióónn

do {

bloque de instrucciones; }while (expresion lógica);

Ejemplo:

Mostrar los númerosdivisibles por 3 menores a 20

x=0;do{

x = x + 3;System.out.println(“x = “ + x);

} while (x < 20);

Page 120: Curso Java Inacap

Taller Programación III

Java

120Profesor: Marcelo Montecinos C.

dodo--whilewhileSentenciasSentencias de de IteraciIteracióónn

Evalúa su expresión condicional al final del bucle.

Repite un bloque de instrucciones, mientrassu expresión sea verdadera.

Cuando la expresión es falsa, el control pasa a la siguiente línea de código que hay inmediatamente después del bucle.

El bloque de instrucciones de este ciclo se ejecuta al menos una vez.

Page 121: Curso Java Inacap

Taller Programación III

Java

121Profesor: Marcelo Montecinos C.

class NotasEstudiantes{

public static void main(String args[ ]){

char resp;int notaTeo,acumTeo;do {

System.out.println("Indique la Nota de Teoria ");notaTeo=CTeclado.ReadInt();acumTeo=(NotaTeo*50/100);System.out.println("El acumulado teoria es :"+acumTeo);System.out.println("Desea calcular acumulado para otro estudiante ");resp=CTeclado.ReadChar();

} while ((resp == 's') || (resp =='S'));

}}

Page 122: Curso Java Inacap

Taller Programación III

Java

122Profesor: Marcelo Montecinos C.

forforSentenciasSentencias de de IteraciIteracióónn

for (expr. inicial; expr. Lógica;modificacion){

bloque de instrucciones;}

Ejemplo: Mostrar los números del 1 al 10

for (int i = 1; i < 10; i++){

System.out.println(“i = “ + i);}

Page 123: Curso Java Inacap

Taller Programación III

Java

123Profesor: Marcelo Montecinos C.

Se utiliza para ejecutar un bloque de instrucciones un número determinado (fijo) de veces.

Repite un bloque de instrucciones, mientras su expresiónsea verdadera.

La primera vez que se va a ejecutar el ciclo, se realiza la inicialización, es decir, se declara y asigna un valor inicial a la variable que va a controlar el ciclo. Estosucede una sola vez.

Cuando la expresión es verdadera, se ejecuta la modificación de la variable que controla el ciclo. Esto esautomático.

forforSentenciasSentencias de de IteraciIteracióónn

Page 124: Curso Java Inacap

Taller Programación III

Java

124Profesor: Marcelo Montecinos C.

class Serie{

public static void main(String args[ ]) {

int valoralor,termino,sumSerie;System.out.println("Indique el valor a calcular la serie :");valor=CTeclado.ReadInt( );System.out.println("Indique la cantidad de términos :");termino=CTeclado.ReadInt( );sumSerie=0;

for (int contador = 1 ; contador <= termino; contador++) {

sumSerie = sumSerie + contador*valor; }System.out.println("El resultado de la serie es :");System.out.println(sumSerie);

}}

}

Page 125: Curso Java Inacap

Taller Programación III

Java

125Profesor: Marcelo Montecinos C.

SentenciasSentencias de de IteraciIteracióónnEn resumen, los conceptos vistos fueron :

while (expresión lógica){

bloque de instrucciones;}

do{

bloque de instrucciones; }

while (expresion lógica);

for (expr. inicial; expr. Lógica; paso){

bloque de instrucciones;}

InstruccionesInstrucciones

Page 126: Curso Java Inacap

Taller Programación III

Java

126Profesor: Marcelo Montecinos C.

EjerciciosEjercicios1. Se desea saber el promedio de notas que tiene un

estudiante. Hasta la fecha ha cursado 6 materias; además se quiere el número de materias reprobadas y el número de materias aprobadas.

Escribir el programa en Java dado el Algoritmo

Salida:

promn, numa, numr: numéricoEntrada.

nota: numérico

Page 127: Curso Java Inacap

Taller Programación III

Java

127Profesor: Marcelo Montecinos C.

1. Inicio Promedio.2. numa, numr, prom, acumNotas,nota: numérico3. numa 04. numr 05. acumNotas 06. Para cont=1 hasta 6 hacer (+1)Comenzar

6.1 Leer nota6.2 acumNotas acumNotas+nota6.3 Si (nota < 10) entonces6.3.1 numr numr + 1Sino6.3.2 numa numa + 1

Fin Para7. prom acumNotas/68. Mostrar (“ El promedio del estudiantes es : “prom)9. Mostrar (“El estudiante tiene “, numa , “materias aprobadas”)10. Mostrar (“El estudiante tiene “ ,numr, “materias reprobadas”)11. Terminar Promedio

Page 128: Curso Java Inacap

Taller Programación III

Java

128Profesor: Marcelo Montecinos C.

2. Se requiere que se obtenga la misma información pero, para todos los estudiantes de una escuela.

Entrada.nota: numérico

Salida:promn, numa, numr: numérico

Page 129: Curso Java Inacap

Taller Programación III

Java

129Profesor: Marcelo Montecinos C.

1. Inicio Escuela.2. promedioMax, numa, numr, prom,acumNotas,nota,carnet: numérico3. Leer carnet4. promedioMax 05. Mientras ( carnet != 0 ) hacerComenzar3.1 numa 03.2 numr 03.3 acumNotas 03.4 Para cont=1 hasta 6 hacer +1Comenzar

3.4.1 Leer nota3.4.2 acumNotas acumNotas + nota3.4.3 Si( nota < 10) entonces3.4.3.1 numr numr + 1

sino3.4.3.2 numa numa + 1Fin para

3.5 prom acumNotas/63.6 Si (prom > promedioMax) entoces3.6.1 promedioMax prom3.7 Mostrar (“ El promedio del estudiantes es : “prom)3.8 Mostrar (“El estudiante tiene “, numa ,“materias aprobadas”)3.9 Mostrar (“El estudiante tiene “, numr, “materias reprobadas”)3.10 Leer carnetFin Mientras6. Mostrar promedioMax7. Terminar Escuela

Page 130: Curso Java Inacap

Profesor: Marcelo Montecinos C. 130

Strings en JavaStrings en Java

Cadena de caracteres

Page 131: Curso Java Inacap

Taller Programación III

Java

131Profesor: Marcelo Montecinos C.

StringsStrings

En Java un String no es un tipo de dato primitivo como char o int.

Es una clase que maneja cadenade caracteres.

Page 132: Curso Java Inacap

Taller Programación III

Java

132Profesor: Marcelo Montecinos C.

Se declara la variable de tipo de dato cadena.String nombre,cadena;

Se crea una instancia de cadena, con el constructor por defecto.nombre = new String();

nombre = new String("caramelo");Para asignarle una secuencia de caracteres.

nombre= " Maria Perez";

Para hacer referencia a la misma instancia del Stringcadena = nombre;

A partir de este momento cadena y nombre hacen referencia a la mismainstancia. (No se copia el valor , solo la referencia)

StringsStrings

Page 133: Curso Java Inacap

Taller Programación III

Java

133Profesor: Marcelo Montecinos C.

StringsStringsPara obtener la longitud de la candena

nombre.length()

Si deseamos concatenar cadenasnombre = "Juan"+" Garcia”;

Se puede utilizar el metodo concat para concatenar dos cadenas,

nombre = " Carlos“;cadena=nombre.concat(" Juan ");

el contenido de cadena, al final sería: "CarlosJuan "

Page 134: Curso Java Inacap

Taller Programación III

Java

134Profesor: Marcelo Montecinos C.

StringStringPara obtener el caracter que se encuentra en una posición

charAt(posición);ejemplo,

cadena.charAt(0) devolveria el caracter “C”donde posición se inicia en cero.

Para extraer una subcadena, hay dos formas

substring(int posiciónInicial); copia desde la posición inicial hasta el final de la cadena

substring(int posiciónInicial, int posicionFinal);copia desde la posición inicial hasta la posición final-1

Page 135: Curso Java Inacap

Taller Programación III

Java

135Profesor: Marcelo Montecinos C.

StringStringUn ejemplo de substring,

nombre=“Maria Rosa”;System.out.println(nombre.substring(2));System.out.println(nombre.substring(2,4));

la salida sería,ria Rosari

Page 136: Curso Java Inacap

Taller Programación III

Java

136Profesor: Marcelo Montecinos C.

StringStringPara sustituir una letra por otra dentro de la cadena

replace(char original,char sustituto)

ejemplo,cadena=“casa mia”;System.out.println(cadena.replace('a','e'));la salida sería,

cese mie

Page 137: Curso Java Inacap

Taller Programación III

Java

137Profesor: Marcelo Montecinos C.

StringStringPara convertir los caracteres de una cadena de

mayúsculas a minúsculas

toLowerCase()

ejemplo,cadena=“CASA MIA”;System.out.println(cadena.toLowerCase());

la salida sería,casa mia

Page 138: Curso Java Inacap

Taller Programación III

Java

138Profesor: Marcelo Montecinos C.

StringStringPara convertir los caracteres de una cadena de minúsculas a mayúsculas

toUpperCase()

ejemplo,cadena=“casa mia”;System.out.println(cadena.toUpperCase());

la salida sería,CASA MIA

Page 139: Curso Java Inacap

Taller Programación III

Java

139Profesor: Marcelo Montecinos C.

StringStringPara comparar los caracteres dentro de dos cadenas

equals()

ejemplo,if (s1.equals(s2)){

System.out.println("Son iguales los caracteres");}else{

System.out.println("no son iguales los caracteres");}

Page 140: Curso Java Inacap

Taller Programación III

Java

140Profesor: Marcelo Montecinos C.

StringStringPara comparar los caracteres dentro de dos instancias, sin diferenciar

entre mayúsculas y minúsculasequalsIgnoreCase()

ejemplo,if (s1.equalsIgnoreCase(s2))

{System.out.println("Son iguales los caracteres");

}else{

System.out.println("no son iguales los caracteres");}

Page 141: Curso Java Inacap

Taller Programación III

Java

141Profesor: Marcelo Montecinos C.

StringStringPara comparar si dos objetos hacenhacen referenciareferencia a la misma

instancia==

ejemplo,if (s1==s2){

System.out.println(“Son el mismo objeto“);}else{

System.out.println(“No son el mismo objeto”);}

Page 142: Curso Java Inacap

Taller Programación III

Java

142Profesor: Marcelo Montecinos C.

StringString

Para saber si una cadena es menor, igual o mayorlexicográficamente que otra.

compareTo()

ejemplo,if (s1.compareTo(s2) < 0)

{System.out.println(“s1 es menor a s2");}else

{ if (s1.compareTo(s2) == 0){ System.out.println(“s1 es igual a s2"); }

else {System.out.println(“s1 es mayor s2");}

}

Page 143: Curso Java Inacap

Taller Programación III

Java

143Profesor: Marcelo Montecinos C.

StringStringPara determinar si la cadena comienza con una cadenaespecificada.

startsWith()

ejemplo,if (s1.startsWith("car"))

{System.out.println("SI");}

else{System.out.println("NO");}

Page 144: Curso Java Inacap

Taller Programación III

Java

144Profesor: Marcelo Montecinos C.

StringStringPara determinar si una cadena se encuentra, a partir de una posición, dentro de una cadena especificada,

startsWith(String cadena,int posición)

ejemplo,if (s1.startsWith("car",3))

{System.out.println("SI");}

else{System.out.println("NO");}

Page 145: Curso Java Inacap

Taller Programación III

Java

145Profesor: Marcelo Montecinos C.

StringStringPara determinar si la cadena termina con una cadena dada.

endsWith()ejemplo,

if (s2.endsWith("SA")){System.out.println("SI");}

else{System.out.println("NO");}

Page 146: Curso Java Inacap

Taller Programación III

Java

146Profesor: Marcelo Montecinos C.

PaquetesPaquetesPaquetes Java más importantes:

- lang – para funciones del lenguaje;- util – para utilidades adicionales;- io – para entrada y salida;- text – para formateo especializado;- awt – para gráficos e interfaz gráfica de usuario

Para acceder a cualquiera de estos paquetes, excepto lang que está siempre disponible, usamos el siguiente modelo:

import java.nombrepaquete.*;

Page 147: Curso Java Inacap

Profesor: Marcelo Montecinos C. 147

JDBC

Java DatabaseConnectivity

Page 148: Curso Java Inacap

Taller Programación III

Java

148Profesor: Marcelo Montecinos C.

IntroducciIntroduccióónn

JDBC es una API, formada por conjunto de clases e interfaces en el lenguaje de programación Java, para ejecutar sentencias SQL.Ofrece un estándar de conexión a cualquier base de datos disponible en el mercado.Permite obtener los datos en forma fácil y cómoda en ambientes cliente-servidor a través de Internet/Intranet.

Page 149: Curso Java Inacap

Taller Programación III

Java

149Profesor: Marcelo Montecinos C.

¿¿QuQuéé hace JDBC?hace JDBC?

Establece una conexión a una base de datos.Envía sentencias SQL.Procesa los resultados de estas sentencias.

Page 150: Curso Java Inacap

Taller Programación III

Java

150Profesor: Marcelo Montecinos C.

Arquitectura JDBCArquitectura JDBCArquitectura normal Puente JDBC-ODBC

Aplicaciones Java

JDBC API

Adm. de controladores JDBC

ControladorJDBC

DB

ControladorJDBC

DB

Aplicaciones Java

JDBC API

Adm. de controladores JDBC

C. ODBC

DB

C. ODBC

DB

Adm. de controladoresODBC

Puente JDBC/ODBC

Page 151: Curso Java Inacap

Taller Programación III

Java

151Profesor: Marcelo Montecinos C.

Primer ejemplo bPrimer ejemplo báásicosico

Connection con = DriverManager.getConnection ("jdbc:odbc:nombre", "login", "password");

Statement stmt = con.createStatement();ResultSet rs = stmt.executeQuery("SELECT a, b, c

FROM Table1");while (rs.next()) {

int x = rs.getInt("a");String s = rs.getString("b");float f = rs.getFloat("c");

}

JDBC usa una URL para especificar la base de datos.

Page 152: Curso Java Inacap

Taller Programación III

Java

152Profesor: Marcelo Montecinos C.

...Primer ejemplo b...Primer ejemplo báásicosico

Ejemplos de URL:jdbc:mysql://myserver:4444/db1jdbc:oracle://oraserverjdbc:odbc:mydatabase

Page 153: Curso Java Inacap

Taller Programación III

Java

153Profesor: Marcelo Montecinos C.

JDBC vs. ODBCJDBC vs. ODBC

Se puede usar ODBC desde Java, pero el puente JDBC-ODBC ayuda bastante.ODBC tiene una interfaz tipo C rompiendo el esquema de seguridad, robustez e implementación de Java.ODBC mezcla funciones simple y complejas.Los controladores de ODBC deben ser instalados en cada cliente.

Page 154: Curso Java Inacap

Taller Programación III

Java

154Profesor: Marcelo Montecinos C.

...JDBC vs. ODBC

JDBC es una interfaz natural en Java.

Page 155: Curso Java Inacap

Taller Programación III

Java

155Profesor: Marcelo Montecinos C.

Modelos de acceso a BDModelos de acceso a BD

De 2 capasLa aplicación “habla” directamente con la base de datos.Controlador JDBC se comunica con el sistema específico que maneja la base de datos.La base de datos puede estar en otra máquina, con lo que el cliente se comunica por red. Esta es la configuración llamada cliente/servidor.

AplicaciónJavaJDBC

DBMS

Cliente

Servidor

BD

Protocolo

BD

Page 156: Curso Java Inacap

Taller Programación III

Java

156Profesor: Marcelo Montecinos C.

Modelos de acceso a BDModelos de acceso a BD

De 3 capasLos comandos son enviados a la capa intermedia de servicios, la cual envía sentencias SQL a la base de datos. Ésta las procesa y envía los resultados de vuelta a la capa intermedia, para luego ser enviados al cliente.Permite un control de acceso y de actualización.Provee ventajas de performance.

AplicaciónJavaJDBC

DBMS

Applet en Java oNavegador

HTML

Cliente (GUI)

Llamadas HTTP,

RMI,CORBA

ServidorBD

Servidor

Protocolo

BD

Page 157: Curso Java Inacap

Taller Programación III

Java

157Profesor: Marcelo Montecinos C.

CategorCategoríías de los controladores JDBCas de los controladores JDBC

Puente JDBC-ODBC.Parte API Nativa-Parte Java. Se convierte las llamadas JDBC al sistema de la Base de datos.JDBC-Red. Es sólo Java. Las llamadas JDBC son convertidas a un protocolo de red independiente del sistema de la base de datos. Este protocolo es convertido en un servidorProtocolo Nativo. Es sólo Java. Se usa un protocolo de red con la BD.

Page 158: Curso Java Inacap

Taller Programación III

Java

158Profesor: Marcelo Montecinos C.

ConexiConexióónn

Un objeto “Connection” representa una conexión a una base de datos.Una sesión incluye las sentencias SQL que son ejecutadas y los resultados de éstas.Establecer la conexión: “DriverManager.getConnection”La clase “DriverManager” intenta ubicar el controlador que pueda conectarse a la base de datos representada en la URL.

Page 159: Curso Java Inacap

Taller Programación III

Java

159Profesor: Marcelo Montecinos C.

...Conexi...Conexióónn

Sintáxis de una URL JDBC:jdbc:<subprotocolo>:<subnombre><subprotocolo> es el nombre del controlador o del mecanismo de conexión. Ejemplo: odbc.<subnombre> es la identificación de la base de datos. El formato varia según el controlador especificado. Ejemplo: //servidor:puerto/etc

Page 160: Curso Java Inacap

Taller Programación III

Java

160Profesor: Marcelo Montecinos C.

Enviando sentencias SQLEnviando sentencias SQL

JDBC permite que se escriba cualquier tipo de sentencia SQL. Aunque ésta fuera dependiente de la base de datos sólo se correría el riesgo de incompatibilidad al cambiar de base de datos.

Llamadas a procedimientos almacenadosFormatos de fecha

Page 161: Curso Java Inacap

Taller Programación III

Java

161Profesor: Marcelo Montecinos C.

...Enviando sentencias SQL...Enviando sentencias SQL

JDBC provee 3 clases:“Statement”: Este objeto es usado para enviar sentecias SQL simples. Es creado por el método “createStatement”.“PreparedStatement”: Este objeto es usado para sentencias que requieren uno o más parámetros. La sentencia es precompilada y guardada para uso futuro.“CallableStatement”: Es usado para ejecutar procedimientos almacenados.

Page 162: Curso Java Inacap

Taller Programación III

Java

162Profesor: Marcelo Montecinos C.

TransaccionesTransacciones

Una transacción consiste en una o más sentencias que han sido ejecutadas y luego confirmadas (commit) o deshechas (rolled back)Auto-commit está predeterminado.Si Auto-commit está desactivado se debe usar los métodos “commit” o “rollback” explícitamente.

Page 163: Curso Java Inacap

Taller Programación III

Java

163Profesor: Marcelo Montecinos C.

Procesando respuestasProcesando respuestas

Las respuestas a las sentencias SQL se reciben en el objeto “ResultSet” que mantiene las filas.Este objeto provee el acceso a los datos de esas filas a través de un conjunto de métodos “get”, los cuales, a su vez, permiten el acceso a cada columna de estas filas.

Page 164: Curso Java Inacap

Taller Programación III

Java

164Profesor: Marcelo Montecinos C.

Cargando la clase del controlador JDBCCargando la clase del controlador JDBC

Ejemplo:Class.forName(”empresa.db.Driver");

Esto crea una instancia del controlador y llama al método “DriverManager.registerDriver”registrando este controlador en la lista de controladores disponibles para conexiones.

Page 165: Curso Java Inacap

Taller Programación III

Java

165Profesor: Marcelo Montecinos C.

Ejemplo de sentenciaEjemplo de sentencia

Connection con = DriverManager.getConnection (

"jdbc:odbc:nombre", "login", "password");

PreparedStatement pstmt = con.prepareStatement( “UPDATE tabla1 SET m=? WHERE x=?”);

pstmt.setString(1, "Hola"); for (int i = 0; i < 10; i++) {pstmt.setInt(2, i);int rowCount = pstmt.executeUpdate();

}

Page 166: Curso Java Inacap

Taller Programación III

Java

166Profesor: Marcelo Montecinos C.

Primer ejemplo bPrimer ejemplo báásicosico

Connection con = DriverManager.getConnection (

"jdbc:odbc:nombre", "login",

"password");Statement stmt = con.createStatement();ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");

while (rs.next()) {int x = rs.getInt("a");String s = rs.getString("b");float f = rs.getFloat("c");

}

Page 167: Curso Java Inacap

Profesor: Marcelo Montecinos C. 167

ClasesClases en Javaen Java

Page 168: Curso Java Inacap

Taller Programación III

Java

168Profesor: Marcelo Montecinos C.

Declaración de Clasesmodificador class nombreClase {

< declaración de campos >< declaración de métodos >

}

modificador puede ser public o nada; si la clase no pertenece a un paquete, ambas definiciones son equivalentes; si la clase pertenece a un paquete, entonces, si se declara public, la clase podrá utilizarse fuera del paquete, pero si no se declara public, sólo podrá utilizarse dentro del paquete

Page 169: Curso Java Inacap

Taller Programación III

Java

169Profesor: Marcelo Montecinos C.

Declaración de ObjetosnombreClase nombreObjeto;

nombreClase nombreObjeto1, nombreObjeto2, nombreObjeto3;nombreClase nombreObjeto = nombreOtroObjeto;nombreClase nombreObjeto = new nombreClase();

Ejemplo:clasePublica elObjeto;

clasePublica elObjeto1, elObjeto2, elObjeto3;clasePublica elObjeto4 = elObjeto;clasePublica elObjeto5 = new clasePublica();

Page 170: Curso Java Inacap

Taller Programación III

Java

170Profesor: Marcelo Montecinos C.

Declaraciones de Camposmodificadores tipo nombreCampo;

modificador puede ser: - private, accesible solo desde dentro de la propia clase- protected, accesible solo desde la propia clase, clases del mismo paquete o

subclases - public,accesible por todos- package,si no se especifica nada, es el modo por defecto, accesible solo desde el

propio paquete; si la clase no se encuentra dentro de un paquete, es equivalente a public.

Otros modificadores que se pueden añadir son:- static, indica que el campo pertenece a la clase, no a un objeto concreto- final, indica que dicho campo no puede ser sobreescrito en una subclasetipo es el tipo del campo (tipo primitivo o clase del objeto)nombreCampo es el nombre del campo

Page 171: Curso Java Inacap

Taller Programación III

Java

171Profesor: Marcelo Montecinos C.

Acceso a Camposobjeto.campo; // si campo no es staticnombreClase.campo; // si campo es static

elObjeto.doblePublico = 5.0;double doble = elObjeto.doblePublico;

Clase.doblePublicoEstatico = 7.0;Double doble = Clase.doblePublicoEstatico;

Page 172: Curso Java Inacap

Taller Programación III

Java

172Profesor: Marcelo Montecinos C.

Métodos de una ClaseSon los que tienen la responsabilidad de: - Entregar datos acerca del objeto- Modificar datos dentro del objeto (especialmente si las componenetesdel objeto no fueron declarados como public)- Crear un nuevo objeto (constructores)

Los métodos pueden ser públicos, privados o protegidos (public, private, protected), al igual que las compoenetes- pirvate: implica que pueden ser vistas sólo en la clase actual. Son invisibles incluso para clases derivadas de esta.- protected: implica que pueden ser vistas por las derivadas. Tambienson vistas dentro del paquete (agrupación de clases en un archivo). Este es eldefault.- public:son vistas desde cualquier lado.

Page 173: Curso Java Inacap

Taller Programación III

Java

173Profesor: Marcelo Montecinos C.

Declaración de Métodosmodificador tipo nombreMetodo(<lista de parametros formales>) {

< cuerpo del método; campos e instrucciones >return expresion; // solo métodos que devuelven resultado

}<lista de parametros formales> = (tipo campo, tipo campo, ...)

modificador significa lo mismo que para los campos.

tipo es el tipo devuelto por el método, puede ser:

- void si el método no devuelve nada

- un tipo primitivo

- una clase

nombreMetodo es el nombre del método

Page 174: Curso Java Inacap

Taller Programación III

Java

174Profesor: Marcelo Montecinos C.

Ejemplo de Clasepublic class Clase {

private int enteroPrivado;static private int enteroEstaticoPrivado;public void estableceEntero(int entero) {

enteroPrivado = entero;}public int recuperaEntero() {

return entero;}static public void estableceEnteroEstatico(int entero) {

enteroEstaticoPrivado = entero;}static public int recuperaEnteroEstatico() {

return enteroEstatico;}

}

Page 175: Curso Java Inacap

Taller Programación III

Java

175Profesor: Marcelo Montecinos C.

Llamadas a Métodosmetodo(<lista parametros reales>); // metodos de la propia clase

objeto.metodo(<lista dparametros reales>); // metodos no estaticosnombreclase.metodo(<lista parametros reales>); //metodos estaticos

Ejemplo:

elObjeto.estableceEntero(7);int entero = elObjeto.recuperaEntero();

Clase.estableceEnteroEstatico(8);int entero = Clase.recuperaEnteroEstatico();

Page 176: Curso Java Inacap

Taller Programación III

Java

176Profesor: Marcelo Montecinos C.

Declaración de Métodos Constructores

modificadores nombreClase(<lista argumentos formales>) {< cuerpo del método constructor >

}

Ejemplo:public class Clase {

private int enteroPrivado;public Clase() {

enteroPrivado = 0;}public Clase(int entero) {

enteroPrivado = entero;}

}

Page 177: Curso Java Inacap

Taller Programación III

Java

177Profesor: Marcelo Montecinos C.

Llamadas a Métodos Constructores

nombreClase objeto = new nombreClase(<lista parametros reales>);

Ejemplo:Clase elObjeto;

elObjeto = new Clase();

O en una sola línea:Clase elObjeto = new Clase();Clase elObjeto = new Clase(5);

Page 178: Curso Java Inacap

Taller Programación III

Java

178Profesor: Marcelo Montecinos C.

Modelo de un Programapublic class nombrePrograma {

public static void main(String[] args) {< cuerpo del programa >

}}

Page 179: Curso Java Inacap

Taller Programación III

Java

179Profesor: Marcelo Montecinos C.

Herenciamodificadores class nombreClase extends nombreClaseQueExtiende {

}

Ejemplopublic class ClaseExtendida extends Clase {}

Una clase que extiende otra, se llama subclase o clase hija, mientras que la clase a la que extiende (la original) se llamasuperclase o clase paterna.La subclase hereda los miembros (propiedades y métodos) de la superclase.

Page 180: Curso Java Inacap

Taller Programación III

Java

180Profesor: Marcelo Montecinos C.

Cambio de tipoCualquier objeto de una subclase puede ser asignado a un objeto de su superclase.Cualquier objeto de una superclase puede ser asignado a una subclase con una conversión explícita (cambio de tipo).

ClaseExtendida elObjetoExtendido = new ClaseExtendida();

Clase elObjeto = laClaseExtendida;

ClaseExtendida elObjetoExtendido = (ClaseExtendida)elObjeto;

Page 181: Curso Java Inacap

Taller Programación III

Java

181Profesor: Marcelo Montecinos C.

Superconstrucciónmodificadores class nombreclase extends nombreClaseQueEstiende {

public nombreClase(<lista de parametros formales>) {super(<lista de parametros reales>);

<instrucciones de inicializacion>}

}

Importante: La llamada al superconstructor debe ser la primera instrucción de un constructor.

Page 182: Curso Java Inacap

Taller Programación III

Java

182Profesor: Marcelo Montecinos C.

Ejemplo de Superconstrucciónpublic class Clase {

private int enteroPrivado;public Clase(int entero) {

enteroPrivado = entero;}

}

public class ClaseExtendida extends Clase {private double doblePrivado;public ClaseExtendida(int entero, double doble) {

super(entero);doblePrivado = doble;

}}

Page 183: Curso Java Inacap

Taller Programación III

Java

183Profesor: Marcelo Montecinos C.

Variables Enmascaradaspublic class Clase {

public int dato;}public class ClaseExtendida extends Clase {

public double dato;public estableceDatos(int entero, double doble) {

super.dato = entero;dato = doble;

}Clase elObjeto = new Clase();ClaseExtendida elObjetoExtendido = new ClaseExtendida();elObjeto.dato = 5; // es un valor enteroelObjetoExtendido.dato = 6.4; // es un valor dobleelObjetoExtendido.estableceDatos(3,7.8);

Page 184: Curso Java Inacap

Taller Programación III

Java

184Profesor: Marcelo Montecinos C.

Sobreescritura de Métodospublic class Clase {

public int dato;public estableceDato(int entero) {

dato = entero;

}}

public class ClaseExtendida extends Clase {

public int datoExtendido;public estableceDato(int entero) {

super.estableceDato(entero);

datoExtendido = entero*2;}

Page 185: Curso Java Inacap

Taller Programación III

Java

185Profesor: Marcelo Montecinos C.

MMéétodos en todos en JavaJava

Page 186: Curso Java Inacap

Taller Programación III

Java

186Profesor: Marcelo Montecinos C.

Métodos

La mejor forma de La mejor forma de crear y mantener un crear y mantener un programa grande, es programa grande, es construirlo a partir de construirlo a partir de piezas mpiezas máás peques pequeññas o as o mmóódulos. dulos. Cada uno de los cuales Cada uno de los cuales es mes máás manejable que s manejable que el programa en su el programa en su totalidadtotalidad

Page 187: Curso Java Inacap

Taller Programación III

Java

187Profesor: Marcelo Montecinos C.

Métodos

Los mLos méétodos tambitodos tambiéén son n son utilizados para evitar la utilizados para evitar la repeticirepeticióón de cn de cóódigo en un digo en un programa al poder ejecutarlo programa al poder ejecutarlo desde varios puntos de un desde varios puntos de un programa con sprograma con sóólo invocarlo.lo invocarlo.

Page 188: Curso Java Inacap

Taller Programación III

Java

188Profesor: Marcelo Montecinos C.

Métodos

Esta técnica de descomposición se denomina Divide y vencerás.

Los módulos (subprogramas) en Java se denominan métodos.

Un método se invoca ,es decir, se le pide realizar su tarea designada con una llamada de método.

Page 189: Curso Java Inacap

Taller Programación III

Java

189Profesor: Marcelo Montecinos C.

La llamada a mLa llamada a méétodos especifica el nombre del todos especifica el nombre del mméétodo y proporciona la informacitodo y proporciona la informacióón (en n (en forma de forma de argumentosargumentos) cuando el m) cuando el méétodo lo todo lo necesite para hacer su trabajonecesite para hacer su trabajo

Métodos

El formato de una definición de método es:

static tipo-de-valor-devuelto nombredelmétodo(lista-param)

{

declaraciones y sentencias

}

Page 190: Curso Java Inacap

Taller Programación III

Java

190Profesor: Marcelo Montecinos C.

Métodos

Casi todos los métodos tienen una lista de parámetros; los parámetros de un método también son variables locales.

Es recomendable limitar los métodos a realizar una sola tarea bien definida y el nombre del método debe expresar efectivamente dicha tarea.

Page 191: Curso Java Inacap

Taller Programación III

Java

191Profesor: Marcelo Montecinos C.

Métodos

El nombre es cualquier identificador válido.

El tipo-de-valor-devuelto es el tipo de es el tipo de dato del resultadodato del resultado, que el método devuelve al invocador.

El tipo-de-valor-devuelto void indica que el método no devuelve ningún valor, es un procedimiento.

Page 192: Curso Java Inacap

Taller Programación III

Java

192Profesor: Marcelo Montecinos C.

Métodos

Omitir el tipo-de-valor-devuelto en una definición de método causa un error de sintaxis.

Olvidar devolver un valor desde un método que se supone debe devolver un valor es un error de sintaxis.

Page 193: Curso Java Inacap

Taller Programación III

Java

193Profesor: Marcelo Montecinos C.

Métodos

Si se especifica un tipo-de-valor-devuelto distinto de void el método debe contener una sentencia return.

Devolver un valor de un método cuyo tipo devuelto se ha declarado void causa un error de sintaxis.

Page 194: Curso Java Inacap

Taller Programación III

Java

194Profesor: Marcelo Montecinos C.

Todas las variables declaradas en las definiciones de los métodos son variables locales; solo se conocen en el método en el que se definen.

Métodos

static int SumarNum(int ee)

{

e+=e;

System.out.println(++e);

return e; //Este método retorna un valor

}

Page 195: Curso Java Inacap

Taller Programación III

Java

195Profesor: Marcelo Montecinos C.

Métodos

La lista-de-parámetros es una lista separada por comas que contiene las declaraciones de los parámetros que el método recibe cuando es invocado.

Si un método no recibe valores, se coloca un juego de paréntesis vacío ( ) después del nombre del método.

Page 196: Curso Java Inacap

Taller Programación III

Java

196Profesor: Marcelo Montecinos C.

Declarar parámetros para un método que poseen el mismo tipo float x,y en lugar de float x, float y producirá un error de compilación porque se requiere un tipo para cada parámetro.

Colocar punto y coma después del paréntesis que encierra la lista de parámetros es un error de sintaxis.

Métodos

Esta es una declaración de un método que contiene 2 errores.staticstatic voidvoid Calcular (Calcular (floatfloat x,yx,y));;

Page 197: Curso Java Inacap

Taller Programación III

Java

197Profesor: Marcelo Montecinos C.

Definir una variable local de un método igual que un parámetro es un error de sintaxis.

Métodosclass CCmporvalor

{public static void main(String args[]){

int a=10;System.out.println(a);SumarNum(a); System.out.println(a);

}

static int SumarNum(int e){

e+=e;System.out.println(e);return e; //Este método retorna un valor

}}

Ejemplo:

Page 198: Curso Java Inacap

Taller Programación III

Java

198Profesor: Marcelo Montecinos C.

Definir un método dentro de otro es un error de sintaxis.

Existen tres formas de devolver el control al punto en el que se invocó un método:

a)a) Si el método no devuelve un resultado el control se devuelve cuando se llega a la llave derecha que termina el método.

b)b) Al ejecutarse la sentencia return también, si el método NO devuelve ningún resultado.

c) c) return expresión;

Métodos

Page 199: Curso Java Inacap

Taller Programación III

Java

199Profesor: Marcelo Montecinos C.

EjemploEjemplo

Page 200: Curso Java Inacap

Taller Programación III

Java

200Profesor: Marcelo Montecinos C.

Entrada: v1,v2,v3 :numéricos

Inicio Programa Principal

V1,v2,v3,promn,mayor:numéricos

Procesar Procesar IntroDatosIntroDatos //Llamada a un subprograma tipo procedimiento

promnpromn Procesar Procesar CalpromCalprom //Llamada a un subprograma tipo función

Procesar Procesar Imprime(promnImprime(promn))

Mostrar (“El mayor es “ mayor ProcesarProcesar MaxMax)

Terminar Programa Principal

Page 201: Curso Java Inacap

Taller Programación III

Java

201Profesor: Marcelo Montecinos C.

class CPrueba //Clase (Programa)

{

static int v1,v2,v3;//Números enteros declarados en forma Global

public static void main (String args[ ]) //Método principal

{

float prom;

IntroDatos(); //Llamada a un método que no devuelve nada

prom=CalcProm(); //Llamada a un método tipo función

Imprime(prom); //Llamada a un método con pase de parámetros

System.out.println("El mayor: "+ Max( ));

}

Page 202: Curso Java Inacap

Taller Programación III

Java

202Profesor: Marcelo Montecinos C.

Inicio IntroDatos

Mostrar (“Introduce el primer valor v1”)

Leer v1

Mostrar (“Introduce el segundo valor v2”)

Leer v2

Mostrar (“Introduce el tercer valor v3”)

Leer v3

Regresar

Page 203: Curso Java Inacap

Taller Programación III

Java

203Profesor: Marcelo Montecinos C.

static void IntroDatos() //Método que no devuelve ni recibe nada

{

System.out.println("introduce el valor V1: ");

v1=CTeclado.ReadInt( );

System.out.println("introduce el valor V2: ");

v2=CTeclado.ReadInt( );

System.out.println("introduce el valor V3: ");

v3=CTeclado.ReadInt( );

}

Page 204: Curso Java Inacap

Taller Programación III

Java

204Profesor: Marcelo Montecinos C.

Inicio Calcprom

aux: numérico

aux (v1+v2+v3)/3

Retornar aux

Inicio Imprime(valor)

valor:numérico

Mostrar (“Promedio”)

Mostrar (valor)

Regresar

Page 205: Curso Java Inacap

Taller Programación III

Java

205Profesor: Marcelo Montecinos C.

static float CalcProm( ) //Método que devuelve un valor{

float aux;aux=(v1+v2+v3)/3; //V1,V2,V3 variables globalesreturn aux; // Valor que retorna el método

}

static void Imprime(float valor)//Observe el cambio de nombre{

System.out.print("Promedio: ");System.out.println(valor);

}

Page 206: Curso Java Inacap

Taller Programación III

Java

206Profesor: Marcelo Montecinos C.

Inicio Max

aux:numérico

aux 0

Si ((v1>=v2)and (v1>=v3)) entonces

Aux v1

Si ((v2>=v1)and(v2>=v3))entonces

Aux v2

Si ((v3>=v1)and(v3>=v2))entonces

Aux v3

Retornar aux.

Page 207: Curso Java Inacap

Taller Programación III

Java

207Profesor: Marcelo Montecinos C.

static int Max() // Método que retorna un valor {

int aux=0;

if((v1>=v2)&&(v1>=v3)) {

aux=v1;}if((v2>=v1)&&(v2>=v3)) {

aux=v2;}if((v3>=v1)&&(v3>=v2)) {

aux=v3;}

return aux;}

//V1,V2,V3 variables globales

Page 208: Curso Java Inacap

Taller Programación III

Java

208Profesor: Marcelo Montecinos C.

Propiedades de los Objetos

Objetos nulos: null

El identificador this

public class Clase {private int entero;

public Clase(int entero) {this.entero = entero;

}

}

Page 209: Curso Java Inacap

Taller Programación III

Java

209Profesor: Marcelo Montecinos C.

Objetos vs Variables

- Una variable tiene memoria para un solo valor y dispone de un conjunto predefinido de operaciones según sea su tipo.

- Un objeto tiene memoria para un grupo de varios valores, junto con un conjunto coherente de métodos que operan sobre esos valores. Tanto métodos como valores están encapsulados en la clase de la que se ha obtenido el objeto.

Page 210: Curso Java Inacap

Taller Programación III

Java

210Profesor: Marcelo Montecinos C.

La superclase Object

En Java, todas las clases son subclases de una clase especial llamada Object.Java alcanza la generalidad utilizando objetos de diferentes clases en las mismas partes del programa, pero todos ellos pertenecen a la claseObject.

Page 211: Curso Java Inacap

Taller Programación III

Java

211Profesor: Marcelo Montecinos C.

Igualdad de Objetosmodificador class nombreClase {

public boolean equals() {< instrucciones para comparar con los campos de obj >return resultado de la comparacion;

}}

Ejemplo:public class Clase {

private int entero;public boolean equals(Clase c) {

return (c.entero==entero);}

}

Page 212: Curso Java Inacap

Taller Programación III

Java

212Profesor: Marcelo Montecinos C.

Asignación de Objetosmodificador class nombreClase implements Cloneable {

public Object clone() {nombreClase obj = new nombreClase(parametros);< instrucciones para copiar los campos a obj >return obj;

}}

public class Clase implements Cloneable {private int entero;public Object clone() {

Clase c = new Clase();c.entero = entero;return c;

}}

Page 213: Curso Java Inacap

Taller Programación III

Java

213Profesor: Marcelo Montecinos C.

Arrays

Declaración e instanciación de un array de n enteros:int miArray[];miArray = new int[n];

Lo mismo en una sola línea:int miArray[] = new int[n];

Declaración e instanciación de un array de n objetos:MiClase miArray[] = new MiClase[n];for(int i=0;i<n;i++) miArray[i] = new MiClase();

Page 214: Curso Java Inacap

Taller Programación III

Java

214Profesor: Marcelo Montecinos C.

Conversiones de Clase

El método clone invocado sobre clase2devuelve un objeto de la clase Object. Esto debe ser así, porque lo exige la interfaz Cloneable. Para convertirlo de nuevo a Clase necesitamos la conversión explícita de tipo.

Clase objeto1 = (Clase)objeto2.clone();

Page 215: Curso Java Inacap

Taller Programación III

Java

215Profesor: Marcelo Montecinos C.

Paquetes

Paquetes Java más importantes:- lang – para funciones del lenguaje;- util – para utilidades adicionales;- io – para entrada y salida;- text – para formateo especializado;- awt – para gráficos e interfaz gráfica de usuario

Para acceder a cualquiera de estos paquetes, excepto lang que está siempre disponible, usamos el siguiente modelo:

import java.nombrepaquete.*;

Page 216: Curso Java Inacap

Taller Programación III

Java

216Profesor: Marcelo Montecinos C.

Paquetes

package nombrePaquete;modificador class nombreClase {

< declaracion de la clase >}

Importante: Si deseamos que una clase sea utilizada fuera de su paquete, deberemos declararla como public.

Page 217: Curso Java Inacap

Taller Programación III

Java

217Profesor: Marcelo Montecinos C.

InterfacesUna interfaz es una forma especial de una clase que consisteexclusivamente de declaraciones de métodos abstractos y constantes. En vez de la palabra clave “class” las interfaces tienen la palabra“interface”. Todos los métodos declarados son abstractos. Esto implicaque tienen que ser implementadas por alguna clase que use estainterfaz. Ej.

public interface ObjetoGrafico {public final int MaxAncho = 800;public final int MaxAalto = 600;

public void trasladar(int x, int y);public void escalar(float p);public boolean visible();etc...

}

Page 218: Curso Java Inacap

Taller Programación III

Java

218Profesor: Marcelo Montecinos C.

Interfaces (2)La interfaz funciona como un protocolo: cualquier clase que ocupoe la interfaz debe implementar todos los métodos que la interfaz declara.

public class MiOjetosGrafico1 implements ObjetoGrafico{private int origenX, origenY, ancho, alto;private estaVisible;

public void trasladar(int x, int y) {if (origenX+x <= MaxAncho)

origenX += x;else ....if (origenY+y <= MaxAlto)

origenY +=y;else ......

}public void escalar(float p){ ......}public boolean visible(){ .......}etc...

}

Page 219: Curso Java Inacap

Taller Programación III

Java

219Profesor: Marcelo Montecinos C.

Interfaces(3)A estas alturas nos deberíamos estar preguntando por qué no lo hicimos

con clases abstractas, acaso no es lo mismo ? NO!!!!Si quisieramos hacer una clase abstracta entonces los objetos gráficos

están obligados a ser derivados de esta única clase abstracta (Java no permite múltiple herencia). En muchos casos querríamos que losobjetos gráficos fueran heredados de otras clases (incluso distintasclases para distintos objetos gráficos) pero que todos tuvieran la mismainterfaz.

Page 220: Curso Java Inacap

Taller Programación III

Java

220Profesor: Marcelo Montecinos C.

Interfaces(4)O sea que las interfaces definitivamente no sirven paraimplementar herencia múltiple ? SI y No:Una clase solo puede heredar constantes de la interfazUna clase no puede heredar implementaciones de unainterfazUna interfaz se puede usar como una claseUna interfaz puede ser una extensión de una claseabstracta, con lo cual se heredan características de otraclase más:

Ej: public interface ObjetoGrafico extends ObjetoGeometricopublic class ComponenteGrafica extends JPanel

implements ObjetoGráfico:

Page 221: Curso Java Inacap

Taller Programación III

Java

221Profesor: Marcelo Montecinos C.

Haciendo más de una cosa a la vez: Threads

Un thread es una secuencia o flujo de de instrucciones que se ejecutandentro de un programa. Tiene un comienzo y un fin. Entonces qué diferenciatiene con un proceso ? El thread sólo puede ser creado dentro de un proceso. Y un proceso(programa) puede crear varios threads dentro de él que se ejecutan en paralelo.Entonces, qué diferencia tiene con multiprocesos a la UNIX ? (para los queprogramaron en C, qué los difiere del fork ?)El programa principal está “conciente” de los threads que existen, hay variables que los identifican. Pueden ser creados, inicializados, sustendidos, reactivados o parados por el el programa que los creó. El programa principal puede darles parámetros distintos a cada thread. Los thread se pueden programar con la canatidad de variables necesarias parasu ejecución (no lo heredan TODO)

Page 222: Curso Java Inacap

Taller Programación III

Java

222Profesor: Marcelo Montecinos C.

El método run de la clase Thread

Los threads son una clase existente. Lo que un thread en particular hace cuando se echa a correr se debe escribir en el método run de la clase thread, que es un método que se debe escribir siempre.Hay dos formas de implementar Threads en Java (quecoincide con las dos formas vistas de implementar métodosdefinidos):

Crear una nueva clase que extienda la clase abstractaThread e implementar el método abstracto run.Implementar la interfaz runnable, lo cual implica que se va a reescribir el método run.

La razón para escoger una u otra forma es simplemente siqueremos que la clase que implementa el thread sea además extendida de otra clase (aparte de la clase thread).

Page 223: Curso Java Inacap

Taller Programación III

Java

223Profesor: Marcelo Montecinos C.

public class SimpleThread extends Thread {public SimpleThread(String str) {

super(str);}

public void run() {for (int i = 0; i < 10; i++) {

System.out.println(i + " " + getName());try {

this.sleep((int)(Math.random() * 1000));} catch (InterruptedException e) {}

}System.out.println("DONE! " + getName());

}}

El método this.sleep(milisegundos) debe ir en un bloque try and catch

Page 224: Curso Java Inacap

Taller Programación III

Java

224Profesor: Marcelo Montecinos C.

La forma extendida de Thread(2)

public class TwoThreadsTest {public static void main (String[] args) {

new SimpleThread("Jamaica").start();new SimpleThread("Fiji").start();

}}

El método start() inicia la ejecucón de un thread. Estoimplica que se empieza a ejecutar el código escrito en el método run del thread. También existen otros métodos quese le pueden aplicar a un thread: suspend(), resume(), stop().

Page 225: Curso Java Inacap

Taller Programación III

Java

225Profesor: Marcelo Montecinos C.

Implentación haciendo interface

public class MiThread2 implements Runnable {public void run() {

int i = 0; while(true)

System.out.println(i++);}

}

public class TestThread {public static void main(String args[])

{b = new MiThread2(); Thread t = new

Thread(b);t.start();for (int i=0; i<1000; i++);t.stop();

}}

Page 226: Curso Java Inacap

Taller Programación III

Java

226Profesor: Marcelo Montecinos C.

Usando threads para atender clientes de un Servidor de Sockets

La forma de implementar servidores que atiendan a varios clientesparalelamente a la vez es combinando threads con socketsEl servidor abre un ServerSocket desde donde oye ciualquier intento porconectarse con él de un cliente.Una vez establecida la conexión, abre un socket normal e inicia un thread queatiende a este cliente. El socket abierto se pasa como parámetro. De esamanera puede seguir oyendo por el ServerSocket sin estar bloqueado.El thread tiene un método run que atiende los pedidos del clienteEl cliente se conecta al servidor sin saber que finalmente será un socket el queestá atendiéndolo.Si el protocolo de atención especifica la manipulación de datos comunes (porejemplo a un archivo con información sobre cuentas corrientes), hay que tenercuidado con los accesos concurrentes a estos datos (métodos synchronized).

Page 227: Curso Java Inacap

Taller Programación III

Java

227Profesor: Marcelo Montecinos C.

Ejemplos de programas interesantes

El programa MultiServer.java es el del servidor que establece el ServerSocket y se queda oyendo para ver si viene un cliente. Si llega un cliente crea un socket y un nuevo thread, al cual le pasa el socket, para quesea atendido. El server siguie esperando clientes en el ciclo.El programa MultiServerThread es el thread que atiende al cliente. En estecaso sólo manda dos strings, uno avisándole que número de cliente es el otro para despedirse.El programa Client.java se comunica con el servidor y lee los dos strings desde el socket establecido, los cuales los imprime en pantalla.El programa Syncron.java muestra como debe declararse un método al cualacceden varios threads de modo que no se produzca problema de accesoindebido (más de un thread puede obtener el mismo número!!)Los programas DateServer y DateClient muestran como se pueden traspasarobjetos facilmente por un socket (siempre que estos sean serializables)

Page 228: Curso Java Inacap

Taller Programación III

Java

228Profesor: Marcelo Montecinos C.

Objetos Remotos en JAVA

La tecnología RMI (Remote Method Invocation) permite a un programacorriendo en una máquina virtual de java (un intérprete) invocar el métodode un objeto localizado en otra máquina virtual de java (ubicada en cualquier parte de la red TCP/IP que se pueda acceder desde el lugar)Normalmente se tiende a ver aplicaciones que usan RMI como aplicacionesde cliente servidor. Una típica aplicación de servidor crea un objeto, lo “publica” para que pueda ser accesible de cualquier otro lado y espera a quellamen clientes pidiendo la invocación de sus métodos. Una típica aplicacióncliente obtiene una referencia al objeto remoto en el servidor y luego invocasus métodos como si fuera un objeto local. RMI provee mecanismos con los cuales el cliente y el servidor se puedenintercambiar información, convirtiendolas en aplicaciones de objetosdistribuidos. Estos mecanismos deben hacer posible: 1) localizar objetosremotos, 2) comunicarse con los objetos remotos 3) traspasar el código de los objetos remotos (deben ser serializables)

Page 229: Curso Java Inacap

Taller Programación III

Java

229Profesor: Marcelo Montecinos C.

Interfaces, objetos y métodosremotos

Como en otras aplicaciones, una aplicación distribuida que usa RMI estáconstituida por interfaces y clases. Las interfaces definen los métodosque serán conocidos por los clientes de los objetos remotos. Las clasesremotas implementan estos y quizas otros métodos también. Un objeto remoto se implementa siguiendo los siguientes pasos:

1) Diseño e implementación de las componentes de la aplicación distribuida2) Compilar los códigos fuentes y generar los llamados “stubs” y skeletons3) echar a andar la aplicación

Page 230: Curso Java Inacap

Taller Programación III

Java

230Profesor: Marcelo Montecinos C.

Diseñar e implementar lascomponentes de la aplicación

Definir las interfaces remotas: Una interfaz remotaespecifica los métodos que pueden ser invocados en forma remota por un cliente. Los clientes conoceránlos objetos remotos sólo a través de las interfaces. Implementación de los objetos remotos: los objetosremotos deben implementar una o más interfaces remotas. Además pueden implementar otros métodosque no corresponden a las interfaces remotas y queson de uso local. Implementar los clientes: Los clientes que usan losobjetos remotos se pueden implementar una vez quelas interfaces remotas están definidas.

Page 231: Curso Java Inacap

Taller Programación III

Java

231Profesor: Marcelo Montecinos C.

Un ej: Un objeto remoto quecontiene un número

//el archivo de definición de la interfaz

import java.rmi.*;public interface Numero extends Remote {

public int getNumero() throws RemoteException;}

Este es la definición de la interfaz: implica que los clientessólo conocerán el método getNumero() de el objeto remoto. Para los clientes la clase de este objeto es Numero, no importa cómo lo haya llamado en el archivo de implementación del tipo de objeto.

Page 232: Curso Java Inacap

Taller Programación III

Java

232Profesor: Marcelo Montecinos C.

Un ej: Un objeto remoto(2)

//el archivo de definición de la implementaciónimport java.rmi.*;import java.rmi.server.UnicastRemoteObject;

public class NumeroImpl extends UnicastRemoteObject implements Numero

{ int cont = 0;

public int getNumero() throws RemoteException {int ret = cont++;return ret;

}

public static void main(String args[]) {System.setSecurityManager(new RMISecurityManager());try { NumeroImpl n = new NumeroImpl();

Naming.rebind("//"+args[0]+"/elNumero",n);System.out.println("Numero creado");

} catch (Exception e) {}}

}

Page 233: Curso Java Inacap

Taller Programación III

Java

233Profesor: Marcelo Montecinos C.

Aclaración: Existe un servidor de comunicaciones !!!!

Es un programa que provee java llamado rmiregistrySe echa a correr en la máquina donde está el programa servidor del objeto remotoCualquier cliente que quiera ocupar el objeto remoto debe pedirle a él unareferencia al objeto remoto antes de ocuparlo => debe saber con quénombre se registró y en qué máquina esta corriendo.

Cliente

rmiregistry

servidor

Internet Naming.rebind(1)

Naming.lookup(2)

Objeto.metodo() (3)

Page 234: Curso Java Inacap

Taller Programación III

Java

234Profesor: Marcelo Montecinos C.

Un ej: Un objeto remoto quecontiene un número(3)

//el archivo del cliente

import java.rmi*;import java.rmi.server.*;

class ClienteNumero {public static void main(String args[]) {

try {Numero N = (Numero) Naming.lookup("//"+args[0]+"/elNumero");

System.out.println("El numero vale ahora "+N.getNumero();} catch( Exception e) {}

}}

Page 235: Curso Java Inacap

Taller Programación III

Java

235Profesor: Marcelo Montecinos C.

Compilar los códigos fuentes y generarlas clases y los llamados “stubs” y skeletons

Una vez implementados las 3 clases hay que compilarlas paragenerar

Numero.class: la interfaz que define lo que se conocerá del objeto en toda la red.NumeroImpl.class: que es el que implementa el objeto remoto. Además de implementar el constructor y el método de la interfazcontiene un main que lo único que hace es crear el objeto y registrarlo o publicarlo con un nobre dado.Cliente.classEsto se hace con el compilador javac

Page 236: Curso Java Inacap

Taller Programación III

Java

236Profesor: Marcelo Montecinos C.

Compilar los códigos fuentes y generarlas clases y los llamados “stubs” y skeletons(2)

Una vez generadas las 3 clases hay que compilar la clase implementadorapara generar el stub y skel.

NumeroImpl_stub.class: Es el llamado stub del objeto remoto. Es el encargado de recibir y transmitir los datos necesarios para servir a losclientes que piden acceso al objeto remoto NumeroImpl.NumeroImpl_skel.class: es como un esqueleto de la clase. Tiene sólo la estructura de la clase pero es suficiente información para que el clientepueda reunir todo los antecedentes para llegar a hacer un pedido al stubEsto se hace con el compilador rmic NumeroImpl

Page 237: Curso Java Inacap

Taller Programación III

Java

237Profesor: Marcelo Montecinos C.

Echar a andar la aplicación

Echar a correr rmiregistry: java rmiregistryEchar a correr el programa servidor de objetoremoto: java NumeroImplEchar a correr cliente(s): java Cliente.Una vez obtenida la referencia por el cliente el flujode datos corre: cliente -> skel->stub->Server->stub->skel->clienteVeamos una aplicación más interesante: Un Banco: los clientes son un ejecutivo de cuentas y un clientecualquiera. El servidor tiene la info sobre las cuentas.

Page 238: Curso Java Inacap

Taller Programación III

Java

238Profesor: Marcelo Montecinos C.

Networking con Java (introducción)

Java es un lenguaje que nace cuando la internet está en plenodesasarrollo.Los diseñadores de java ya saben que se necesita un lenguaje queapoye la programación distribuida en la internet con protocolos TCP/IPEs importante contar con un lenguaje que sea independiente de la plataforma para programar las comunicaciones entre dos procesos, yaque la internet también es independiente de la plataforma.Java implementa una serie de clases que apoyan estoindependientemente de la plataforma (URL, sockets, RMI, IDL-CORBA, JDBL. Veamos un par de ellas:

Page 239: Curso Java Inacap

Taller Programación III

Java

239Profesor: Marcelo Montecinos C.

Los URLUn URL es un UNIFORM RESOURCE LOCATOR. Consiste en una dirección de un recurso que un servidor en la internet pone a disposición de los usuarios, como por ej. http://www.arminco.comEn un objeto URL existen dos componentes principales: El descriptor de protocolo (ej. http) y el nombre del recurso(ej. www.arminco.com). http significa Hyper Text Transfer protocol pero hay otros protocolos de transferencia de datosen la internet como: el File Transfer protocol (ftp), Gopher, File o News. En java es posible abrir una direccion de URL leer el contenido como si fuera un archivo cualquiera. Para ellodebemos crear un objeto URL, con el nombre del protocoloy la dirección del recurso que queremos recuperar.

Page 240: Curso Java Inacap

Taller Programación III

Java

240Profesor: Marcelo Montecinos C.

Los URL (2)Existen varios constructores de URL:

URL unRUL = new URL(“http://www.arminco.com/index.html”);unURL = new URL(“http”;”www.arminco.com”,”index.html”);inURL = new URL(“http”,”www.arminco.com”,80,”index.html”);

Al crear una variable URL se puede producir una excepcion del tipoMalformedURLException por eso se deben tomar las medidas necesarias(como por ej: usar un bloque try-catch)try {

URL miURL = new URL(....); }catch(MalFormedURLException e) {

// codigo para atrapar la exception}Métodos que se pueden aplicar a un objeto de la clase URL:

getProtocol(), getHost(), getPort(), getFile(), openConnection()

Page 241: Curso Java Inacap

Taller Programación III

Java

241Profesor: Marcelo Montecinos C.

Leyendo el contenido de un URL Si sabemos a priori que el contenido de un URL es texto podemos leerlo de la siguiente manera:import java.net.*;import java,io.*;public class Leer URL {

public static void main(String args[]) {try {

URL miURL = new URL(“http://www.dcc.uchile.cl”);URLConnection c = miURL.openConnection();BufferedReader in = new BufferedReader (

new InputStreamReader(c.getInputStream()));

String line;while ((line = in.readLine() != null)

System.out.prinln(line);c.close();

catch(MalFormedURLException e) { }}

}

Page 242: Curso Java Inacap

Taller Programación III

Java

242Profesor: Marcelo Montecinos C.

Los Sockets

Sockets se pueden describir como dos puntos que arman un puentede transporte de datos entre dos programas. Dos programaspueden establecer gracias a los sockets una comunicación segura(hay recuperación de errores de transmisión). Un proggrama puedeleer datos de un socket (lo que otro pragrama escribió) o puedeescribir datos en un socket ( para que lo lea otro programa)En una comunicación entre dos programas con sockets siempre hay un servidor y un cliente. El servidor es el que primero establece la posibilidad de comunicación y se queda escuchando a ver si hay alguien que quiere comuncarse con el por medio de este socket.El cliente es un programa que, sabiendo que hay un programa servidorescuchando, se conecta al socket del servidor y escribe y/o lee de el.

Page 243: Curso Java Inacap

Taller Programación III

Java

243Profesor: Marcelo Montecinos C.

Servlets

Base de datos

Servidor

Cliente

Page 244: Curso Java Inacap

Taller Programación III

Java

244Profesor: Marcelo Montecinos C.

Servlets

Programas que se ejecutan en los servidores.Añaden funcionalidad a un servidor web, del mismo modo que los applets añaden funcionalidad a los navegadores.

Similares a los scripts CGI, salvo que ofrecen una independencia de la plataforma.

⇒ A diferencia de mecanismos propietarios (tales como la API de Netscape Server o módulos de Apache), son independientes del servidor y de la plataforma.

Page 245: Curso Java Inacap

Taller Programación III

Java

245Profesor: Marcelo Montecinos C.

Cuándo se suelen utilizar

La página web se basa en datos que proporciona el usuario.

Ejemplo: e-commerce sites.Los datos cambian frecuentemente.

Ejemplo: Partes meteorológicos.La página web utiliza información de BDs u otras fuentes.

Ejemplo: Aplicaciones comerciales.

Page 246: Curso Java Inacap

Taller Programación III

Java

246Profesor: Marcelo Montecinos C.

Applets

cliente

NAVEGADORWEB

MÁQUINA VIRTUAL JAVA

El usuario pide un applet en java

Llega un applet en java

Arranca la máquinaVirtual de java ySe ejecuta el applet

servidor

Page 247: Curso Java Inacap

Taller Programación III

Java

247Profesor: Marcelo Montecinos C.

Servlets

Base de datos

Servidor

Cliente

Page 248: Curso Java Inacap

Taller Programación III

Java

248Profesor: Marcelo Montecinos C.

Servlets. Requisitos

El servidor debe tener una máquina virtual Java.El servidor debe soportar la API de los servlets Java.

JavaServer Web Development Kit (JSWDK). http://java.sun.com/products/servlet/

Servidores capaces de ejecutar servlets:Java Web ServerNetscape Fast Track y EnterpriseO’Reilly WebSite ProfessionalLotus Domino Go WebServerNovel IntraNetWareIBM Internet Connection ServerOtros

Page 249: Curso Java Inacap

Taller Programación III

Java

249Profesor: Marcelo Montecinos C.

Ejecución de un servlet

Formas de iniciar la ejecución:Introducir la dirección URL del servlet en un navegador web.Llamar al servlet desde una página web.Ejecutar un servlet llamándolo desde otro servlet.

Page 250: Curso Java Inacap

Taller Programación III

Java

250Profesor: Marcelo Montecinos C.

Desde un navegador web

http://nombre_maquina:puerto/ruta_servlet/nombre_servletLas llamadas a servlets pueden contener parámetros:

http://www.datsi.fi.upm.es/~mperez/servlets/serv1?num1=3&num2=4

Page 251: Curso Java Inacap

Taller Programación III

Java

251Profesor: Marcelo Montecinos C.

Desde una página web

Un servlet también puede ser llamado desde el código de una página web, al igual que se llamaría a cualquier CGI.Ejemplo:

<form action = “http://www.datsi.fi.upm.es/~mperez/servlets/serv2” method=“post”>

Page 252: Curso Java Inacap

Taller Programación III

Java

252Profesor: Marcelo Montecinos C.

Desde otro servlet

Se puede lanzar la ejecución de un servlet desde otro.Pasos:

Conocer el nombre del servlet que queremos llamar.Proporcionar acceso al objeto “Servlet” del servlet llamado.Llamar al método público del servlet.

Page 253: Curso Java Inacap

Taller Programación III

Java

253Profesor: Marcelo Montecinos C.

Desde otro servletpublic class servletCalling extends HttpServlet {

public void doGet (HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException

{...Servlet servlet_get = (Servlet)

getServletConfig().getServletContext().getServlet(“servletCalled”);

String data_get = servlet_get.method1(data);...

}}

Page 254: Curso Java Inacap

Taller Programación III

Java

254Profesor: Marcelo Montecinos C.

Arquitectura de los servlets

Biblioteca ‘javax.servlet’

Servlets

HttpServlet

MiServlet

Page 255: Curso Java Inacap

Taller Programación III

Java

255Profesor: Marcelo Montecinos C.

Interacción con los clientes

Objeto ‘ServletRequest’:Comunicación que fluye del cliente al servidor.

Objeto ‘ServletResponse’:Encapsula la información enviada desde el servidor al cliente.

Page 256: Curso Java Inacap

Taller Programación III

Java

256Profesor: Marcelo Montecinos C.

Estructura de un Servlet

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class SomeServlet extends

HttpServlet {// El servidor envía una página// web al clientepublic void doGet

(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException

{// Utilizar request para leer// datos procedentes del// cliente (ej: cookies,// otros datos)

// Utiliza response para// especificar la respuesta // (tipo de contenido, establecer// cookies, ...)

PrintWriter out = response.getWriter();

// Utilizar out para enviar el// contenido al navegador

}// Análogamente, sobreescribir// doPost().

}

Page 257: Curso Java Inacap

Taller Programación III

Java

257Profesor: Marcelo Montecinos C.

Ejemplo Servlets: Hola Mundo

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class HolaMundoSrvlt extends

HttpServlet {// El servidor envía una página web al clientepublic void doGet

(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException

{PrintWriter out;String titulo=“Hola Mundo”;

// Utiliza response para// especificar la respuesta

response.setContentType(“text/html”);out = response.getWriter();out.println(“<HTML><HEAD><TITLE>”);out.println(titulo);out.println(“</TITLE></HEAD><BODY>”);out.println(“<H1>”+titulo+</H1>”);out.println(“</BODY></HTML>”);out.close();

}

}

Page 258: Curso Java Inacap

Taller Programación III

Java

258Profesor: Marcelo Montecinos C.

Ejemplo Servlets: Hola Mundo

Page 259: Curso Java Inacap

Taller Programación III

Java

259Profesor: Marcelo Montecinos C.

Obtención y envío de información

Obtención de datos del cliente:

getParameter()getParameterValues()getParameterNames()

getReadergetInputStream()

Envío de datos al cliente:

getWritergetOutputStream

Page 260: Curso Java Inacap

Taller Programación III

Java

260Profesor: Marcelo Montecinos C.

Ejemplo: Lectura de parámetros

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;

public class ThreeParam extends HttpServlet {public void doGet( HttpServletRequest

request,HttpServletResponse response)throws ServletException,IOException {

PrintWriter out;String title="Leyendo 3 parámetros";

response.setContentType("text/html");out = response.getWriter();out.println("<HTML><HEAD><TITLE>");out.println(title);

out.println("</TITLE></HEAD><BODY>");out.println("<H1 ALIGN=CENTER>"+ title+"</H1>");out.println("<UL>");out.println("<LI>param1: "+ request.getParameter("param1"));out.println("<LI>param2: "+ request.getParameter("param2"));out.println("<LI>param3: "+ request.getParameter("param3"));out.println("</UL>");out.println("</BODY></HTML>");out.close();

}public void doPost(HttpServletRequest

request,HttpServletResponseresponse)throws ServletException,IOException {doGet(request,response);

}}

Page 261: Curso Java Inacap

Taller Programación III

Java

261Profesor: Marcelo Montecinos C.

Ejemplo: Lectura de parámetros

Page 262: Curso Java Inacap

Taller Programación III

Java

262Profesor: Marcelo Montecinos C.

Ejemplo: Lectura de parámetros II

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.util.*;

public class ShowParameters extends HttpServlet {public void doGet( HttpServletRequest request,

HttpServletResponse response)throws ServletException,IOException

{PrintWriter out;String title="Leyendo todos los parámetros";response.setContentType ("text/html");out = response.getWriter();out.println("<HTML><HEAD><TITLE>");out.println(title);out.println("</TITLE></HEAD><BODY>");

Page 263: Curso Java Inacap

Taller Programación III

Java

263Profesor: Marcelo Montecinos C.

Ejemplo: Lectura de parámetros IIout.println("<H1 ALIGN=CENTER>"+ title+"</H1>");out.println("<TABLE BORDER=1 ALIGN=CENTER>");out.println("<TR><TH>Nombre de parámetro<TH>Valores de parámetro");Enumeration nombresDeParam =request.getParameterNames();while (nombresDeParam.hasMoreElements()){

String nombreParam = (String) nombresDeParam.nextElement();out.println("<TR><TD>" + nombreParam);out.println("<TD>");String[] valoresDeParam= request.getParameterValues(nombreParam);if (valoresDeParam.length == 1) {

String valorParam = valoresDeParam[0];if (valorParam.length()== 0)out.print("<I>No existe valor</I>");

elseout.print(valorParam);

} else {out.println("<UL>");for (int i=0;i<valoresDeParam.length; i++) {

out.println("<LI>" + valoresDeParam[i]);

}out.println("</UL>");

}}out.println("</TABLE>");out.println("</BODY></HTML>");out.close();

}public void doPost(HttpServletRequest

request,HttpServletResponseresponse)throws ServletException,IOException {doGet(request,response);

}}

Page 264: Curso Java Inacap

Taller Programación III

Java

264Profesor: Marcelo Montecinos C.

Ejemplo: Lectura de parámetros II

Page 265: Curso Java Inacap

Taller Programación III

Java

265Profesor: Marcelo Montecinos C.

Ejemplo: Uso de formulario<HTML><HEAD>

<TITLE> Un ejemplo de formulario que utiliza POST </TITLE></HEAD>

<H1 ALIGN=CENTER> Un ejemplo de formulario que utiliza POST </H1>

<FORM ACTION="../servlet/ShowParameters" METHOD="POST">Número Artículo:<INPUT TYPE="TEXT" NAME="numItem"> <BR>Cantidad:<INPUT TYPE="TEXT" NAME="cantidad"> <BR>Precio Unidad:<INPUT TYPE="TEXT" NAME="precio" VALUE="$"> <BR><HR>Nombre:<INPUT TYPE="TEXT" NAME="nombre"> <BR>Apellidos:<INPUT TYPE="TEXT" NAME="apellidos"> <BR>

Page 266: Curso Java Inacap

Taller Programación III

Java

266Profesor: Marcelo Montecinos C.

Ejemplo: Uso de formularioDirección:

<TEXTAREA NAME="direccion" ROWS=3 COLS=40> </TEXTAREA><BR>Tarjeta de crédito: <BR>

<INPUT TYPE="RADIO" NAME="tipoTarjeta" VALUE="Visa">Visa<BR><INPUT TYPE="RADIO" NAME="tipoTarjeta" VALUE="Master

Card">Master Card<BR><INPUT TYPE="RADIO" NAME="tipoTarjeta" VALUE="Amex">American

Express<BR><INPUT TYPE="RADIO" NAME="tipoTarjeta"

VALUE="Discover">Discover<BR>Número de tarjeta de crédito:<INPUT TYPE="PASSWORD" NAME="numTarjeta"> <BR>Repetición del número de tarjeta de crédito:<INPUT TYPE="PASSWORD" NAME="numTarjeta"> <BR><BR><CENTER>

<INPUT TYPE="SUBMIT" VALUE="Enviar solicitud"></CENTER>

</FORM></BODY></HTML>

Page 267: Curso Java Inacap

Taller Programación III

Java

267Profesor: Marcelo Montecinos C.

Ejemplo: Uso de formulario

Page 268: Curso Java Inacap

Taller Programación III

Java

268Profesor: Marcelo Montecinos C.

Ejemplo: Uso de formulario

Page 269: Curso Java Inacap

Taller Programación III

Java

269Profesor: Marcelo Montecinos C.

Ciclo de vida de un servlet

Servidor Servlet

Cargainit()

Servidor

Servlet Manejo depeticiones

Cliente

Cliente

service()doGet()doPost()

Servidor Servlet

Descargadestroy()

Page 270: Curso Java Inacap

Taller Programación III

Java

270Profesor: Marcelo Montecinos C.

Almacenamiento del estado de un cliente

Estado del cliente:Situación en la que se encuentra un cliente en sucesivas peticiones al servidor.

Mecanismos:Almacenamiento de sesiones en el servidor“Cookies”

Page 271: Curso Java Inacap

Taller Programación III

Java

271Profesor: Marcelo Montecinos C.

Servlets vs CGI

EficienciaCGI inicia un nuevo proceso para cada petición HTTP. (Solución: FastCGI)El servlet se ejecuta solamente la primera vez que es llamado. Permanece en memoria una vez cargado y puede compartir información entre varias llamadas de clientes. Uso de threads para las distintas peticiones.

PortabilidadModularidadEl uso de parámetros es más sencillo en el caso de los servlets