introducción -...

46
Java Introducción H. Tejeda V. [email protected] Universidad Michoacana Facultad de Ciencias F´ ısico-Matem ´ aticas Java– p. 1

Upload: others

Post on 20-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Java

Introducción

H. Tejeda V.

[email protected]

Universidad Michoacana

Facultad de Ciencias Fısico-Matematicas

Java– p. 1

Page 2: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Introduccion

• Los programas en el lenguaje de programación Java se construyenusando clases

• Con la definición de una clase, se puede crear cualquier cantidad deinstancias de esa clase.

• Se puede considerar a la clase como una fábrica con prototipos paraconstruir aparatos. Los objetos son los aparatos que se hacen en lafabrica a partir de los prototipos.

• Las clases contienen miembros, siendo los tipos principales:Campos Son las variables de datos que pertenecen a la clase en sí o a

un objeto de la clase. Forman el estado del objeto o de la clase.Metodos Son conjuntos de sentencias que operan sobre los campos

para modificar el estado. Las sentencias definen el comportamientode las clases, ya que pueden asignar valores a los campos y a otrasvariables, evaluar expresiones, llamar a otros métodos y controlar elflujo de ejecución.

Java– p. 2

Page 3: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Primer Programa

• Para escribir el código fuente en un archivo puede usarse cualquiereditor de textos, el archivo deberá tener el mismo nombre que la clase yterminación .java.

class HolaMundo {

public static void main ( String [] args ) {System.out.println("Hola Mundo");

}

}

• Después se compila para transformarlo en bytecodes, el “lenguajemáquina” de la Máquina Virtual de Java (MVJ), tecleando lo siguiente:

javac HolaMundo.java

• Para ejecutar el programa se deberá teclear:

java HolaMundo

• Con lo anterior se ejecuta el método main de HolaMundo , mostrando enla pantalla:

Hola Mundo

Java– p. 3

Page 4: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Comentarios

• El programa declara una clase llamada HolaMundo con sólo unmiembro: el método main . Los miembros de la clase aparecen entrellaves ({ }) después del nombre.

• main es un método especial, si se declara como se muestra en elejemplo y se llama al ejecutar la clase como una aplicación. El métodomain puede crear objetos, evaluar expresiones, llamar a otros métodos,etc.

• main es declarado como public para que pueda llamarlo la MVJ ycomo static para indicar que el método pertenece a la clase y no a losobjetos.

• El tipo de retorno se indica antes del nombre del método, como nodevuelva nada entonces tiene void .

• Después del nombre del método se tiene una lista de parámetros delmétodo. La lista es una secuencia de cero o más parejas de tipos ynombres, separados por comas y encerrados entre paréntesis ( ).

Java– p. 4

Page 5: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Comentarios cont.

• El único parámetro de main es un arreglo de objetos del tipo Stringreferenciado por el nombre args . Los arreglos se indican mediantecorchetes [] después del nombre del tipo. args contiene los parámetrosdel programa que se dan en la línea de comandos.

• Los elementos de un método son:Signatura Formada por el nombre del método y la lista de parámetros.Cabezera Compuesta por la signatura, los modificadores (public ,

static , etc.) y la lista de lanzamiento de excepciones,Declaraci on Formada por la cabecera y seguida por el cuerpo del

método, una lista de sentencias entre llaves.• El cuerpo de main contiene una sola sentencia que llama al método

println , la cual debe terminar con punto y coma (; )• Para llamar un método se debe dar una referencia (System.out ) y el

nombre del método (println ) separado por un punto (. )• El método println escribe una cadena de texto terminada por el

carácter de nueva línea en la salida estándar. "Hola Mundo" es unaliteral de cadena de texto que se pasa como parámetro a println , lacual es una secuencia de caracteres encerrados entre comillas "

Java– p. 5

Page 6: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Variables

• El siguiente ejemplo imprime una parte de la secuencia de Fibonacciempezando con 1 y 1 y donde cada término sucesivo es la suma de losdos términos anteriores. Se muestra como se declaran variables, comose usa un ciclo simple y como se realizan operaciones aritméticasbásicas.

class Fibonacci {/ ** Imprime la secuencia de Fibonacci para valores <˜50 * /

public static void main ( String[] args ) {int ba = 1;int al = 1;System.out.println( ba );while ( al <˜50 ) {

System.out.println( al );al = ba + al; // nuevo alba = al - ba; / * el nuevo ba es la suma de ba y al

menos ba * /}

}

}

Java– p. 6

Page 7: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Variables cont.

• La clase Fibonacci tiene un método main .• Las primeras 2 líneas son sentencias para declarar 2 variables locales

(ba y al ).• El último término de la serie se considera empleando la variable al .• Las variables locales se declaran dentro de un bloque de código, como

en el cuerpo de un método.• Al declarar una variable su nombre debe ir precedido de un tipo.

Java– p. 7

Page 8: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Datos primitivos

• Admiten valores enteros, punto flotante, booleanos y de caracter.• Se interpretan directamente a diferencia de los tipos definidos por el

programador.

boolean true o false

char carácter en código Unicode 2.1 de 16 bitsbyte número entero de 8 bits (con signo)short número entero de 16 bits (con signo)int número entero de 32 bits (con signo)long número entero de 64 bits (con signo)float número en punto flotante de 32 bits (IEEE 754-1985)double número en punto flotante de 64 bits (IEEE 754-1985)

Java– p. 8

Page 9: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Asignacion

• El operador de asignación (=) pone en la variable indicada del ladoizquierdo el valor de la expresión inidicada del lado derecho.

• Cuando se tienen variables del mismo tipo se puede usar una formaabreviada para declararlas, separando los nombre con sus expresionesde inicialización con comas, por ejemplo:

int ba = 1, al = 1;

Java– p. 9

Page 10: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Ciclos

• Se puede usar la sentencia while para hacer ciclos. Requiere de unacondición y de un conjunto de sentencias a evaluar cuando la condiciónes verdadera.

• El flujo con while es probar en primer lugar condición, si la condición esverdadera, entonces se evalúan las sentencias asociadas y se vuelve aprobar la condición. Se seguirá repitiendo hasta que la expresión seafalsa.

• Si la condición nunca obtiene el valor de falso, entonces el ciclo serepetirá siempre, a menos que se use en algún momento la sentenciabreak o suceda una excepción.

• La condición es una expresión booleana , es decir devuelve true ofalse .

• Se usan los operadores de comparación <, <=, >, >=, == y != paraformar una condición.

Java– p. 10

Page 11: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Operadores aritmeticos

• El siguiente valor de la secuencia de Fibonacci es calculado mediantealgunas operaciones aritméticas simples y utilizando el operador = paraasignar el valor de la expresión aritmética de la derecha a la variable dela izquierda.

• El lenguaje define un conjunto de operadores aritméticos para los tiposprimitivos entero y punto flotante, entre otros se tienen:

+ suma- resta

* multiplicación/ división% residuo

++ incremento unario−− decremento unario

Java– p. 11

Page 12: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

T A R E A

1. Añadir un título a la lista de valores de la serie Fibonacci que se imprime.

2. Escribir un programa que genere una tabla de cuadrados.

Se deberá escribir una clase para cada ejercicio, la cual se llamará tarea seguida delnúmero del ejercicio y la extensión “.java”, por ejemplo, tarea1.java . Las tareasdeberán subirse a través de la página, y deberá mandarse el código fuente únicamente.Los archivos deberán contener antes de la clase, un comentario con el nombre delautor, su cuenta y el ejercicio que se está resolviendo. En el caso de que se debaresponder a una pregunta, entonces la extensión para el archivo deberá ser “.txt”. Losejercicios deberán realizarse y entregarse individualmen te, tareas iguales oparecidas no recibirán calificación.

Java– p. 12

Page 13: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Comentarios

• Los comentarios permiten insertar un texto descriptivo en diversoslugares del código.

• Son de utilidad para programadores que puedan leer el código en elfuturo, porque ahorran esfuerzo para comprender el código.

• Los comentarios son ignorados por el compilador.// Se usan para comentarios de una sola línea o parciales de una sola

línea, con lo que se ignora el resto de la línea./* */ Pueden usarse como el tipo de comentario anterior y también

para poner un comentario en varias líneas./** */ Se usa para poner comentarios de documentación. Se usan

para describir las declaraciones que los siguen. También pueden serextraídos por una herramienta que se use para generardocumentación de referencia.

Java– p. 13

Page 14: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Constantes con nombre

• Las constantes son valores como 12 , 17.9 y “Cadenas de Texto” .• Las constantes también se conocen como literales y se usan para indicar

valores que no se calculan o se vuelven a calcular.• Una constante con nombre es un valor constante que se puede referir

usando un nombre.• La constante con nombre se debe declarar con el tipo y la inicialización

apropiada y empleando el modificador final .• Un campo o variable final no pueden modificar su valor una vez

inicializados. Son inmutables.• Si se desea tener sólo una instancia de una constante con nombre se

usa el modificador static .

Java– p. 14

Page 15: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Ejemplo de Fibonnaci modificado

class Fibonacci2 {/ ** Imprime secuencia de Fibonacci para valores <˜MAX * /

static final int MAX = 50;public static void main ( String[] args ) {

int ba = 1, al = 1;System.out.println( ba );while ( al <˜MAX ) {

System.out.println( al );al = ba + al;ba = al - ba;

}

}

}

• Se puede referir a un miembro static de una clase usando el nombrede la clase seguido por un punto y por el nombre del miembro, para elejemplo anterior se puede hacer como:

Fibonacci2.MAX

• También se han accedido a campos estáticos al usar el métodoprintln , cuando se le antepone out .

Java– p. 15

Page 16: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

T A R E A

3. Modificar la clase HolaMundo para que use una constante con nombre detipo cadena (String ) para mostrar el texto. Renombrar la clase con elnombre tarea3 .

4. Usando la clase de la tarea 1, emplear una constante de tipo cadena detexto para el título. Renombrar la clase por tarea4 .

Java– p. 16

Page 17: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Control de flujo

• Indica las sentencias de un programa que se ejecutan y el orden.• Sentencias de flujo de control, son: los bloques por definir una ejecución

secuencial, los ciclos (while , for y do-while y las de decisión(if-else y switch ).

• Se presenta una nueva versión de Fibonacci donde se numeran loselementos de la secuencia y se marcan los números pares con * .

• Para generar la secuencia se usa el ciclo for en vez del ciclo while , elcual contiene secciones de inicialización y de incremento:for ( inicialización; condición; incremento ) { ... }

• En las sección de inicialización se pueden declarar variables, las cualesexistirán mientras se ejecute el ciclo.

• El operador ++ realiza el incremento unario, si aparece antes deloperando es prefijo y sufijo cuando aparece después.

Java– p. 17

Page 18: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Secuencia de Fibonnaci usando for

class Fibonacci3 {static final int INDICE MAX = 9;/ ** Imprime la secuencia de fibonacci para valores <˜MAX * /public static void main ( String[] args ) {

int ba = 1, al = 1;String marca;

System.out.println( "1: " + ba );for ( int i = 2; i <= INDICE MAX; i++ ) {

if ( al % 2 == 0 )marca = " * ";

elsemarca = "";

System.out.println( i + ": " + al + marca );al = al + ba;ba = al - ba;

}

}

}

Java– p. 18

Page 19: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Comentarios sobre la clase Fibonacci3

• La sentencia i++; es equivalente a i=i+1; e i −−; a i=i-1;

• Cuando se tienen expresiones donde el valor de una variable se calculaa partir del valor original se puede usar la forma abreviada, por ejemplo i= i + 1 se reescribe como i += 1; Lo anterior se puede hacertambién con los otros operadores binarios, por lo que se tendrá +=, -=,

* =, /=, %= .• En el ciclo for se usa la sentencia de control if-else para saber si a1

es par. La condición al igual que en el ciclo while debe encerrarse porparéntesis.

• Si la condición es verdadera entonces se ejecutan las sentencias delcuerpo if , si es falsa entonces lo que sigue a else ; siendo opcional.

• Se emplea el operador %módulo o residuo que da el resto de dividir eloperando izquierdo por el derecho. Como se sabe si el resto es ceroentonces será un número par.

• Cuando se llama a println se tienen expresiones más complejas yaque antes de pasar el valor primero se evalúa la expresión por ejemplo"1: "+ ba , que en este caso es una concatenación de cadenas, ya queuno de los operandos es una cadena de texto.

Java– p. 19

Page 20: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

T A R E A

5. Cambiar el ciclo de forma que i cuente hacia atrás en vez de haciaadelante en la clase Fibonacci3.java . Renombrar la clase con elnombre tarea5 .

Java– p. 20

Page 21: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Clases y objetos

• Cada objeto tiene una clase que define sus datos y comportamiento.• Los tres tipos de miembros de una clase son:

◦ Los campos son variables de datos asociados con una clase y susobjetos.

◦ Los métodos contienen el código ejecutable de la clase. Estánformados por sentencias.

◦ Las clases y las interfaces pueden también ser miembros de otrasclases.

• Ejemplo de una declaración de una clase simple para representar unpunto en el plano.

class Punto {public double x, y;

}

• La clase no tiene métodos y tiene 2 campos con la declaración publicpara que cualquier código los use.

Java– p. 21

Page 22: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Creacion de objetos

• Los objetos se crean usando la palabra reservada new.• La creación de un objeto se conoce también como instanciación, por lo

que los objetos se llaman también instancias.• Los objetos de nueva creación se encuentran en una área de memoria

del sistema conocida como pila.• Cada objeto Punto es único y tiene su propia copia de los campos x e y .• Los campos de los objetos se conocen como variables de instancia, ya

que existe una única copia del campo en cada objeto de la clase.

Punto inferIzq = new Punto();Punto superDer = new Punto();Punto puntoMedio = new Punto();

inferIzq.x = 0.0; inferIzq.y = 0.0;superDer.x = 1280.0; superDer.y = 1024.0;puntoMedio.x = 640.0; puntoMedio.y = 512.0;

Java– p. 22

Page 23: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Campos estaticos de clase

• Se usan cuando se desea que los campos sean compartidos por todoslos objetos de una clase.

• Se les denomina también como variables de clase.• Son variables específicas de la clase, a diferencia de los objetos de la

clase.• Los campos específicos de clase se obtienen declarándolos como

static

• Para la clase Punto se agrega un campo estático que representa elorigen y que se supone lo suficiente común como para usarlo como uncampo estático.

public static Punto origen = new Punto();

• Cuando un objeto ya no es refenciado por nadie son recogidosautomáticamente por el recogedor de basura, que se ejecuta en segundoplano y lo elimina de la pila de almacenamiento.

Java– p. 23

Page 24: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Metodos y parametros

• Los campos de los objetos de la clase Punto están expuestos amanipulaciones de cualquier código que tenga una referencia por estarlos campos declarados como public .

• Los beneficios de la orientación a objetos se obtienen de ocultar laimplementación de una clase usando operaciones que manipulen losdatos internos usando sus métodos.

• La ocultación de datos detrás de los métodos de forma que resulteninaccesibles para otros objetos es la base fundamental del encapsuladode datos, como se muestra a continuación:

public void borrar() {x = 0; y = 0;

}

• El método no tiene parámetros por lo que no hay nada entre losparéntesis y se declara tipo void porque no devuelve ningún valor.

Java– p. 24

Page 25: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Invocacion a metodos

• Se usa una referencia del objeto destino y el nombre del punto,separados por un punto.

• Los parámetros se pasan al método mediante una lista de valoresseparados por comas y encerrados por paréntesis. Si el método no usaparámetros se requiere poner los paréntesis.

• Un método puede devolver un único valor como resultado.• Cuando se invoca a un método, el flujo de ejecución deja el método en

curso y comienza a ejecutar el cuerpo del método que ha sido llamado.Al terminar el método llamado, continúa su ejecución en el código quesigue a la invocación del método.

Java– p. 25

Page 26: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Invocacion a metodos cont.

• Se presenta un método distancia para la clase Punto , el cual aceptaotro objeto Punto como parámetro para calcular la distancia euclideanay devuelve un número de punto flotante con doble precisión.

public double distancia( Punto ese ) {double difx = x - ese.x;double dify = y - ese.y;return Math.sqrt ( difx * difx + dify * dify );

}

• La sentencia return hace que el método detenga la ejecución de sucuerpo y devuelva la ejecución al método que lo invocó.

• Si una expresión es parte de una sentencia return , el valor de esaexpresión se devuelve como valor de la llamada del método.

• El tipo de la expresión debe ser compatible con el tipo de retorno definidopor el método.

• El método sqrt de la clase de biblioteca Math calcula la raíz cuadrada.• Para invocar el método anterior se puede hacer como:

double d = inferIzq.distancia ( superDer );

Java– p. 26

Page 27: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

La referencia this

• Se usa cuando el objeto receptor necesita saber su propia referencia,por ejemplo cuando desea añadirse a sí mismo en alguna parte una listade objetos.

• La referencia implícita this está disponible en los métodos y es unareferencia al objeto actual.

public void borrar() {this.x = 0; this.y = 0;

}

• Se usa como parámetro para otros métodos que necesiten unareferencia al objeto.

• Se emplea también para nombrar explícitamente los miembros del objetoactual.

public void mover( double x, double y ) {this.x = x; this.y = y;

}

• Con lo anterior se logra clarificar a que x e y se hace referencia, ya quelos parámetros ocultan los nombres de los campos.

Java– p. 27

Page 28: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

T A R E A

6. Añadir un método a la clase Punto que escriba en las coordenadas delobjeto actual los valores que se pasan mediante un objeto Punto . Agregaun método main a la clase Punto para que se muestre como se usa elmétodo que agregaste.

Java– p. 28

Page 29: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Metodos de clase o estaticos

• Sirven para realizar operaciones específicas de la propia clase, usandolos campos estáticos.

• Se declaran usando static .• En la implementación distancia se usa el método estático Math.sqrt

para encontrar la raíz cuadrada. Está declarado así porque no actúasobre una instancia particular de la clase Math .

• No pueden acceder directamente a miembros no estáticos.

Java– p. 29

Page 30: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Arreglos

• Es una colección de variables del mismo tipo.• Los componentes se acceden mediante índices enteros.

public class Baraja {public static final int TAM BARAJA = 52;

private Carta[] cartas = new Carta[TAM BARAJA];

public void imprimir () {for ( int i = 0; i <˜cartas.length; i++ )

System.out.println(cartas[i]);} // ....

}

• Se declara el campo cartas como un arreglo de tipo Carta poniendodespués del nombre unos corchetes [ ] . cartas se inicializa con unarreglo nuevo de tamaño TAM_BARAJA.

• Cada elemento Carta del arreglo se inicializa implícitamente con el valornull .

• La longitud del arreglo se fija al crearlo y no puede ser cambiado.

Java– p. 30

Page 31: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Arreglos cont.

• Para acceder a un componente del arreglo el índice del elementodeseado se encierra entre corchetes.

• Los objetos arreglo tienen un campo length que indica cuantoselementos contiene el arreglos.

• Los límites de un array son números enteros entre 0 y length - 1ambos inclusive.

• Cuando se usa un arreglo es importante asegurarse de que la referenciaal arreglo no sea null y de que no esté vacío. Si algunas de lascomprobaciones falla, el método puede informar produciendo unaexcepción IllegalArgumentException .

• Se pueden usar los operadores lógicos || (o condicional) y && (ycondicional) con los operandos booleanos.

Java– p. 31

Page 32: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Arreglos cont. 2

• El siguiente ejemplo muestra como se atrapan los errores en un métodoque promedia los valores de un arreglo de enteros.

static double promedio ( int[] valores ) {if ( valores == null )

throw new IllegalArgumentException();else

if ( valores.length == 0 )throw new IllegalArgumentException();

else {double suma = 0.0;for ( int i = 0; i <˜valores.length; i++ )

suma += valores[ i ];return suma / valores.length;

}

}

Java– p. 32

Page 33: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

T A R E A

7. Modifica la clase Fibonacci para que almacene la secuencia en unarreglo e imprima la lista de valores al final. Renombra la clase portarea7 .

8. Modifica la clase Fibonacci3 para que almacene su secuencia en unarreglo. Se debe crear una clase nueva para almacenar el valor y un valorboolean que indique si el valor es par, y creando después un arreglo dereferencias a objetos de esa clase. Renombra la clase por tarea8 .

Java– p. 33

Page 34: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Objetos de cadena de texto

• El tipo de clase String manipula secuencias de datos de tipo carácter, yproporciona soporte para inicializarlos.

• Cuando se tiene una literal de cadena de texto el compilador crea unobjeto String

• No se necesita indicar la longitud del objeto String cuando se crea.

class DemoCadenas {

static public void main(String[] args) {String miNombre = "Juan";miNombre = miNombre + " Mendoza";System.out.println("Nombre = " + miNombre);

}

}

• En el ejemplo se declara una variable String denominada miNombre yse inicializa con una literal de cadena de texto.

Java– p. 34

Page 35: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Objetos de cadena de texto cont.

• Con el operador de concatenación (+) de String se obtiene un nuevoobjeto String a partir de los contenidos de los operandos.

• En el primer caso el objeto se asigna a la referencia miNombre , y en elotro es un objeto “anónimo”.

• Los objetos String tienen un método length que devuelve el númerode caracteres en la cadena de texto.

• Los caracteres están indexados a partir de 0 hasta length() - 1 ,pudiendo acceder a ellos individualmente usando el método charAt .

• Se puede considerar a una cadena de texto similar a un arreglo decaracteres.

• Se puede construir un nuevo objeto String a partir de un arreglo decarácteres pasándoselo como parámetro a un constructor de String

• Con el método toCharArray se puede obtener un arreglo de caracterescon el mismo contenido que una cadena de texto.

• Los objetos String son de sólo lectura o inmutables, es decir, loscontenidos no cambian.

Java– p. 35

Page 36: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

T A R E A

9. Modifica Fibonacci3 para que almacene los objetos String que crea enun arreglo, en vez de llamar directamente a println con dichos objetos.Renombra la clase por tarea9 .

Java– p. 36

Page 37: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Manejo de Excepciones – Introduccion

• ¿Qué hacer cuando en un programa se produce un error?◦ En algunos lenguajes se dan valores inusuales para los errores.◦ Los programadores no comprueban los valores porque suponen que

“no pueden suceder”.◦ Agregar procedimientos de detección y recuperación de errores

complica el código.

Java– p. 37

Page 38: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Excepciones comprobadas

• Realizan la gestión de errores.• Obligan a considerar que hacer con errores que pueden aparecer al

ejecutar el código.• En el caso de que no se gestione se advierte en tiempo de compilación,

y no de ejecución.

Java– p. 38

Page 39: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Operacion

• Un método que detecta una condición inusual de error lanza unaexcepción.

• Las excepciones pueden ser capturadas por código posterior.• Este código se encargará de gestionar la excepción cuando se requiera,

y continuar después con la ejecución.• Las excepciones no capturadas producen la finalización del hilo de

ejecución, pero antes de terminar se da la oportunidad a ThreadGroupdel hilo de gestionar la excepción.

Java– p. 39

Page 40: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Componentes de una excepcion

• Una excepción es un objeto con tipo, métodos y datos.• Con la representación de objeto se tiene la ventaja de informar o

recuperarse de diversas clases de excepciones.• Los objetos excepción se derivan generalmente de la clase Exception

que tiene un campo de cadena de texto para describir el error.• Todas las excepciones deben ser subclases de la clase Throwable , que

es una superclase de Exception .

Java– p. 40

Page 41: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Paradigma de uso de excepciones

• El paradigma es la secuencia probar-capturar-finalmente(try-catch-finally).◦ Se prueba algo.◦ Si ese algo lanza una excepción, se captura.◦ finalmente se realizan otras acciones de limpieza

independientemente de lo que haya sucedido, ya sea que se hayaido por el camino del código normal o el de la excepción.

Java– p. 41

Page 42: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Ejemplo

class ErrorDatosException extends Exception { }

class Utilidades {public double [] procesaDatos (String nombre)

throws ErrorDatosException {String archivo = nombre + ".dat";FileInputStream in = null;try {

in = new FileInputStream ( archivo );return leeDatos ( in );

} catch ( IOException e ) {throw new ErrorDatosException ();

} finally {

try {if ( in != null )

in.close();} catch ( IOException e ) {

; // ignorar:se leyeron los datos con exito}

}

}

}Java– p. 42

Page 43: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Paquetes – Introduccion

• Cuando se escribe código reutilizable los conflictos de nombres son unproblema importante. No importa el cuidado que se tenga al escoger losnombres de las clases.

• Se agrava el problema cuando se usan nombres simples y descriptivos.• Una solución tradicional para evitar la colisión de nombres, en muchos

lenguajes de programación, es utilizar un prefijo de paquete al inicio decada clase, tipo o función global.

• Con las convenciones de prefijos se crean contextos de nombramientoque evitan conflictos con otros contextos.

Java– p. 43

Page 44: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Paquete

• En Java se tiene el concepto de paquete el cual está formado por tipos ysubpaquetes.

• Los paquetes tienen un nombre y se pueden importar.• Los nombres de los paquetes son jerárquicos, con componentes

separados por puntos.• Se puede importar todo el paquete.• Para usar parte de un paquete se utiliza su nombre calificado completo

(el nombre del tipo precedido por el nombre del paquete, y separadospor un punto).

• Cuando se importa un paquete, totalmente o parcialmente, se le indica alcompilador de que busque en el paquete que se importa los tipos que nopueda encontrar definidos localmente.

• Con los nombres de los paquetes se logra control sobre los conflictos denombres, ya que se pueda usar el nombre de clase completamentecalificado.

Java– p. 44

Page 45: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Ejemplo

• Sin usar import

class Fecha1 {

public static void main ( String[] args ) {java.util.Date ahora = new java.util.Date();System.out.println( ahora );

}

}

• Usando import

import java.util.Date;

class Fecha1 {

public static void main ( String[] args ) {Date ahora = new Date();System.out.println( ahora );

}

}

Java– p. 45

Page 46: Introducción - computo.fismat.umich.mxcomputo.fismat.umich.mx/computacion/notas_intr/introduccion2.pdf · Introduccion´ • Los programas en el lenguaje de programación Java se

Declaracion de paquetes

• El problema de la colisión de nombres no se resuelve completamentemediante el mecanismo de paquetes. Puede suceder que dos proyectosden a sus paquetes el mismo nombre.

• Se resuelve por convención usando el nombre de dominio de Internet dela organización escrito al revés como prefijo del nombre de paquete.

• Las clases están siempre en un paquete. Los paquetes se nombranproporcionando una declaración de paquete al principio del archivofuente.

package com.sun.games

class Cartas {// ...

}

Java– p. 46