Вы находитесь на странице: 1из 204

Laboratorio Nacional de Informtica Avanzada A. C.

JAVA I
(Primera Parte)

Academias de Teleinformtica SEV


2007

Programacin en Java
Modulo 1:Comenzando

Laboratorio Nacional de Informtica Avanzada A. C.


2007

Requerimientos
Hardware Virtualmente cualquier hardware Intel, Sparc, PowerPC Con 128 Mb en RAM Un espacio en disco duro de 140 Mb Software Entorno de programacin Java Developer Kit 1.4.x o superior Java Doc 1.4.x o superior Entorno de desarrollo Editor de texto como notepad Editores o IDE de Java como Java Creator o Netbeans
3

LANIA 2007

Historia de Java
Ultima versin. JDK 1.5.x

LANIA 2007

Qu es Java?
Es un lenguaje de programacin Es un compilador Sistema de ejecucin Juego de herramientas de desarrollo API Es una mquina virtual

LANIA 2007

Qu es Java?
Lenguaje de programacin Java Programas fuente de Java

Compilado y otras herramientas de Java Java

Bytecode compilado

Sistema de tiempo de ejecucin Java

API de Java

Mquina virtual (JVM)

Sistema Operativo Unix, Linux, Windows, MacOS, OS/2... Plataforma host

Hardware del ordenador Sparc, PC, Power PC...

LANIA 2007

Caractersticas de Java
Uso de la orientacin a objetos Posibilidad de desarrollar aplicaciones distribuidas Posibilidad de procesamiento paralelo (threads) Posibilidad de incorporar seguridad Seguridad bsica inherente Posibilidad de ejecutarse en mltiples plataformas

LANIA 2007

Escribe una vez, ejecuta donde quieras

LANIA 2007

Programacin tradicional

Escribe una vez, ejecuta donde quieras

LANIA 2007

Programacin Java

La plataforma Java

LANIA 2007

10

Operacin del JRE

Ejecuta la siguiente operaciones: Carga cdigo Verifica cdigo Ejecuta cdigo


LANIA 2007 11

Cargador de clases
Carga todas las clases necesarias para la ejecucin de los programas Mantiene la seguridad al separar las clases cargadas localmente por clases cargadas por la red Previene spoofing (Una clase se hace pasar por otra)
LANIA 2007 12

Verificador de cdigo
Se asegura por ejemplo que: El cdigo cumpla con la especificacin de la JVM Qu el cdigo no viole la integridad del sistema Que los tipos de parmetros sean los adecuados

LANIA 2007

13

Garbage Collector
Muchos lenguajes como C pueden crear alojamiento dinmico de datos en memoria. En estos lenguajes el desalojamiento de los datos de la memoria es un proceso manual En Java existe un proceso regular que libera la memoria Esta operacin es automtica y libera al programador de esta labor
LANIA 2007 14

El JDK (Java Development Kit)


Editor de textos (Ultraedit, NotePad, Vi, Emacs) Generacin de documentacin (javadoc) Archivos fuente .java

Compilador (javac) Desensamblador (javap)

Documentacin de cdigo fuente en HTML

Intrprete (java)

Achivos .class (bytecode)

Ejecucin del programa

Variables, mtodos, instrucciones en cdigo fuente

Visor de applets (appletviewer)

Depurador (jdb)

Visualizacin de applets

Generador de archivos de cabecera (javah)

Salida de programa traceada por pasos y visualizacin del programa

Archivos fuente de cabecera en C para implementar mtodos nativos

LANIA 2007

15

Compilando y ejecutando un programa


Requerimientos del cdigo fuente:
solo una clase pblica por cada archivo de cdigo

Compilando:
javac nombre_clase_publica.java

Resultado:
nombre_clase_publica.class

Corriendo:
java
LANIA 2007

nombre_clase_publica
16

EJERCICIOS
Instalar el JDK
Netbeans Javadoc

Compilar una aplicacin en modo consola

LANIA 2007

17

Programacin en Java
Modulo 2:Programacin Orientada a Objetos

Laboratorio Nacional de Informtica Avanzada A. C.


2007

Orientacin a objetos
Tcnica para el modelado de sistemas Actores (objetos)
Caractersticas (atributos) Operaciones o funcionalidades (mtodos)

LANIA 2007

19

Atributos y operaciones
Atributos: caractersticas de un objeto
Datos Propiedades Caractersticas

Operaciones o funcionalidades: Acciones que se pueden realizar


Propias Servicios a otros objetos
LANIA 2007 20

Clases e Instancias

LANIA 2007

21

Clases
Una clase:
Es una plantilla o diseo Puede compararse a un molde o un plano arquitectnico

Un objeto es una instancia de una clase


LANIA 2007 22

Modelo de Clases
En UML, una clase es representada por un rectngulo que posee tres divisiones:
<N o m b r e C lase> < A tr ib u to > < M to d o >()

LANIA 2007

23

Concepto, Clase y Objeto


Nombre de la clase
Atributos

Mtodos

LANIA 2007

24

Ejemplo Servicio de Mantenimiento


Mecnicos Caracteristicas propias, como: Nombre Posicin X Posicin Y INETI S.A. X: 6 , Y: 12 Pedro Perez X: 17 , Y: 12 Jorge Castro X: 6 , Y: 7

Cliente Caracteristicas propias, como: Razn social Posicin X Posicin Y KAOS S.A. X: 19 , Y: 17

Luis Diaz X: 1 , Y: 22

LANIA 2007

25

Ejemplo Servicio de Mantenimiento


Clase que representa

Mecnicos

Mecnico
Nombre: Jorge Castro X: 6 Y: 7

Mecnico
Nombre: Luis Diaz X: 1 Y: 22

Mecnico
Nombre: Pedro Perez X: 17 Y: 12

Clase que representa

Clientes

Cliente
Nombre: INETI S.A. X: 6 Y: 12

Cliente
Nombre: KAOS S.A. X: 19 Y: 17

LANIA 2007

26

Ejemplo Servicio de Mantenimiento


Jorge Castro X: 6 , Y: 7 INETI S.A. X: 6 , Y: 12 Accin externa Comportamiento asociado mover()

Cliente llama

Pedro Perez X: 17 , Y: 12

KAOS S.A. X: 19 , Y: 17 Accin externa Comportamiento asociado mover()

Luis Diaz X: 1 , Y: 22

LANIA 2007

27

Ejemplo Servicio de Mantenimiento


Clase que representa

Mecnicos

Mecnico
Nombre: Jorge Castro X: 6 Y: 12 mover(6, 12)

Mecnico
Nombre: Luis Diaz X: 1 Y: 22 mover( , )

Mecnico
Nombre: Pedro Perez X: 19 Y: 17 mover(19, 17)

Clase que representa

Clientes

Cliente
Nombre: INETI S.A. X: 6 Y: 12

Cliente
Nombre: KAOS S.A. X: 19 Y: 17

LANIA 2007

28

Ejemplo Servicio de Mantenimiento


Clase que representa

Mecnicos

Mecnico
Nombre: Jorge Castro X: 6 Y: 12 mover(6, 12)

Mecnico
Nombre: Luis Diaz X: 1 Y: 22 mover( , )

Mecnico
Nombre: Pedro Perez X: 19 Y: 17 mover(19, 17)

Clase que representa

Clientes

Cliente
Nombre: INETI S.A. X: 6 Y: 12

Cliente
Nombre: KAOS S.A. X: 19 Y: 17

Cliente
Nombre: NOVA A.G. X: 10 Y: 15

LANIA 2007

29

Ejemplo Servicio de Mantenimiento

Jorge Castro X: 6 , Y: 12 INETI S.A. X: 6 , Y: 12 NOVA A.G. X: 10 , Y: 15

Pedro Perez X: 19 , Y: 17

Luis Diaz X: 1 , Y: 22

KAOS S.A. X: 19 , Y: 17

LANIA 2007

30

Uso de la documentacin
Frame de seleccin de paquete Frame de seleccin de clase

Frame de seleccin de clase


LANIA 2007 31

Programacin en Java
Modulo 3:Identificadores, Palabras Clave y Tipos

Laboratorio Nacional de Informtica Avanzada A. C.


2007

Identificadores
Un identificador es un nombre dado a una variable, mtodo o clase. En el lenguaje de programacin de java, un identificador comienza con una letra, guin bajo(_), o un signo de pesos($); puede ser de cualquier longitud; y otros que el primer caracter , puede contener alguna secuencia de letras, digitos, guiones bajos, o signos de pesos. Lo siguiente es una lista de identificadores vlidos. Aunque los cuatro son vlidos, los ltimos dos identificadores tienen aspectos no deseables: identifier userName _sys_var1 $change El cdigo fuente de programas escritos en lenguaje de programacin de Java es efectivamente en Unicode. Tenga cuidado de caracteres no-ASCII, porque Unicode puede soportar diferentes caracteres que se ven iguales.
33

LANIA 2007

Punto y coma y Espacios en blanco


Punto y coma
En el lenguaje de programacin de java,una declaracin es una o mas lneas de cdigo terminadas con un punto y coma (;). Por ejemplo,
totals = a + b + c + d + e + f;

Es igual que,
totals = a + b + c + d + e + f;
LANIA 2007 34

Punto y coma y Espacios en blanco


Espacios en blanco Puedes tener espacio en blanco entre elementos del cdigo fuente. Cualquier cantidad de espacios en blanco es permitida. Puedes usar espacios en blanco, incluyendo espacios, tabuladores, y nuevas lneas, para mejorar la apariencia visual de tu codigo fuente. { int x; x = 23 * 54; }

LANIA 2007

35

Comentarios
Los comentarios son cadenas de texto que el programador usa para entender y hacer legible Clsico de C su cdigo para otros
/* ClasicoHolaMundo.java */ public class ClasicoHolaMundo { /** * Clsico Programa "Hola Mundo!" */

Tipo javadoc

public static void main(String[] args) { // escribe por la salida estndar System.out.println("Hola mundo!"); } } LANIA 2007 36

Una lnea

Palabras reservadas
Palabras que pertenecen al lenguaje y que no se puede utilizar como nombres de variables o clases

LANIA 2007

37

Tipos de datos primitivos


Java es un lenguaje fuertemente tipificado, toda variable debe ser declarada de un tipo Hay ocho tipos de datos primitivos:
Numricos: Enteros y flotantes Carcter Booleano

LANIA 2007

38

Almacenando datos en variables usando tipos de datos primitivos


La tecnologa Java usa tipos de datos que tienen predefinidos:
Tamao de almacenamiento Tipo de datos que almacenan

Los tipos son:


Tipos enteros byte, short, int, y long Tipos de punto flotante float y double (default) Tipo texto char Tipos lgicos boolean

LANIA 2007

39

Tipos primitivos enteros


Almacenan nmeros sin lugares decimales

Tamao 8 bits 16 bits 32 bits 64 bits


LANIA 2007

Tipo byte short int long

Rango -27 to 27-1 -215 to 215 -1 -231 to 231 -1 -263 to 263 -1


40

Tipos primitivos de punto flotante


Tipos de punto flotante almacenan nmeros con lugares decimales Valor mximo y mnimo no pueden ser determinados Tipo
float double

Tamao
32 bits 64 bits

Rango
+/-3.40282347E+38F +/- 1.79769313486231570E+308

LANIA 2007

41

Tipo primitivo de texto: char


char almacena cualquier tipo de caracter Usa comillas simples alrededor de cualquier valor literal para asignarlo a una variable char : t char representa cada caracter como una serie de 16 bits. char esta basado en Unicode: 65,535 caracteres (contienen los primeros 128 caracteres de ASCII).

LANIA 2007

42

Tipo primitivo lgico: boolean


Representa un valor como falso o verdadero Ejemplos:
Asignar un valor literal a una variable boolean (Los literales de la tecnologa Java son true o false) Expresiones booleanas: respuesta < 42
LANIA 2007 43

Programacin en Java
Modulo 4: Expresiones y control de flujo

Laboratorio Nacional de Informtica Avanzada A. C.


2007

Creando variables de tipo primitivo


Paso 1 Declaracin
tipo identificador [, identificador]; int edad;

Paso 2 Asignacin
identificador = valor; ID = 12;

El operador igual (=) asigna valores Declarando y asignando


tipo identificador = valor [,identificador =valor]; int edad = 12;
LANIA 2007 45

Alcance de una variable


No todas las variables estn disponibles a lo largo de un programa Alcance de Variable significa donde puede ser usada una variable

LANIA 2007

46

Tipos de valores que puedes asignar


Valores literales: float promedio = 8.25F; Otras variables: float promedioParcial = 8.99F; float promedio = promedioParcial; El resultado de expresiones: float totalCompras = 908.5F; float porcentajeDescuento= 19.99F; float descuentoTotal = (totalCompras * porcentajeDescuento);
47

LANIA 2007

Usando variables en un programa


Uso: System.out.println (edad); Re- uso (asignar otro valor posteriormente): edad = 12; Combinar: int edad = 12; int nuevaEdad; nuevaEdad = edad;

LANIA 2007

48

Constantes
Para valores que no cambian una vez asignados:
final double IMPUESTO_IVA = 15.00;

No se pueden cambiar excepto en su localizacin original

Use la palabra reservada final para volverlo inmodificable El compilador mandara un mensaje de error en el caso de que se intente hacer un cambio en el valor de una constante

LANIA 2007

49

Convenciones sobre tipos de datos primitivos


Tipo int vs long int i = 5; long l = 2324L; Tipo float vs double float f = 3.4523f double d = 3.4523d double d = 3.4523 Decimales, octales y hexadecimales int i = 55; // DECIMAL int i = 055; // OCTAL int i = 0x55; // HEXADECIMAL
LANIA 2007 50

Operadores
Tipo de operador Operador + Aritmtico * / % > < Relacional >= <= !=
LANIA 2007

Descripcin Suma Resta Multiplicacin Divisin Mdulo Mayor que Menor que Mayor o igual que Menor o igual que Diferente Igual

Ejemplo a+b a-b a*b a/b a%b a>b a<b a>=b a<=b a!=b a==b
51

==

Operadores
Tipo de operador Lgico Operador ! && II = ++ -Asignacin += -= *= /= %= Casting
LANIA 2007 Instancia

Descripcin No Y O Asignacin Incremento en 1 Decremento en 1 Suma y asignacin Resta y asignacin Multiplicacin y asignacin Divisin y asignacin Mdulo y asignacin Convertir tipo Es instancia de clase?

Ejemplo !a a&&b aIIb a=b a++ o ++a a-- o --a a+=b a-=b a*=b a/=b a%=b (char)b a instance of b52

(tipo) instanceof

Precedencia de los operadores


Reglas de precedencia:
Contenido de parntesis Multiplicacin y divisin, de izquierda a derecha Sumas y restas

Expresiones complejas:
c = 25 - 5 * 4 / 2 - 10 + 4; Resultado de izquierda a derecha: 34 Resultado de acuerdo a las reglas de precedencia: 9

Uso de parntesis para indicar la estructura explcitamente


LANIA 2007 53

Ejemplos de incompatibilidad de datos y tipos de datos


Dato a la derecha es menor que el de la izquierda: byte numero1 = 53; byte numero2 = 47; long numero3; numero3 = numero1 * numero2; Dato a la derecha mayor que el de la izquierda: int numero1 = 53; int numero2 = 47; byte numero3; numero3 = (numero1 + numero2); Dato y tipo a la derecha mayor que el de la izquierda: int numero1 = 53; int numro2 = 47; byte numero3; numero3 = numero1 * numero2;
54

LANIA 2007

Promocin
Sucede automticamente cuando:
Asignamos un tipo menor a un tipo mayor
Asignamos tipo int a tipo long

Asignamos tipos enteros a tipos de punto flotante


long big = 6; // legal int small = 99L; // ilegal

LANIA 2007

55

Conversin de tipos
Disminuye el rango de valores (recortar") identificador_variable = (tipo_destino) valor int numero1 = 53; int numero2 = 47; byte numero3; numero3 = (byte) (numero1 + numero2); // No se pierden datos int myInt; long myLong = 99L; myInt = (int) (myLong); // no se pierden datos, ceros. int myInt; long myLong = 123987654321L; myInt = (int) (myLong); // Nmero pierde exactitud Convirtiendo tipos puntos flotante en enteros remueve los valores a la derecha del punto decimal
56

LANIA 2007

Tipos de datos enteros y de punto flotante


Sumando tipos enteros usando + convierte tipos de datos primitivos a int (o superior).
short a = 1 b = 2 c = a a, b, c; ; ; + b ;

Los valores de punto flotante son por defecto double si no especificas que sean floats.
float float1 = 27.9; // causa error float float1 = 27.9F; // correcta float float1 = (float) 27.9; // correcta

LANIA 2007

57

Strings (Cadenas)
Las cadenas no son tipos de datos primitivos. Tiene ciertas funcionalidades que hacen que su uso sea comparable a los tipos primitivos. Declaracin: String s = ; // Cadena vaca String s1 = Hola; String s2 = Adios; Concatenacin: String s3 = s1 + y + s2 //s3 = Hola y Adios

LANIA 2007

58

Estructuras de Control

if
estructura

ESTRUCTURAS DE SELECCION

Se ejecuta o no una sentencia o bloque de sentencias segn se cumpla o no una determinada condicin.

if (condicin) {
sentencias

}
p.e. if (velocidad > 120) { System.out.println(Cuidado, su velocidad es excesiva); }
LANIA 2007 59

Estructuras de Control
if - else
estructura

ESTRUCTURAS DE SELECCION

if (condicin) {
}
sentencias else if (condicin) { sentencias sentencias

} else { }
p.e. if (a > b) { System.out.println(El nmero mayor es el + a); } else { System.out.println(El nmero mayor es el + b); }
LANIA 2007 60

Estructuras de Control
(?:)
estructura

ESTRUCTURAS DE SELECCION

Se relaciona con la estructura if-else. Este es el unico operador de Java que requiere tres operandos. El primer operando es una expresin booleana, el segundo es el valor que tomar la expresin si el primer operando es verdadero y el tercer operando si es falso. valor = (condicin booleana ? valor si verdadero : valor si falso )

p.e. System.out.print(El nmero mayor es el de valor ); System.out.println ( a > b ? a : b );

LANIA 2007

61

Estructuras de Control
switch
estructura Es una estructura de seleccin multiple. Permite la seleccin de una sentencia o conjunto de sentencias entre mltiples casos. switch (expresion) { case valor1: sentencias; break; case valor2: case valor3: sentencias; break; ....... default : sentencias; break; }
LANIA 2007 62

ESTRUCTURAS DE SELECCION

Estructuras de Control
while
estructura

ESTRUCTURAS DE REPETICION

Permite que mientras se cumpla una determinada condicin se repita una sentencia o un bloque de sentencias.

while (condicin) {
sentencias

LANIA 2007

63

Estructuras de Control
ESTRUCTURAS DE REPETICION

do - while
estructura

Una sentencia o grupo de sentencias se repiten mientras se cumpla una determinada condicin. En esta estructura la condicion se evalua despues de ejecutar las sentencias.

do {
sentencias

} while (condicin);
LANIA 2007 64

Estructuras de Control
for
estructura

ESTRUCTURAS DE REPETICION

Permite repetir una sentencia o un bloque de sentencias un nmero de veces determinado.

for ( iniciacin ; condicin ; actualizacin ) {


sentencias

}
p.e. for (int i = 0 ; i < 5 ; i++) { System.out.print ( i ); System.out.println (Hola a todos. ); }
LANIA 2007 65

El mtodo main
El mtodo main es la primera operacin que se ejecuta en un programa Java. Declaracin: public static void main(String[] args) Se encarga de poner en marcha el programa Solo puede haber uno.

LANIA 2007

66

Ejercicio 4.1
Construya un programa que convierta de grados Fahrenheit a grados centgrados y viceversa F = (9/5)*C + 32 C = (5/9)*(F -32) Compruebe sus resultados para: F = 212 F = 500 C = 100 C = 500

LANIA 2007

67

Ejercicio 4.2
1. Escriba un programa que simule tirar dos dados
(int)(Math.random()*6) + 1;

2. Cuntas veces se debern tirar los dados para que la suma de los dados sea 10?

LANIA 2007

68

Ejercicio 4.3
Escriba un programa que convierta un nmero decimal a hexadecimal. El cambio de base se realiza mediante divisiones sucesivas por 16 las cuales el resto determinan los dgitos hexadecimales.

LANIA 2007

69

Ejercicio 4.4
Escriba un programa que muestre si un billete de lotera tuvo o no tuvo reintegro. El reintegro se obtiene cuando el ltimo digito del billete coincide con el del billete ganador. Declare el billete de lotera ganador como una constante

LANIA 2007

70

Programacin en Java
Modulo 5: Arreglos

Laboratorio Nacional de Informtica Avanzada A. C.


2007

El Problema: creando muchas variables del mismo tipo


Ejemplo:

1 public class Edades 2 { 3 public void calculaEdades() 4 { 5 int uno = 1; 6 int dos = 2; 7 int tres = 3; 8 int cuatro = 4; 9 int cinco = 5; 10 int seis = 6; 11 int siete = 7; 12 int ocho = 8; 13 int nueve = 9; 14 int diez = 10; 15 } 16}

LANIA 2007

72

El Problema: creando muchas variables del mismo tipo Desventajas:


Se vuelven inmanejables Es tedioso Duplica el trabajo Requiere identificadores nicos para cada variable
LANIA 2007 73

La solucin: arreglos
Los arreglos te permiten almacenar tantos valores como necesites Los arreglos pueden contener tipos primitivos o tipos referencia
char [] grupos;// arreglo de char int [] edades;// arreglo de int String [] nombres;// arreglo de String Alumno [] alumnos;// arreglo de Alumno

Cada parte del arreglo es un elemento


alumnos [6]; // sptimo elemento del arreglo alumnos [10]; // onceavo elemento del arreglo

LANIA 2007

74

Arreglos y el mtodo main


Ya has usado main para tomar un arreglo de argumentos desde la lnea de comandos
public static void main (String args[]); args [0];

LANIA 2007

75

Arreglos y tipos
Arreglos son referencias a objetos Arreglos de ints tienen el tipo arreglo de int" Arreglos de Alumno tienen el tipo arreglo de referencias a Alumno"

LANIA 2007

76

Creando arreglos de tipos primitivos


Arreglos de tipos primitivos o tipos referencia son objetos Tres pasos:
1. Declarar 2. Instanciar 3. Inicializar

LANIA 2007

77

Declarando arreglos primitivos


tipo [] identificador_arreglo; tipo identificador_arreglo [];
int [] edades; char grupos[];

LANIA 2007

78

Instanciando arreglos primitivos


Solo instanciando
identificador_arreglo = new tipo [longitud];
grupos = new char [20]; edades = new int [5];

Declarando e instanciando en la misma sentencia


tipo [] identificador_arreglo = new tipo [longitud];
char [] grupos = new char [20]; int [] edades = new int [5];

LANIA 2007

79

Inicializando arreglos primitivos


identificador_arreglo[indice] = valor;
int [] edades; edades = new int[ 5]; edades[ 0] = 12; edades[ 1] = 14; edades[ 2] = 15; edades[ 3] = 12; edades[ 4] = 10;

LANIA 2007

80

Declarando, inicializando e instanciando arreglos primitivos


tipo [] identificador_arreglo = {lista de valores separada por comas o expresin};
int [] edades = {12, 14, 15, 12, 10}; int [] edades; edades = {12, 14, 15, 12, 10}; // no es vlido, solo la // primera sintaxis

LANIA 2007

81

Creando arreglos de tipos referencia


El proceso es similar a trabajar con tipos primitivos Los mismos tres pasos:
1. Declarar 2. Instanciar 3. Inicializar

LANIA 2007

82

Declarando arreglos referencia


tipo [] identificador_arreglo; Tipo identificador_arreglo [];
Alumno [] alumnos; String nombres[];

LANIA 2007

83

Instanciando arreglos referencia


Solo instanciando
identificador_arreglo = new tipo [longitud]; nombres = new String [7]; alumnos = new Alumno [5];

Declarando e instanciando en la misma sentencia


tipo [] identificador_arreglo = new tipo [longitud]; String [] nombres = new String [7]; Alumno [] alumnos = new Alumno [5];

LANIA 2007

84

Inicializando arreglos referencia


identificador_arreglo[indice] = valor;
Alumno [] alumnos = new Alumno [3]; alumnos[ 0] = new Alumno (); alumnos[ 1] = new Alumno (" Luis", 12); alumnos[ 2] = new Alumno (" Juan", 15);

LANIA 2007

85

Declarando, inicializando e instanciando arreglos referencia


tipo [] identificador_arreglo = {lista de valores separados por comas o expresin};
Alumno [] alumnos = {new Alumno (), new Alumno (" Juan", 15), new Alumno (" Luis", 12)};

LANIA 2007

86

Accediendo una variable dentro de un arreglo


Sintaxis
identificador_arreglo[ndice]

Asignando una literal a un elemento del arreglo


grupos [0] = A; nombres [1] = Juan"; edades [1] = 19; calificaciones [2] = 9.99F;

Asignando un elemento del arreglo a una variable


int i = edades[ 3];
LANIA 2007 87

Como son almacenados los arreglos en memoria

Todos los arreglos son objetos Declarando un arreglo se declara variables referencia

LANIA 2007

88

Lmites del arreglo


Un arreglo es un objeto y un objeto conoce su estado Entonces, una arreglo conoce su longitud El nmero de elementos en un arreglo es almacenado como parte de objeto array El intentar de acceder un elemento del arreglo que no existe causa un error

LANIA 2007

89

Encontrando la longitud del arreglo


Puedes determinar la longitud de un arreglo en tiempo de ejecucin usando la variable miembro length
identificador_arreglo.length float salesAmounts[] = new float [12];

Caminando a travs del arreglo:


float salesAmounts[] = new float [12]; for (int i = 0; i < salesAmounts. length; i= i+ 1) { loop_statements }
LANIA 2007 90

Colocando valores a un arreglo con un ciclo


Colocar valores especficos para cada elemento puede ser tedioso Un ciclo puede hacerlo automticamente para valores incrementales

LANIA 2007

91

Colocando valores a un arreglo con un ciclo


public class Arreglos { public static void main(String[] args) { int [] arreglo = new int [5]; for(int columna = 0; columna < arreglo.length; columna++) arreglo[columna] = (int) (Math.random() * 100 + 1); } }

LANIA 2007

92

Arreglos bidimensionales
Como una hoja de clculo, con lneas y columnas Ejemplo Ventas mensuales figuran para varios aos Misma sintaxis que arreglos unidimensionales, excepto por un conjunto adicional de corchetes

LANIA 2007

93

Arreglos bidimensionales
tipo [][] identificador = new tipo [tamao_1][tamao_2];
int [] calificacionesMensuales = new int[12]; int [][] calificacionesMensualesGrupo = new int[numeroAlumnos][ 12];

LANIA 2007

94

Arreglos bidimensionales
public class Arreglos { public static void main(String[] args) { int [][] arregloIrregular = new int [5][]; int [] fila1 = new int [3]; int [] fila2 = new int [4]; int [] fila3 = new int [5]; int [] fila4 = new int [6]; int [] fila5 = new int [7]; arregloIrregular[0] = fila1; arregloIrregular[1] = fila2; arregloIrregular[2] = fila3; arregloIrregular[3] = fila4; arregloIrregular[4] = fila5;
LANIA 2007 95

Trabajando con arreglos multidimensionales


En el lenguaje de programacin de java, todos los arreglos multidimensionales son compuestos de arreglos de una dimensin.

LANIA 2007

96

Arreglos bidimensionales
for(int columna = 0; columna < arregloIrregular.length; columna++) for(int fila = 0; fila < arregloIrregular[columna].length; fila++) arregloIrregular[columna][fila] = (int) (Math.random() * 100 + 1); for(int columna = 0; columna < arregloIrregular.length; columna++) { for(int fila = 0; fila < arregloIrregular[columna].length; fila++) System.out.print(arregloIrregular[columna][fila] + "\t"); System.out.println(); } } }

LANIA 2007

97

Ejercicios 5.1
Escriba un programa que obtenga el nmero ms grande de un vector de enteros. Genere los nmeros de manera aleatoria Que saque el promedio

LANIA 2007

98

Ejercicio 5.2
Escriba un programa que convierta un nmero decimal a hexadecimal. El cambio de base se realiza mediante divisiones sucesivas por 16 las cuales el resto determinan los dgitos hexadecimales. Guarde los digitos en un arreglo de tipo char e imprmalos correctamente

LANIA 2007

99

Ejercicio 5.3
Escriba un programa que sume dos matrices de 4 x 4. Inicialice los elementos de la matriz de manera aleatoria Imprima los resultados de cada matriz

LANIA 2007

100

Ejercicio 5.5
Elabore un programa que represente el juego de ajedrez en una matriz. La figuras se representaran por caracteres Ejemplo: Pen: P Reina: Q Rey: K Torre: T Caballo: C Alfil: A Libre: _ Imprima el tablero
LANIA 2007 101

Programacin en Java
Modulo 6: Clases y Objetos

Laboratorio Nacional de Informtica Avanzada A. C.


2007

Declaracin de clases
Sintaxis:

Ejemplo:

LANIA 2007

103

Declaracin de Atributos
Sintaxis:

Ejemplo:

LANIA 2007

104

Declaracin de Constructores
Sintaxis:

Ejemplo:

LANIA 2007

105

Declaracin de Mtodos
Sintaxis:

Ejemplo:

LANIA 2007

106

Definicin de Clases
class nombreClase { private int variable; public nombreClase() { } Delimitadores public void nombreMetodo() { <Conjunto de instrucciones> } public static void main(String[] args) { nombreClase app = new nombreClase(); } } Mtodo Mtodo Constructor Atributo

Mtodo principal en modo aplicacin


LANIA 2007 107

Estructura de la definicin de un mtodo


Acceso PROTOTIPO Dominio de retorno Declaracin de parmetros Dominio del parmetro public void nombreMetodo(String parametro) { String variable; variable = parametro; System.out.println(variable); } Uso del parmetro

LANIA 2007

CUERPO DEL MTODO

108

Estructura de la definicin de un mtodo (2)


Acceso PROTOTIPO Dominio de retorno Declaracin de parmetros Dominio del parmetro

public int nombreMetodo2(int parametro) { int variable; variable = parametro + 2; return variable; } Uso del parmetro

Respuesta al llamado CUERPO DEL MTODO LANIA 2007 109

Creando variables de referencia a objetos


Crear una variable que es una referencia a un objeto Hay tres pasos:
1. Declarar una referencia a un objeto 2. Crear un objeto 3. Asignar valores

LANIA 2007

110

Creando objetos
Paso 1 Declaracin nombreClase identificador; Alumno miAlumno; El tipo de la variable es referencia_a_nombre_clase (referencia a Copiadora) Paso 2 Inicializacin identificador = new NombreClase(); miAlumno = new Alumno(); Declaracin e inicializacin juntas NombreClase identificador = new NombreClase(); Alumno miAlumno = new Alumno();

LANIA 2007

111

Creando objetos
Paso 3 Asignar valores
An no has asignado valores a las variables del objeto tales como el precio Variables son inicializadas con valores por defecto Para asignar valores:
Declara e inicializa las variables de objeto Especifica la referencia al objeto cuando asignes el valor

LANIA 2007

112

Creando objetos
Paso 3 Asignando valores
1 public class Alumno 2{ 3 String nombre; 4 float promedio; 5 boolean vigente; 6 public static void main (String args[]) 7 { 8 Alumno miAlumno; 9 miAlumno = new Alumno(); 10 miAlumno.nombre = Juan Prez; 11 miAlumno.promedio = 8.99F; 12 miAlumno.vigente = true; 13 14 Alumno otroAlumno; 15 otroAlumno = new Alumno(); 16 otroAlumno.nombre = Luis Garca; 17 otroAlumno.promedio = 7.99F; 18 otroAlumno.vigente = false; 19 } 20} LANIA 2007 113

Constructores
Mtodos ejecutados automticamente al crear un objeto de una clase (new). Se usan para llevar a cabo labores de inicializacin. Simplifican la sintaxis y apoyan el encapsulamiento de los datos. Los mtodos constructores de una clase tienen que tener el mismo nombre que la clase. class Cliente {
// Constructor de la clase Cliente Cliente (String str, long num) { ...; } }

LANIA 2007

114

Acceso a los miembros de una clase


Se utiliza la notacin punto:
<OBJETO>.<MIEMBRO>

Se utiliza tanto para atributos como para mtodos Ejemplo:


Circulo.radio Circulo.Area()
LANIA 2007

// Atributo // Mtodo
115

Ejemplos de constructores
class Cliente { String nombre; long dni; Cliente (String str, long num) { nombre = str; dni = num; } } class CuentaBancaria { long numero; Cliente titular; long saldo; CuentaBancaria (long num, Cliente clt, long s) { numero = num; titular = clt; saldo = s; } }
LANIA 2007 116

Ejemplos de invocacin
Automticamente al crear objetos.
Cliente cliente1 = new Cliente ("Luis Gomez", 25672046); CuentaBancaria cuenta1 = new CuentaBancaria (6831531, cliente1, 100000); CuentaBancaria cuenta2 = new CuentaBancaria (8350284, new Cliente ("Pilar Garcia", 15165442), 200000);

LANIA 2007

117

Constructor por defecto

Si no se definen constructores, Java proporciona uno por defecto.


Sin parmetros: Llamadas del tipo new X(); Sin funcionalidad: Variables inicializadas por defecto.

Pero si se define un constructor (o ms) el constructor por defecto no es definido.

LANIA 2007

118

Ventajas en el uso de mtodos


Te permite pedir a un objeto que haga algo Define exactamente lo que puede un objeto hacer Te permite asignar y obtener una serie de valores Hace los programas legibles y fciles de mantener Acelera el desarrollo y mantenimiento de software Se obtiene software re-usable
LANIA 2007 119

Mtodo trabajador y mtodo que lo llama


Hasta ahora has escrito programas como este:

1 public class Alumno 2{ 3 public static void main (String args[ ]) 4 { 5 String nombre = Juan Prez; 6 int edad = 12; 7 System.out.println(Nombre del alumno: "+nombre); 8 System.out.println(Edad del alumno: "+ edad); 9 } 10}

Esta aproximacin es simple, pero:


No es prctica para aplicaciones grandes No usa OO Tiene otras desventajas

LANIA 2007

120

Mtodo trabajador y mtodo que lo llama


Este ejemplo divide el programa anterior en dos:
public class Llama { public static void main (String args[]) { Trabajador trabajador = new Trabajador (); trabajador. trabajador(); } } public class Trabajador { public void trabajador() { int edad = 12; System. out. println( Edad del alumno + edad); } } 121

Mtodo que llama

Mtodo trabajador

LANIA 2007

Llamando un mtodo
Tpicamente se llama un mtodo desde un mtodo diferente El mtodo que llama se detiene y el mtodo trabajador se ejecuta El mtodo continua en el punto siguiente a donde llamo al mtodo trabajador El mtodo que llama y el mtodo trabajador pueden estar contenidos en la misma o en diferente clase Se pueden llamar mtodos en cualquier orden
LANIA 2007 122

Sintaxis y ejemplos
En la misma clase Mtodo_trabajador ([ valores_argumentos]); 1 public class Alumno 2 { 3 public void metodoLLama() 4 { 5 6 informacionAlumno(); 7 } 8 9 public void informacionAlumno () 10 { 11 System.out.println("La Edad del alumno es de 12 aos"); 12 } 13}
LANIA 2007 123

Sintaxis y ejemplos

Diferente clase: programa LlamaAlumno


clasetrabajador ref_clase = new clasetrabajador(); ref_clase. metodotrabajador([valores_argumentos]); 1 public class LlamaAlumno 2 { 3 public void metodoLlama() 4 { 5 6 Alumno miAlumno = new Alumno(); 7 8 miAlumno.informacionAlumno(); 9 } 10} 1 public class Alumno 2 { 3 4 public void informacionAlumno () 5 { 6 System.out.println("La Edad del alumno es de 12 aos"); 7 } 8}

LANIA 2007

124

Pasando argumentos
Se incluyen en los parntesis de los mtodos que llaman Pasan literales o variables Se presentan en el orden establecido en la declaracin del mtodo
Nota: Todos los parmetros a mtodos se pasan por valor
LANIA 2007 125

Sintaxis y ejemplos

Diferente clase: programa LlamaAlumno


clasetrabajador ref_clase = new clasetrabajador(); ref_clase. metodotrabajador([valores_argumentos]);
1 public class LlamaAlumno 2 { 3 public void metodoLlama() 4 { 5 6 Alumno miAlumno = new Alumno(); 7 8 miAlumno.informacionAlumno(12); 9 } 10}

LANIA 2007

126

Sintaxis y ejemplos
Diferente clase: programa Alumno
1 public class Alumno 2 { 3 4 public void informacionAlumno (int edad) 5 { 6 System.out.println("La Edad del alumno es de " + edad + " aos"); 7 } 8}

LANIA 2007

127

Recibiendo valores de retorno


El valor de retorno es regresado al mismo lugar del cdigo donde fue llamado:
libreria.suma( 10, 2);

La expresin en la cual se llama al mtodo es igual al valor de retorno Puedes combinar la llamada y el uso del valor de retorno en una lnea, cuando se use el valor de retorno
int suma = libreria.suma( 10, 2); if (libreria.suma( 10, 2) > MAXIMO);
LANIA 2007 128

La referencia this
public class Imprimir { private String s=""; public Imprimir(String s) { this.s = s; } public void ejecuta() { System.out.println(s); } public void concatena(Imprimir Otro){ this.ejecuta(); Otro.ejecuta(); } }
LANIA 2007 129

public static void main(String[] args) { Imprimir a = new Imprimir("Hola"); Imprimir b = new Imprimir("Mundo"); a.ejecuta(); a.concatena(b); }

Ocultamiento de datos
Supongamos el siguiente cdigo:
Da invlido Combinacin Invlida No hay verificacin

LANIA 2007

130

Ocultamiento de datos
Solucin

LANIA 2007

131

Encapsulamiento
Los atributos solo pueden ser accedidos dentro del objeto Existen mtodos pblicos para acceder a los atributos

Alumno
-clave -nombre -CURP -direccion +setNombre( ) +getNombre( ) +setCURP( ) +getCURP( )
LANIA 2007 132

Ventajas del Encapsulamiento


Esconde los detalles de la implementacin de la clase Forza al usuario a utilizar una interfaz para acceder a los datos Favorece al mantenimiento de cdigo

LANIA 2007

133

Sobrecarga de mtodos
public class SobreCarga { private int x; private float y; /** Sobrecarga de constructores */ public SobreCarga(int x) { this.x = x; } public SobreCarga(float y) { this.y = y; } /** Sobrecarga de mtodos */ public boolean set(int x){ this.x = x; } public boolean set(float y){ this.y=y; } }
LANIA 2007

Mismo nombre Del constructor

Mismo nombre Del mtodo

134

Sobre herencia
Una escuela tiene un sistema de control escolar que modela las siguientes clases:

Varios miembros estn presentes en todas las clases


LANIA 2007 135

Sobre herencia
Para reducir la duplicacin se usa herencia:

Todos los miembros Persona estn disponibles para ser Catedratico y Alumno.
LANIA 2007 136

Definicin de herencia
Permite que elementos comunes puedan ser definidos en una clase y ser compartido por otras Clases de las que se hereda: superclases o clases padre Clases que heredan: subclases o clases hijo

LANIA 2007

137

Sintaxis y ejemplo
Sintaxis
Class nombre_subclase extends nombre_superclase { sentencias_subclase }

LANIA 2007

138

Sintaxis y ejemplo
Ejemplo public class Persona { private String nombre; private int edad; private String curp; public Persona(){ curp = ""; } public Persona(String nombre,in edad) { setNombre(nombre); setEdad(edad); }
LANIA 2007 139

Sintaxis y ejemplo
public void setNombre(String nombre) this.nombre = nombre; } public String getNombre() return nombre; } public void setEdad(int edad) this.edad = edad; } { {

LANIA 2007

140

Sintaxis y ejemplo
public int getEdad() return edad; } {

public void setCurp(String curp) this.curp = curp; } public String getCurp() return curp; } }
LANIA 2007

141

Clase Hijo
public class Catedratico extends Persona { private float salario; private String cedulaProfesional; public Catedratico(){ salario = 2500F; cedulaProfesional = ""; } public Catedratico(String nombre, int edad, char sexo){ super(nombre, edad, sexo); }

LANIA 2007

142

Clase Hijo
public void setSalario(float salario) { this.salario = salario; } public float getSalario() { return salario; } public void setCedulaProfesional(String asignatura) { this.asignatura = asignatura; } public String getCedulaProfesional() { return cedulaProfesional; } } LANIA 2007
143

Probando herencia
Una clase solo puede heredar de una superclase a la vez Prueba la herencia con la frase es un El ejemplo Persona, Catedratico, y Alumno es correcto:
Un Catedratico es una Persona Un Alumno es una Persona
LANIA 2007 144

Paquetes
Conjunto de clases definidas por un directorio. Objetivo: Evitar conflictos entre smbolos. Cada clase pertenece siempre a un package. Si no se incluye ningn package para una clase, Java la incluye en el package DefaultPackage.

LANIA 2007

145

Declaracin de packages
graphics\Circle.java
package graphics; public class Circle { public void paint () { ... } ... } }
LANIA 2007 146

graphics\Rectangle.java
package graphics; public class Rectangle { public void paint () { ... } ...

Utilizar clases de otro package


Importar la clase que se necesita.
import graphics.Circle; ... Circle c = new Circle (); c.paint (); ...

Importar todas las clases del package.


import graphics.*; ... Circle c = new Circle (); Rectangle r = new Rectangle (); c.paint (); r.paint (); ...
LANIA 2007 147

Packages y directorios
Nombre del package = Path del directorio. CLASSPATH: Variable de entorno con directorios donde buscar packages. Packages importados automticamente:
java.lang, DefaultPackage, directorio actual directorio en CLASSPATH

Package tool.browser.graphics Package tool.browser.interaction Package tool.editor

LANIA 2007

148

Ejercicio 6.1
Implementar el siguiente diagrama de clases
cd Empresa Empleado + + + + Nombre: String Salario: float Empleado(String) Empleado(String, float) imprimDetalles() : void setSalario(float) : boolean

Intendente Jefe Departamento: String

Secretaria

Director Compania: String Subordinados[]: Empleado

LANIA 2007

149

Ejercicio 6.2
Implemente una clase azar que devuelva un nmero aleatorio entre el 1 y el 99999. Implemente dos clases: dado y loteria que hereden de azar. En la clase Loteria agregue un mtodo que se llame digitoreintegro y devuelva el ltimo digito

LANIA 2007

150

Ejercicio 6.3
Elabore una clase para el manejo de nmeros hexadecimales. Imprima su valor Sume hexadecimales
cd Otros Hexadecimal + + + + Decimal: int Digitos[]: char Hexadecimal() Hexadecimal(int) imprime() : void suma(Hexadecimal) : Hexadecimal

LANIA 2007

151

Ejercicio 6.4
Elabore un programa para el manejo del ajedrez

LANIA 2007

152

Programacin en Java
Modulo 7:Funcionalidades avanzadas Laboratorio Nacional de Informtica Avanzada A. C. 2007

La palabra reservada super


Se usa en una clase para referirse a la superclase. Se refiere a los miembros de la clase: Atributos Mtodos A menudo al sobre escribir un mtodo, tu meta principal no es reemplazar el comportamiento actual sino extenderlo en cierto sentido.

LANIA 2007

154

Invocacin de un mtodo de la superclase

LANIA 2007

155

Invocando los constructores del padre


Para invocar al constructor padre se debe colocar una llamada a super en la primera lnea del constructor Si existen constructores sobrecargados se puede llamar al super con los argumentos adecuados. Si no existe una llamada a super en el constructor, el compilador aade una llamada implicita super() que llama al constructor por defecto del padre Si no existe un constructor por defecto, el compilador enviar un warning

LANIA 2007

156

Ejemplo de super en constructores

LANIA 2007

157

La clase Object
La clase Object es la raiz de todas las clase en Java Una clase cuya declaracin no tiene la clasula extends, implicitamente usa extends Object public class Punto { } Es equivalente a: public class Punto extends Object { }
LANIA 2007 158

El operador == comparado con el mtodo equals


En tipo de datos elementales == compara los valores de datos En tipo de datos no elementales (clases) == compara referencias El mtodo equals determina if los objetos son iguales no necesariamente idnticos

LANIA 2007

159

Ejemplo

LANIA 2007

160

Comparacin de referencias
public static void main(String[] args) { // TODO code application logic here Empleado a = new Empleado(); Empleado b = new Empleado(); Empleado c = a; if(a == b) { System.out.println("a == b"); } c.setNombre("Otro Nombre"); System.out.println(a.getNombre()); }
LANIA 2007 161

Comparacin por contenido


public static void main(String[] args) { // TODO code application logic here String a = new String("Una cadena"); String b = new String("Una cadena"); String c = a; if(a == b) { System.out.println("a == b"); } if(a.equals(b)) { System.out.println("a es lexicogrficamente igual a b"); } if(c == a) { System.out.println("c == a"); } LANIA 2007 }

162

El mtodo toString
Convierte un objeto a cadena Se usa durante la concatenacin de cadenas Sobrecargando este mtodo se puede lograr imprimir la informacin de un objeto en un formato definido por el usuario
LANIA 2007 163

Ejemplo toString
public class Punto { protected int x; protected int y; /** Creates a new instance of Punto */ public Punto() { x = 0; y = 0; } public Punto(int x, int y) { this.x = x; this.y = y; } public String toString() { String temp = "("+x+","+y+")"; return temp; } }

LANIA 2007

164

Envoltura de mtodos primitivos

Integer x = new Integer(0); System.out.println(x.toHexString(5323));

LANIA 2007

165

La palabra reservada static


Es usada como un modificador en variables y mtodos Declara que el atributo o mtodo es asociado con la clase como un todo ms que como una instancia en particular.

LANIA 2007

166

Ejemplo
public static void main(String[] args) { // TODO code application logic here Computadora a[] = new Computadora[10]; for(int i = 0; i < 10; i++) { a[i] = new Computadora(); System.out.println(a[i]); } } public class Computadora { private static int NumerodeSerie = 0; /** Creates a new instance of Computadora */ public Computadora() { NumerodeSerie++; } public String toString() { return "El nmero de serie es:" + NumerodeSerie; } } LANIA 2007 167

La palabra reservada final


No se puede heredar de una clase final No se puede sobrecargar de un mtodo final Una variable final es una constante Una variable final se puede instanciar solo una vez. La instanciacion puede estar en un constructor
LANIA 2007 168

Clases abstractas
A medida que subimos en la jerarqua de herencia nos encontramos con clases que representan conceptos cada vez ms abstractos Existirn mtodos de los cuales no queremos implementarlos pues dependen mucho de las especializacin de la clase Este tipo de clases se denominan abstractas y alguno o todos sus mtodos no tienen implementacin

LANIA 2007

169

Ejemplo clase abstracta


abstract class Figura { protected int x; protected int y; /** Creates a new instance of Figura */ public Figura() { } public abstract void dibujar(); }
LANIA 2007 170

Interfaces
Una public interface es un contrato entre el cdigo cliente y la clase que implementa la interfaz. Una interface en Java es una declaracin forma del tal contrato en el cual todos los mtodos no tienen implementacin Una clase puede implementar muchas interfaces

LANIA 2007

171

Sintaxis

LANIA 2007

172

Ejercicio 7.1
Modifique la clase azar para que reciba un parmetro que indique el lmite superior de un rango de los valores aleatorioss Utilice super en los constructores de las clases dado y loteria Le parmetro super de dado es 6 El parmetro super de loteria es 9999

LANIA 2007

173

Ejercicio 7.2
Cree un mtodo toString para los programas Hexadecimal y Ajedrez

LANIA 2007

174

Ejercicio 7.3
Utilice el wrapper Integer y reescriba la clase Hexadecimal El constructor recibir tanto cadenas como enteros

LANIA 2007

175

Programacin en Java
Modulo 8: Excepciones
Laboratorio Nacional de Informtica Avanzada A. C. 2007

Excepciones
La clase Exception define como tratar condiciones de error que se encuentran al programar Las excepciones pueden ocurrir cuando Se trata de abrir un archivo que no existe Se pierde la condicin de red Las operaciones se salen de rango No existe la clase que se est llamando

LANIA 2007

177

Ejemplo

LANIA 2007

178

Manejo de excepciones
Para capturar una excepcin en particular hay que colocar el cdigo que puede lanzar la excepcin en un bloque try y entonces de crea una lista de bloques catch para cada posible excepcin que se desee capturar

LANIA 2007

179

La sentencia finally
La sentencia finally define un bloque de cdigo que se ejecuta siempre, independientemente de si una excepcin fue capturada o no try { prendeMotor(); conduce(); } catch (motorDescompuestoException e) { anexaEstadoMotoraBitacora(); } finally { paraMotor(); }
LANIA 2007 180

El mecanismo de pila de llamadas

LANIA 2007

181

Algunas excepciones bsicas


Exception

AWTException IOException RuntimeException Excepciones definidas Excepciones definidas por el programador por el programador

EOFException FileNotFoundException ArithmeticException EmptyStackException IndexOutOfBoundsException


LANIA 2007

NullPointerException ClassCastException
182

Algunas excepciones comunes


ArithmeticException: int i = 12 / 0; NullPointerException: Date d = null; System.out.println(d.toString()); ArrayIndexOutOfBoundsException: int a[] = new int[5] a[5] = 10;

LANIA 2007

183

Ejemplo desarrollado (I)


Lanzamiento de excepciones:
class CuentaBancaria { ... boolean bloqueada; ... void retirar (long cantidad) throws SaldoInsuficiente, CuentaBloqueada { if (bloqueada) throw new CuentaBloqueada (numero); else if (cantidad > saldo) throw new SaldoInsuficiente (numero, saldo); else saldo -= cantidad; } }

LANIA 2007

184

Ejemplo desarrollado (II)


Clases para excepciones:
class SaldoInsuficiente extends Exception { long numero, saldo; SaldoInsuficiente (long num, long s) { numero = num; saldo = s; } String descripcion () { return "Saldo insuficiente en cuenta " + numero + "\nDisponible: " + saldo; } }

class CuentaBloqueada extends Exception { long numero; CuentaBloqueada (long num) { numero = num; } String descripcion () { return "La cuenta " + numero + " esta bloqueada"; } }
LANIA 2007 185

Ejemplo desarrollado (III)


Captura y procesamiento de excepciones:
static public void main (String args[]) { try { new CuentaBancaria () .retirar (100000); } catch (SaldoInsuficiente excep) { System.out.println (excep.descripcion ()); } catch (CuentaBloqueada excep) { System.out.println (excep.descripcion ()); } }

Se ejecuta el primer catch de tipo compatible

LANIA 2007

186

Ejemplo desarrollado (y IV)


Y si no se capturan las excepciones?
static public void main (String args[]) throws CuentaBloqueada, SaldoInsuficiente { CuentaBancaria cuenta = new CuentaBancaria (); cuenta.saldo = 1000; cuenta.retirar (2000); }

LANIA 2007

187

Programacin en Java
Modulo 9: Aplicaciones basadas en texto Laboratorio Nacional de Informtica Avanzada A. C. 2007

Argumentos de la lnea de comando


Para ejecutar aplicaciones se pueden pasar parmetros a travs de la lnea de comando Los argumentos son colocados en la lnea de comando despus del nombre de la clase java MiApp arg1 arg2 otro argumento Cada argumento de la lnea de comando es colocado en el arreglo args en el mtodo main. public static void main(String[] args) {
LANIA 2007 189

Ejemplo

LANIA 2007

190

Propiedades del Sistema


Las propiedades del sistema es una funcionalidad que reemplaza el concepto de variables de ambiente (especficos de la plataforma) El mtodo System.getProperties retorna un objeto tipo Properties El mtodo getProperty regresa un cada que representa el valor de la propiedad
LANIA 2007 191

Ejemplo

LANIA 2007

192

Consola de Entrada y Salida


System.out
Permite escribir a la salida estndar

System.in
Permite leer de la entrada estndar

System.err
Permite escribir a la salida estndar de error
LANIA 2007 193

Archivos
Los archivos se puede manipular a travs del paquete java.io La clase que maneja archivos es File
Permite crear archivos Manipular archivos Leer y escribir archivos

LANIA 2007

194

Creando objetos de tipo File


File miArchivo; miArchivo = new File(Prueba.txt); miArchivo = new File(c:\temp, prueba.txt); Los directorios son tratados como archivos File miDirectorio = new File(c:\temp); miArchivo = new File(miDirectorio, Prueba.txt);
LANIA 2007 195

Utilidades

LANIA 2007

196

La clase Math
Contiene un grupo de funciones matemticas Es una clase esttica Ejemplos: Trigonometra: sin, cos, tan Aritmetica: log, exp, sqrt, pow Aletorios: random Constantes: PI

LANIA 2007

197

La clase String
Se utiliza para el manejo de cadenas Se puede efecutar operaciones:
Concatenar Busqueda Comparacin Tamao

LANIA 2007

198

El API de Colecciones
Una coleccin es un objeto simple que representa a un grupo de objetos conocido como elementos Tiene un conjunto de Interfaces que agrupan a objetos: Collection: Un grupo de objetos si un orden. Pueden ser duplicados Set: Una coleccin de objetos no duplicados y ordenados List: Una coleccin de objetos ordenados; se permite la duplicacin

LANIA 2007

199

La implementacin HashSet
Una clase implementada de la interfaz set es HashSet

LANIA 2007

200

La implemantacin ArrayList
La implementacin de una lista es la clase ArrayList

LANIA 2007

201

Iteradores
El proceso de Iteracin es la recuperacin de todos los elementos de una coleccin

LANIA 2007

202

Mapas
Un mapa es una coleccin que asocia una clave con un valor.

LANIA 2007

203

La herramienta jar
Se utiliza para comprimir y extraer archivos class Uso: Jar [opciones] [Archivo.jar] [archivos] Ejemplo: Comprime Jar cvf Projecto.jar Projecto Descomprime Jar xvf Projecto.jar

LANIA 2007

204

Вам также может понравиться